Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
C
cms-ci-test
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
test-ci
cms-ci-test
Commits
0dd3db40
提交
0dd3db40
authored
8月 30, 2023
作者:
xiaowang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
修改bug
上级
b4c3c65a
隐藏空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
97 行增加
和
13 行删除
+97
-13
XzEnums.java
...e-user/src/main/java/com/mmc/iuav/user/enums/XzEnums.java
+36
-0
XzServiceImpl.java
...va/com/mmc/iuav/user/service/xzsz/impl/XzServiceImpl.java
+60
-13
PayWalletDao.xml
...ce-user/src/main/resources/mapper/wallet/PayWalletDao.xml
+1
-0
没有找到文件。
csm-service/cms-service-user/src/main/java/com/mmc/iuav/user/enums/XzEnums.java
0 → 100644
浏览文件 @
0dd3db40
package
com
.
mmc
.
iuav
.
user
.
enums
;
/**
* @author 作者 LW
* @version 创建时间:2023.8.26 10:56
* @explain 类说明
*/
public
enum
XzEnums
{
submit_result
(
"submitResult"
,
"上报结果通知"
),
trade_result
(
"tradeResult"
,
"交易结果通知"
),
await
(
"await"
,
"待发放(交易排队中-过渡状态)"
),
handle
(
"handle"
,
"交易中"
),
success
(
"success"
,
"交易成功"
),
failure
(
"failure"
,
"交易失败"
),
is_success
(
"isSuccess"
,
"交易是否成功"
),
T
(
"T"
,
"回调code"
);
private
String
code
;
private
String
name
;
XzEnums
(
String
code
,
String
name
)
{
this
.
code
=
code
;
this
.
name
=
name
;
}
public
void
setCode
(
String
code
)
{
this
.
code
=
code
;
}
public
String
getCode
()
{
return
this
.
code
;
}
public
void
setName
(
String
name
)
{
this
.
name
=
name
;
}
public
String
getName
()
{
return
this
.
name
;
}
}
csm-service/cms-service-user/src/main/java/com/mmc/iuav/user/service/xzsz/impl/XzServiceImpl.java
浏览文件 @
0dd3db40
...
...
@@ -3,6 +3,8 @@ package com.mmc.iuav.user.service.xzsz.impl;
import
cn.hutool.core.codec.Base64
;
import
cn.hutool.core.net.URLDecoder
;
import
cn.hutool.json.JSONObject
;
import
com.alibaba.fastjson2.JSON
;
import
com.mmc.iuav.general.CodeUtil
;
import
com.mmc.iuav.http.HttpsRequestUtil
;
import
com.mmc.iuav.response.ResultBody
;
import
com.mmc.iuav.user.constant.UserSystemConstant
;
...
...
@@ -10,11 +12,16 @@ import com.mmc.iuav.user.dao.wallet.PayWalletDao;
import
com.mmc.iuav.user.dao.xzsz.XzDao
;
import
com.mmc.iuav.user.entity.XzAuthDO
;
import
com.mmc.iuav.user.entity.XzWithdrawalApplyDO
;
import
com.mmc.iuav.user.entity.wallet.PayWalletDO
;
import
com.mmc.iuav.user.entity.wallet.WithdrawalLogDO
;
import
com.mmc.iuav.user.enums.WithdrawalMethod
;
import
com.mmc.iuav.user.enums.XzEnums
;
import
com.mmc.iuav.user.model.dto.LoginSuccessDTO
;
import
com.mmc.iuav.user.model.dto.xzsz.UsableCashPoolingDTO
;
import
com.mmc.iuav.user.model.vo.XzAuthVO
;
import
com.mmc.iuav.user.model.vo.XzWithdrawalVO
;
import
com.mmc.iuav.user.service.xzsz.XzService
;
import
com.mmc.iuav.user.util.TDateUtil
;
import
com.mmc.iuav.user.xzsz.SingleSubmitResp
;
import
com.mmc.iuav.user.xzsz.WithdrawalResp
;
import
com.piggy.settlement.sdk.client.sign.PiggySignApiClient
;
...
...
@@ -37,7 +44,9 @@ import javax.annotation.Resource;
import
javax.crypto.Cipher
;
import
javax.crypto.spec.IvParameterSpec
;
import
javax.crypto.spec.SecretKeySpec
;
import
java.math.BigDecimal
;
import
java.nio.charset.Charset
;
import
java.util.Date
;
import
java.util.HashMap
;
import
java.util.Map
;
...
...
@@ -266,26 +275,64 @@ public class XzServiceImpl implements XzService {
@Override
public
String
xzWithdrawNotify
(
JSONObject
notify
)
{
log
.
info
(
"xzWithdrawNotify获取到的推送结果:{}"
,
notify
.
toString
());
if
(
"T"
.
equals
(
notify
.
get
(
"isSuccess"
).
toString
()))
{
if
(
XzEnums
.
T
.
getCode
().
equals
(
notify
.
get
(
XzEnums
.
is_success
.
getCode
()
).
toString
()))
{
String
s
=
decrypt
(
com
.
alibaba
.
fastjson2
.
JSONObject
.
parseObject
(
notify
.
get
(
"data"
).
toString
()).
get
(
"bizAESContent"
).
toString
());
WithdrawalResp
.
Data
data
=
com
.
alibaba
.
fastjson2
.
JSONObject
.
parseObject
(
s
,
WithdrawalResp
.
Data
.
class
);
log
.
info
(
"提现回调解密数据内容:{}"
,
com
.
alibaba
.
fastjson2
.
JSONObject
.
toJSONString
(
data
));
// 获取用户提现申请信息
XzWithdrawalApplyDO
withdrawCashApplyDetails
=
payWalletDao
.
getWithdrawalApplyByIdOrOuterTradeNo
(
null
,
data
.
getOuterTradeNo
());
if
(
"submitResult"
.
equals
(
data
.
getNotifyType
()))
{
// 获取用户钱包信息
PayWalletDO
wallet
=
payWalletDao
.
getPayWalletByUser
(
withdrawCashApplyDetails
.
getUserAccountId
());
if
(
XzEnums
.
submit_result
.
getCode
().
equals
(
data
.
getNotifyType
()))
{
// 对上报的数据进行业务校验,例如:是否超限、是否有余额、是否有电签、参数是否准确等等前置校验。如果校验成功,订单进入待发队列等待发放
log
.
info
(
"deal submitResult"
);
// 根据订单编号修改信息
XzWithdrawalApplyDO
xzWithdrawalApplyDO
=
new
XzWithdrawalApplyDO
();
xzWithdrawalApplyDO
.
setOuterTradeNo
(
data
.
getOuterTradeNo
());
xzWithdrawalApplyDO
.
setSubmitStatus
(
data
.
getTradeStatus
());
xzWithdrawalApplyDO
.
setTradeResult
(
data
.
getTradeResult
());
xzWithdrawalApplyDO
.
setTaxFundId
(
userSystemConstant
.
getTaxFundId
());
payWalletDao
.
updateWithdrawalApply
(
xzWithdrawalApplyDO
);
}
else
if
(
"tradeResult"
.
equals
(
data
.
getNotifyType
()))
{
// 根据银行\微信\支付宝的反馈,推送订单的发放结果,发放成功\发放失败
// todo 待处理
log
.
info
(
"deal tradeResult"
);
// 判断返回的状态时否是成功
if
(
XzEnums
.
success
.
getCode
().
equals
(
data
.
getTradeStatus
()))
{
// 更新提现申请记录
XzWithdrawalApplyDO
xzWithdrawalApplyDO
=
new
XzWithdrawalApplyDO
();
xzWithdrawalApplyDO
.
setOuterTradeNo
(
data
.
getOuterTradeNo
());
xzWithdrawalApplyDO
.
setSubmitStatus
(
data
.
getTradeStatus
());
xzWithdrawalApplyDO
.
setTradeResult
(
data
.
getTradeResult
());
xzWithdrawalApplyDO
.
setTaxFundId
(
userSystemConstant
.
getTaxFundId
());
payWalletDao
.
updateWithdrawalApply
(
xzWithdrawalApplyDO
);
}
else
{
// 更新提现申请记录
XzWithdrawalApplyDO
xzWithdrawalApplyDO
=
new
XzWithdrawalApplyDO
();
xzWithdrawalApplyDO
.
setOuterTradeNo
(
data
.
getOuterTradeNo
());
xzWithdrawalApplyDO
.
setSubmitStatus
(
data
.
getTradeStatus
());
xzWithdrawalApplyDO
.
setTradeResult
(
data
.
getTradeResult
());
xzWithdrawalApplyDO
.
setTradeStatus
(
data
.
getTradeStatus
());
payWalletDao
.
updateWithdrawalApply
(
xzWithdrawalApplyDO
);
// 并且回滚用户钱包信息
// 生成提现流水编号
String
payNo
=
"T"
+
TDateUtil
.
getDateStr
(
new
Date
(),
TDateUtil
.
TYPE
)
+
withdrawCashApplyDetails
.
getUserAccountId
()
+
CodeUtil
.
getRandomNum
(
4
);
// 记录流水记录
WithdrawalLogDO
withdrawalLogDO
=
new
WithdrawalLogDO
();
withdrawalLogDO
.
setPayNo
(
payNo
);
withdrawalLogDO
.
setXzWithdrawalApplyId
(
withdrawCashApplyDetails
.
getId
());
withdrawalLogDO
.
setPayTime
(
new
Date
());
withdrawalLogDO
.
setUserAccountId
(
withdrawCashApplyDetails
.
getUserAccountId
());
withdrawalLogDO
.
setSalaryPaid
(
data
.
getPayAmount
());
withdrawalLogDO
.
setPayMethod
(
WithdrawalMethod
.
TXSB
.
getCode
());
withdrawalLogDO
.
setSalaryFreeze
(
new
BigDecimal
(
0
));
payWalletDao
.
insertWithdrawalLog
(
withdrawalLogDO
);
// 修改钱包信息,钱包冻结金额
PayWalletDO
payWalletDO
=
new
PayWalletDO
();
payWalletDO
.
setPid
(
wallet
.
getPid
());
payWalletDO
.
setUserAccountId
(
withdrawCashApplyDetails
.
getUserAccountId
());
payWalletDO
.
setSalaryAmt
(
wallet
.
getSalaryAmt
().
add
(
data
.
getPayAmount
()));
payWalletDO
.
setSalaryFreeze
(
wallet
.
getSalaryFreeze
().
subtract
(
data
.
getPayAmount
()));
int
updateCount
=
payWalletDao
.
updatePayWallet
(
payWalletDO
);
if
(
updateCount
!=
1
)
{
log
.
error
(
"回调返回提现失败时,修改钱包信息失败,信息是:{}"
,
JSON
.
toJSONString
(
payWalletDO
));
}
}
}
else
if
(
XzEnums
.
trade_result
.
getCode
().
equals
(
data
.
getNotifyType
()))
{
// 根据回调信息返回数据更新提现申请
if
(
withdrawCashApplyDetails
.
getTradeStatus
()
!=
null
&&
withdrawCashApplyDetails
.
getTradeStatus
().
equals
(
XzEnums
.
success
.
getCode
()))
{
return
"success"
;
}
}
}
else
{
...
...
csm-service/cms-service-user/src/main/resources/mapper/wallet/PayWalletDao.xml
浏览文件 @
0dd3db40
...
...
@@ -219,6 +219,7 @@
</select>
<select
id=
"getWithdrawalApplyByIdOrOuterTradeNo"
resultType=
"com.mmc.iuav.user.entity.XzWithdrawalApplyDO"
>
select id,
apply_status,
user_account_id,
bank_name,
bank_remo,
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论