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
77406c4b
Commit
77406c4b
authored
Feb 28, 2024
by
程裕兵
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat:refund
parent
a8af2435
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
60 additions
and
39 deletions
+60
-39
api/src/main/java/com/jiejing/fitness/finance/api/merchant/request/BrandMerchantRefundRequest.java
+12
-38
app/src/main/java/com/jiejing/fitness/finance/app/FitnessFinanceApplication.java
+3
-1
service/src/main/java/com/jiejing/fitness/finance/service/event/ListenerService.java
+12
-0
service/src/main/java/com/jiejing/fitness/finance/service/pay/PayService.java
+8
-0
service/src/main/java/com/jiejing/fitness/finance/service/pay/convert/PayConvert.java
+12
-0
service/src/main/java/com/jiejing/fitness/finance/service/pay/impl/PayServiceImpl.java
+13
-0
No files found.
api/src/main/java/com/jiejing/fitness/finance/api/merchant/request/BrandMerchantRefundRequest.java
View file @
77406c4b
package
com
.
jiejing
.
fitness
.
finance
.
api
.
merchant
.
request
;
import
com.alibaba.fastjson.JSONObject
;
import
com.jiejing.paycenter.common.enums.merchant.SubChannelEnums
;
import
com.jiejing.paycenter.common.enums.pay.PayTypeEnums
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
java.math.BigDecimal
;
...
...
@@ -24,47 +21,24 @@ import lombok.NoArgsConstructor;
@ApiModel
(
description
=
"品牌商户退款Request"
)
public
class
BrandMerchantRefundRequest
{
@ApiModelProperty
(
value
=
"
品牌
ID"
,
required
=
true
)
@NotNull
(
message
=
"
品牌
ID不能为空"
)
private
Long
brand
Id
;
@ApiModelProperty
(
value
=
"
场馆
ID"
,
required
=
true
)
@NotNull
(
message
=
"
场馆
ID不能为空"
)
private
Long
studio
Id
;
@ApiModelProperty
(
name
=
"支付总金额(元)"
,
required
=
true
)
@NotNull
(
message
=
"支付总金额不能为空"
)
private
BigDecimal
a
mount
;
private
BigDecimal
transA
mount
;
@ApiModelProperty
(
name
=
"
业务订
单号"
,
required
=
true
)
@NotBlank
(
message
=
"
业务订
单号不能为空"
)
@ApiModelProperty
(
name
=
"
上层业务退款
单号"
,
required
=
true
)
@NotBlank
(
message
=
"
上层业务退款
单号不能为空"
)
private
String
orderNo
;
@ApiModelProperty
(
name
=
"
业务订单类型
"
,
required
=
true
)
@Not
Null
(
message
=
"业务订单类型
不能为空"
)
private
Integer
orderType
;
@ApiModelProperty
(
name
=
"
退款请求对应的支付流水号
"
,
required
=
true
)
@Not
Blank
(
message
=
"退款请求对应的支付流水号
不能为空"
)
private
String
payTransNo
;
@ApiModelProperty
(
name
=
"支付类型"
,
required
=
true
)
@NotNull
(
message
=
"支付类型不能为空"
)
private
PayTypeEnums
payType
;
@ApiModelProperty
(
name
=
"正扫:三方支付账户ID"
,
notes
=
"微信的openId,支付宝的userId,JS、MINI、NATIVE支付必传"
)
private
String
openId
;
@ApiModelProperty
(
name
=
"反扫:支付授权码"
,
notes
=
"扫码设备读出的条形码或者二维码信息,BARCODE支付必传"
)
private
String
authCode
;
@ApiModelProperty
(
name
=
"支付子渠道"
,
notes
=
"聚合支付时需要"
)
private
SubChannelEnums
subChannel
;
@ApiModelProperty
(
name
=
"商品名称"
,
required
=
true
)
@NotBlank
(
message
=
"商品名称不能为空"
)
private
String
goods
;
@ApiModelProperty
(
name
=
"appId"
,
notes
=
"指定本次使用的appId"
)
private
String
appId
;
@ApiModelProperty
(
name
=
"过期时间(单位:秒)"
,
required
=
true
)
@NotNull
(
message
=
"过期时间不能为空"
)
private
Integer
timeExpire
;
@ApiModelProperty
(
name
=
"业务扩展信息"
)
private
JSONObject
extra
;
@ApiModelProperty
(
name
=
"退款原因"
,
required
=
true
)
@NotBlank
(
message
=
"退款原因不能为空"
)
private
String
refundReason
;
}
app/src/main/java/com/jiejing/fitness/finance/app/FitnessFinanceApplication.java
View file @
77406c4b
...
...
@@ -6,6 +6,7 @@ import com.jiejing.filecenter.api.common.event.ResourceEvent;
import
com.jiejing.fitness.finance.service.event.ListenerService
;
import
com.jiejing.paycenter.common.event.MerchantEvent
;
import
com.jiejing.paycenter.common.event.PayEvent
;
import
com.jiejing.paycenter.common.event.RefundEvent
;
import
com.xiaomai.event.annotation.EnableEventBinding
;
import
com.xiaomai.event.annotation.EventConfig
;
import
lombok.extern.slf4j.Slf4j
;
...
...
@@ -27,8 +28,9 @@ import org.springframework.scheduling.annotation.EnableScheduling;
@MapperScan
(
value
=
{
"com.jiejing.fitness.finance.repository.mapper"
})
@EnableEventBinding
(
configs
=
{
@EventConfig
(
event
=
MerchantEvent
.
class
,
binder
=
"biz-kafka"
),
@EventConfig
(
event
=
PayEvent
.
class
,
binder
=
"biz-kafka"
),
@EventConfig
(
event
=
Merchant
Event
.
class
,
binder
=
"biz-kafka"
)
@EventConfig
(
event
=
Refund
Event
.
class
,
binder
=
"biz-kafka"
)
},
listenerClass
=
{
ListenerService
.
class
})
@EnableFeignClients
(
basePackages
=
{
...
...
service/src/main/java/com/jiejing/fitness/finance/service/event/ListenerService.java
View file @
77406c4b
...
...
@@ -8,6 +8,7 @@ import com.jiejing.fitness.finance.service.merchant.BrandMerchantService;
import
com.jiejing.fitness.finance.service.pay.PayService
;
import
com.jiejing.paycenter.common.event.MerchantEvent
;
import
com.jiejing.paycenter.common.event.PayEvent
;
import
com.jiejing.paycenter.common.event.RefundEvent
;
import
com.xiaomai.event.annotation.EventHandler
;
import
java.util.ArrayList
;
import
java.util.Optional
;
...
...
@@ -65,4 +66,15 @@ public class ListenerService {
}
}
@EventHandler
(
value
=
RefundEvent
.
class
,
binder
=
"biz-kafka"
,
maxAttempts
=
MAX_RETRY
)
public
void
refundEventCallback
(
RefundEvent
event
,
@Header
(
DELIVERY_ATTEMPT
)
int
retryNum
)
{
try
{
log
.
info
(
"start process refund event {}"
,
event
.
getTransNo
());
payService
.
refundCallback
(
event
);
}
catch
(
Exception
e
)
{
log
.
info
(
"process refund event fail {}"
,
event
.
getTransNo
(),
e
);
}
}
}
service/src/main/java/com/jiejing/fitness/finance/service/pay/PayService.java
View file @
77406c4b
...
...
@@ -5,6 +5,7 @@ import com.jiejing.fitness.finance.service.pay.params.BrandMerchantRefundParams;
import
com.jiejing.paycenter.api.pay.vo.PayVO
;
import
com.jiejing.paycenter.api.pay.vo.RefundVO
;
import
com.jiejing.paycenter.common.event.PayEvent
;
import
com.jiejing.paycenter.common.event.RefundEvent
;
/**
* @author chengyubing
...
...
@@ -35,4 +36,11 @@ public interface PayService {
*/
RefundVO
merchantRefund
(
BrandMerchantRefundParams
params
);
/**
* 退款回调
*
* @param event 事件
*/
void
refundCallback
(
RefundEvent
event
);
}
service/src/main/java/com/jiejing/fitness/finance/service/pay/convert/PayConvert.java
View file @
77406c4b
...
...
@@ -25,6 +25,7 @@ import com.jiejing.paycenter.common.enums.merchant.SubChannelOpenTypeEnums;
import
com.jiejing.paycenter.common.enums.pay.PayStateEnums
;
import
com.jiejing.paycenter.common.enums.pay.PayTypeEnums
;
import
com.jiejing.paycenter.common.event.PayEvent
;
import
com.jiejing.paycenter.common.event.RefundEvent
;
import
com.jiejing.paycenter.common.model.SubChannelInfo
;
import
java.math.BigDecimal
;
import
java.math.RoundingMode
;
...
...
@@ -212,4 +213,15 @@ public class PayConvert {
return
BrandCashierTransStateEnums
.
REFUNDING
;
}
}
public
static
BrandCashierRecord
convertRefund
(
BrandCashierRecord
record
,
RefundEvent
event
)
{
return
BrandCashierRecord
.
builder
()
.
id
(
record
.
getId
())
.
transState
(
convertTransState
(
event
.
getRefundState
()))
.
failMessage
(
event
.
getFailMessage
())
.
successTime
(
event
.
getSuccessTime
())
.
updateTime
(
new
Date
())
.
build
();
}
}
service/src/main/java/com/jiejing/fitness/finance/service/pay/impl/PayServiceImpl.java
View file @
77406c4b
...
...
@@ -20,6 +20,7 @@ import com.jiejing.paycenter.api.pay.vo.PayVO;
import
com.jiejing.paycenter.api.pay.vo.RefundVO
;
import
com.jiejing.paycenter.common.enums.pay.PayStateEnums
;
import
com.jiejing.paycenter.common.event.PayEvent
;
import
com.jiejing.paycenter.common.event.RefundEvent
;
import
com.jiejing.studio.api.studio.vo.StudioVO
;
import
java.math.BigDecimal
;
import
java.util.List
;
...
...
@@ -95,4 +96,16 @@ public class PayServiceImpl implements PayService {
return
vo
;
}
@Override
public
void
refundCallback
(
RefundEvent
event
)
{
BrandCashierRecord
record
=
brandCashierRecordRpService
.
getById
(
Long
.
parseLong
(
event
.
getTransNo
()))
.
orElse
(
null
);
if
(
null
==
record
)
{
return
;
}
BrandCashierRecord
toModify
=
PayConvert
.
convertRefund
(
record
,
event
);
brandCashierRecordRpService
.
updateById
(
toModify
);
}
}
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