Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
F
fit-finance
Overview
Overview
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
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
fitness-server
fit-finance
Commits
0ddceb8c
Commit
0ddceb8c
authored
May 07, 2024
by
程裕兵
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat:change module
parent
6a25cea4
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
88 additions
and
29 deletions
+88
-29
api/pom.xml
+3
-4
app/pom.xml
+4
-4
pom.xml
+5
-5
repository/pom.xml
+3
-3
repository/src/main/java/com/jiejing/fitness/finance/repository/mapper/StudioCashierRecordMapper.java
+7
-2
repository/src/main/java/com/jiejing/fitness/finance/repository/mapper/StudioCashierRecordMapper.xml
+29
-1
repository/src/main/java/com/jiejing/fitness/finance/repository/service/StudioCashierRecordRpService.java
+14
-0
service/pom.xml
+2
-2
service/src/main/java/com/jiejing/fitness/finance/service/pay/convert/PayConvert.java
+8
-3
service/src/main/java/com/jiejing/fitness/finance/service/pay/impl/PayServiceImpl.java
+13
-5
No files found.
api/pom.xml
View file @
0ddceb8c
...
...
@@ -2,12 +2,12 @@
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"
>
<modelVersion>
4.0.0
</modelVersion>
<parent>
<groupId>
com.jiejing.fitness
.finance
</groupId>
<groupId>
com.jiejing.fitness
</groupId>
<artifactId>
fit-finance
</artifactId>
<version>
0.0.1-SNAPSHOT
</version>
</parent>
<artifactId>
api
</artifactId>
<name>
api
</name>
<artifactId>
finance-
api
</artifactId>
<name>
finance-
api
</name>
<url>
http://maven.apache.org
</url>
...
...
@@ -15,7 +15,6 @@
<dependency>
<groupId>
com.jiejing.paycenter
</groupId>
<artifactId>
paycenter-api
</artifactId>
<version>
0.0.1-SNAPSHOT
</version>
</dependency>
<dependency>
...
...
app/pom.xml
View file @
0ddceb8c
...
...
@@ -2,7 +2,7 @@
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"
>
<modelVersion>
4.0.0
</modelVersion>
<parent>
<groupId>
com.jiejing.fitness
.finance
</groupId>
<groupId>
com.jiejing.fitness
</groupId>
<artifactId>
fit-finance
</artifactId>
<version>
0.0.1-SNAPSHOT
</version>
</parent>
...
...
@@ -12,11 +12,11 @@
<dependencies>
<dependency>
<groupId>
com.jiejing.fitness
.finance
</groupId>
<artifactId>
api
</artifactId>
<groupId>
com.jiejing.fitness
</groupId>
<artifactId>
finance-
api
</artifactId>
</dependency>
<dependency>
<groupId>
com.jiejing.fitness
.finance
</groupId>
<groupId>
com.jiejing.fitness
</groupId>
<artifactId>
service
</artifactId>
</dependency>
<dependency>
...
...
pom.xml
View file @
0ddceb8c
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"
>
<modelVersion>
4.0.0
</modelVersion>
<groupId>
com.jiejing.fitness
.finance
</groupId>
<groupId>
com.jiejing.fitness
</groupId>
<artifactId>
fit-finance
</artifactId>
<version>
0.0.1-SNAPSHOT
</version>
<packaging>
pom
</packaging>
...
...
@@ -34,17 +34,17 @@
<dependencies>
<!-- ======================= fit-finance start ======================= -->
<dependency>
<groupId>
com.jiejing.fitness
.finance
</groupId>
<artifactId>
api
</artifactId>
<groupId>
com.jiejing.fitness
</groupId>
<artifactId>
finance-
api
</artifactId>
<version>
${project.version}
</version>
</dependency>
<dependency>
<groupId>
com.jiejing.fitness
.finance
</groupId>
<groupId>
com.jiejing.fitness
</groupId>
<artifactId>
repository
</artifactId>
<version>
${project.version}
</version>
</dependency>
<dependency>
<groupId>
com.jiejing.fitness
.finance
</groupId>
<groupId>
com.jiejing.fitness
</groupId>
<artifactId>
service
</artifactId>
<version>
${project.version}
</version>
</dependency>
...
...
repository/pom.xml
View file @
0ddceb8c
...
...
@@ -2,7 +2,7 @@
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"
>
<modelVersion>
4.0.0
</modelVersion>
<parent>
<groupId>
com.jiejing.fitness
.finance
</groupId>
<groupId>
com.jiejing.fitness
</groupId>
<artifactId>
fit-finance
</artifactId>
<version>
0.0.1-SNAPSHOT
</version>
</parent>
...
...
@@ -12,8 +12,8 @@
<dependencies>
<dependency>
<groupId>
com.jiejing.fitness
.finance
</groupId>
<artifactId>
api
</artifactId>
<groupId>
com.jiejing.fitness
</groupId>
<artifactId>
finance-
api
</artifactId>
</dependency>
<dependency>
<groupId>
org.projectlombok
</groupId>
...
...
repository/src/main/java/com/jiejing/fitness/finance/repository/mapper/StudioCashierRecordMapper.java
View file @
0ddceb8c
...
...
@@ -38,9 +38,14 @@ public interface StudioCashierRecordMapper extends XBaseMapper<StudioCashierReco
BigDecimal
sumMerchantPaySuccess
(
@Param
(
"merchantId"
)
Long
merchantId
,
@Param
(
"startTime"
)
Date
startTime
,
@Param
(
"endTime"
)
Date
endTime
);
BigDecimal
sumMerchantRefundSuccess
(
@Param
(
"merchantId"
)
Long
merchantId
,
@Param
(
"startTime"
)
Date
startTime
,
@Param
(
"endTime"
)
Date
endTime
);
List
<
StudioCashierRecord
>
sumMerchantPaySuccessGroupByStudioId
(
@Param
(
"merchantId"
)
Long
merchantId
,
@Param
(
"startTime"
)
Date
startTime
,
@Param
(
"endTime"
)
Date
endTime
);
@Param
(
"startTime"
)
Date
startTime
,
@Param
(
"endTime"
)
Date
endTime
);
List
<
StudioCashierRecord
>
sumMerchantRefundSuccessGroupByStudioId
(
@Param
(
"merchantId"
)
Long
merchantId
,
@Param
(
"startTime"
)
Date
startTime
,
@Param
(
"endTime"
)
Date
endTime
);
StudioCashierStatisticVO
statistic
(
@Param
(
"query"
)
PageBrandCashierRecordQuery
query
);
...
...
repository/src/main/java/com/jiejing/fitness/finance/repository/mapper/StudioCashierRecordMapper.xml
View file @
0ddceb8c
...
...
@@ -24,6 +24,7 @@
select sum(actual_amount)
from studio_cashier_record
where related_trans_no = #{payTransNo}
and trans_type = 'REFUND'
and trans_state in ('REFUNDING', 'REFUND_SUCCESS')
</select>
...
...
@@ -32,6 +33,17 @@
from studio_cashier_record
where merchant_id = #{merchantId}
and trans_state = 'PAY_SUCCESS'
and trans_type = 'PAY'
and success_time >= #{startTime}
and success_time
<
#{endTime}
</select>
<select
id=
"sumMerchantRefundSuccess"
resultType=
"java.math.BigDecimal"
>
select sum(actual_amount)
from studio_cashier_record
where merchant_id = #{merchantId}
and trans_type = 'REFUND'
and trans_state = 'REFUND_SUCCESS'
and success_time >= #{startTime}
and success_time
<
#{endTime}
</select>
...
...
@@ -41,12 +53,25 @@
select studio_id, sum(actual_amount) as actual_amount
from studio_cashier_record
where merchant_id = #{merchantId}
and trans_type = 'PAY'
and trans_state = 'PAY_SUCCESS'
and success_time >= #{startTime}
and success_time
<
#{endTime}
group by studio_id
</select>
<select
id=
"sumMerchantRefundSuccessGroupByStudioId"
resultType=
"com.jiejing.fitness.finance.repository.entity.StudioCashierRecord"
>
select studio_id, sum(actual_amount) as actual_amount
from studio_cashier_record
where merchant_id = #{merchantId}
and trans_type = 'REFUND'
and trans_state = 'REFUND_SUCCESS'
and success_time >= #{startTime}
and success_time
<
#{endTime}
group by studio_id
</select>
<select
id=
"statistic"
resultType=
"com.jiejing.fitness.finance.api.cashier.vo.StudioCashierStatisticVO"
>
select sum(trans_amount) as total_trans_amount, sum(actual_amount) as total_actual_amount,
sum(fee) as total_fee, count(id) as total
...
...
@@ -61,6 +86,9 @@
<if
test=
"query.orderNo != null and query.orderNo != ''"
>
and order_no = #{query.orderNo}
</if>
<if
test=
"query.businessNo != null and query.businessNo != ''"
>
and business_no = #{query.businessNo}
</if>
<if
test=
"query.transNo != null and query.transNo != ''"
>
and trans_no = #{query.transNo}
</if>
...
...
@@ -71,7 +99,7 @@
and trans_state = #{query.transState}
</if>
<if
test=
"query.transState == null or query.transState == ''"
>
and trans_state in ('PAY_SUCCESS', 'PAY_IN')
and trans_state in ('PAY_SUCCESS', 'PAY_IN'
, 'REFUNDING', 'REFUND_SUCCESS', 'REFUND_FAIL'
)
</if>
<if
test=
"query.orderType != null and query.orderType != ''"
>
and order_type = #{query.orderType}
...
...
repository/src/main/java/com/jiejing/fitness/finance/repository/service/StudioCashierRecordRpService.java
View file @
0ddceb8c
...
...
@@ -136,6 +136,11 @@ public class StudioCashierRecordRpService extends
.
orElse
(
BigDecimal
.
ZERO
);
}
public
BigDecimal
sumMerchantRefundSuccess
(
Long
merchantId
,
Date
startTime
,
Date
endTime
)
{
return
Optional
.
ofNullable
(
this
.
baseMapper
.
sumMerchantRefundSuccess
(
merchantId
,
startTime
,
endTime
))
.
orElse
(
BigDecimal
.
ZERO
);
}
public
Map
<
Long
,
BigDecimal
>
sumMerchantPaySuccessGroupByStudioId
(
Long
merchantId
,
Date
startTime
,
Date
endTime
)
{
return
Optional
.
ofNullable
(
...
...
@@ -145,6 +150,15 @@ public class StudioCashierRecordRpService extends
.
collect
(
Collectors
.
toMap
(
StudioCashierRecord:
:
getStudioId
,
StudioCashierRecord:
:
getActualAmount
));
}
public
Map
<
Long
,
BigDecimal
>
sumMerchantRefundSuccessGroupByStudioId
(
Long
merchantId
,
Date
startTime
,
Date
endTime
)
{
return
Optional
.
ofNullable
(
this
.
baseMapper
.
sumMerchantRefundSuccessGroupByStudioId
(
merchantId
,
startTime
,
endTime
))
.
orElse
(
new
ArrayList
<>(
1
))
.
stream
()
.
collect
(
Collectors
.
toMap
(
StudioCashierRecord:
:
getStudioId
,
StudioCashierRecord:
:
getActualAmount
));
}
public
Page
<
StudioCashierRecord
>
pageMerchantPaySuccess
(
Long
merchantId
,
Date
startTime
,
Date
endTime
,
Integer
current
,
Integer
size
)
{
QueryWrapper
<
StudioCashierRecord
>
wrapper
=
new
QueryWrapper
<>();
...
...
service/pom.xml
View file @
0ddceb8c
...
...
@@ -2,7 +2,7 @@
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"
>
<modelVersion>
4.0.0
</modelVersion>
<parent>
<groupId>
com.jiejing.fitness
.finance
</groupId>
<groupId>
com.jiejing.fitness
</groupId>
<artifactId>
fit-finance
</artifactId>
<version>
0.0.1-SNAPSHOT
</version>
</parent>
...
...
@@ -12,7 +12,7 @@
<dependencies>
<dependency>
<groupId>
com.jiejing.fitness
.finance
</groupId>
<groupId>
com.jiejing.fitness
</groupId>
<artifactId>
repository
</artifactId>
</dependency>
<dependency>
...
...
service/src/main/java/com/jiejing/fitness/finance/service/pay/convert/PayConvert.java
View file @
0ddceb8c
...
...
@@ -246,8 +246,12 @@ public class PayConvert {
}
public
static
List
<
StudioSettleRecord
>
convertStudioSettle
(
MerchantSettleRecord
record
,
Map
<
Long
,
BigDecimal
>
studioTransAmountMap
,
Map
<
Long
,
StudioVO
>
studioMap
)
{
return
studioTransAmountMap
.
keySet
().
stream
().
map
(
studioId
->
StudioSettleRecord
.
builder
()
Map
<
Long
,
BigDecimal
>
studioPayAmountMap
,
Map
<
Long
,
BigDecimal
>
studioRefundAmountMap
,
Map
<
Long
,
StudioVO
>
studioMap
)
{
// A场馆支付了100,B场馆支付了0,B场馆发起退款-》成功。结算记录-》
// A场馆支付了0,B场馆支付了0,B场馆发起退款-》失败
// A场馆支付了100,B场馆支付了0,B场馆发起退款-》成功,A场馆发起退款100-》失败
return
studioPayAmountMap
.
keySet
().
stream
().
map
(
studioId
->
StudioSettleRecord
.
builder
()
.
id
(
IdWorker
.
getId
())
.
parentId
(
record
.
getId
())
.
studioId
(
studioId
)
...
...
@@ -255,7 +259,8 @@ public class PayConvert {
.
merchantId
(
record
.
getMerchantId
())
.
merchantNo
(
record
.
getMerchantNo
())
.
transState
(
record
.
getTransState
())
.
transAmount
(
studioTransAmountMap
.
getOrDefault
(
studioId
,
BigDecimal
.
ZERO
))
.
transAmount
(
MoneyUtil
.
subtract
(
studioPayAmountMap
.
getOrDefault
(
studioId
,
BigDecimal
.
ZERO
),
studioRefundAmountMap
.
getOrDefault
(
studioId
,
BigDecimal
.
ZERO
)))
.
settleDate
(
record
.
getSettleDate
())
.
cardNo
(
record
.
getCardNo
())
.
bankName
(
record
.
getBankName
())
...
...
service/src/main/java/com/jiejing/fitness/finance/service/pay/impl/PayServiceImpl.java
View file @
0ddceb8c
...
...
@@ -304,9 +304,14 @@ public class PayServiceImpl implements PayService {
// 对账
SettleVO
vo
=
payRpcService
.
syncSettle
(
apply
.
getMerchantId
(),
endDate
);
BigDecimal
totalAmount
=
studioCashierRecordRpService
.
sumMerchantPaySuccess
(
apply
.
getMerchantId
(),
BigDecimal
totalPayAmount
=
studioCashierRecordRpService
.
sumMerchantPaySuccess
(
apply
.
getMerchantId
(),
startDate
,
endDate
);
log
.
info
(
"settle vo is {}, local total amount is {}"
,
JSON
.
toJSONString
(
vo
),
totalAmount
);
BigDecimal
totalRefundAmount
=
studioCashierRecordRpService
.
sumMerchantRefundSuccess
(
apply
.
getMerchantId
(),
startDate
,
endDate
);
// 没有钱包,退款金额只能从入账中扣,因此收款的钱必须大于等于退款的钱
BigDecimal
totalAmount
=
MoneyUtil
.
subtract
(
totalPayAmount
,
totalRefundAmount
);
log
.
info
(
"settle vo is {}, local total amount is {}, total pay amount is {}, total refund amount is {}"
,
JSON
.
toJSONString
(
vo
),
totalAmount
,
totalPayAmount
,
totalRefundAmount
);
if
(
BigDecimal
.
ZERO
.
compareTo
(
vo
.
getTransAmount
())
==
0
&&
BigDecimal
.
ZERO
.
compareTo
(
totalAmount
)
==
0
)
{
// 没有交易
...
...
@@ -315,15 +320,18 @@ public class PayServiceImpl implements PayService {
if
(
vo
.
getTransAmount
().
compareTo
(
totalAmount
)
==
0
)
{
// 对账成功
Map
<
Long
,
BigDecimal
>
studioTransAmountMap
=
studioCashierRecordRpService
.
sumMerchantPaySuccessGroupByStudioId
(
Map
<
Long
,
BigDecimal
>
studioPayAmountMap
=
studioCashierRecordRpService
.
sumMerchantPaySuccessGroupByStudioId
(
apply
.
getMerchantId
(),
startDate
,
endDate
);
Map
<
Long
,
BigDecimal
>
studioRefundAmountMap
=
studioCashierRecordRpService
.
sumMerchantRefundSuccessGroupByStudioId
(
apply
.
getMerchantId
(),
startDate
,
endDate
);
Map
<
Long
,
StudioVO
>
studioMap
=
studioRpcService
.
mapStudio
(
Lists
.
newArrayList
(
studio
Trans
AmountMap
.
keySet
()));
Lists
.
newArrayList
(
studio
Pay
AmountMap
.
keySet
()));
transactionTemplate
.
executeWithoutResult
(
action
->
{
MerchantSettleRecord
record
=
PayConvert
.
convertMerchantSettle
(
apply
,
vo
);
merchantSettleRecordRpService
.
insert
(
record
);
studioSettleRecordRpService
.
insertAll
(
PayConvert
.
convertStudioSettle
(
record
,
studio
Trans
AmountMap
,
studioMap
));
PayConvert
.
convertStudioSettle
(
record
,
studio
PayAmountMap
,
studioRefund
AmountMap
,
studioMap
));
});
if
(
TransStateEnums
.
SUCCESS
==
TransStateEnums
.
getByCode
(
vo
.
getTransState
()))
{
// 结算成功,则更新收银流水状态为记录为入账成功
...
...
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