Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
C
cms
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
iuav
cms
Commits
cb5118ae
提交
cb5118ae
authored
9月 06, 2023
作者:
zhenjie
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'develop'
上级
e7e76967
d6374ab7
隐藏空白字符变更
内嵌
并排
正在显示
91 个修改的文件
包含
5860 行增加
和
228 行删除
+5860
-228
PayWalletDTO.java
...java/com/mmc/iuav/user/model/dto/wallet/PayWalletDTO.java
+2
-4
WithdrawalApplyDTO.java
...om/mmc/iuav/user/model/dto/wallet/WithdrawalApplyDTO.java
+53
-0
UsableCashPoolingDTO.java
...om/mmc/iuav/user/model/dto/xzsz/UsableCashPoolingDTO.java
+27
-0
FddVerifyInfoDTO.java
...ava/com/mmc/iuav/user/model/fdd/dto/FddVerifyInfoDTO.java
+31
-0
UserFddDTO.java
...main/java/com/mmc/iuav/user/model/fdd/dto/UserFddDTO.java
+31
-0
NECertReq.java
.../main/java/com/mmc/iuav/user/model/fdd/req/NECertReq.java
+20
-0
CompanyVerifyResp.java
...a/com/mmc/iuav/user/model/fdd/resp/CompanyVerifyResp.java
+19
-0
PersonVerifyResp.java
...va/com/mmc/iuav/user/model/fdd/resp/PersonVerifyResp.java
+19
-0
SealDetail.java
...ain/java/com/mmc/iuav/user/model/fdd/seal/SealDetail.java
+29
-0
WalletFlowQO.java
.../java/com/mmc/iuav/user/model/qo/wallet/WalletFlowQO.java
+53
-0
WithdrawalApplyQO.java
.../com/mmc/iuav/user/model/qo/wallet/WithdrawalApplyQO.java
+54
-0
UserAccountVO.java
...c/main/java/com/mmc/iuav/user/model/vo/UserAccountVO.java
+4
-0
WithdrawalInfoVO.java
...ain/java/com/mmc/iuav/user/model/vo/WithdrawalInfoVO.java
+38
-0
WxMsgVO.java
...del/src/main/java/com/mmc/iuav/user/model/vo/WxMsgVO.java
+17
-38
XzAuthVO.java
...el/src/main/java/com/mmc/iuav/user/model/vo/XzAuthVO.java
+34
-0
XzWithdrawalVO.java
.../main/java/com/mmc/iuav/user/model/vo/XzWithdrawalVO.java
+57
-0
ApplyWithdrawalVO.java
.../com/mmc/iuav/user/model/vo/wallet/ApplyWithdrawalVO.java
+38
-0
FlyerWalletFlowVO.java
.../com/mmc/iuav/user/model/vo/wallet/FlyerWalletFlowVO.java
+49
-0
PublisherWalletFlowVO.java
.../mmc/iuav/user/model/vo/wallet/PublisherWalletFlowVO.java
+72
-0
TopUpOrderVO.java
.../java/com/mmc/iuav/user/model/vo/wallet/TopUpOrderVO.java
+29
-0
WalletFlowVO.java
.../java/com/mmc/iuav/user/model/vo/wallet/WalletFlowVO.java
+24
-0
ResultEnum.java
...-util/src/main/java/com/mmc/iuav/response/ResultEnum.java
+8
-1
pom.xml
csm-service/cms-service-user/pom.xml
+25
-0
UserSystemConstant.java
...n/java/com/mmc/iuav/user/constant/UserSystemConstant.java
+24
-0
WxConstant.java
.../src/main/java/com/mmc/iuav/user/constant/WxConstant.java
+1
-2
FddConnectConstant.java
...va/com/mmc/iuav/user/constant/fdd/FddConnectConstant.java
+27
-0
FddConstant.java
...main/java/com/mmc/iuav/user/constant/fdd/FddConstant.java
+46
-0
WxController.java
.../main/java/com/mmc/iuav/user/controller/WxController.java
+45
-0
UserFddAuthController.java
...m/mmc/iuav/user/controller/fdd/UserFddAuthController.java
+81
-0
PayWalletController.java
.../mmc/iuav/user/controller/wallet/PayWalletController.java
+39
-12
WithdrawalController.java
...mmc/iuav/user/controller/wallet/WithdrawalController.java
+69
-0
XzController.java
.../java/com/mmc/iuav/user/controller/xzsz/XzController.java
+130
-0
UserServiceDao.java
...r/src/main/java/com/mmc/iuav/user/dao/UserServiceDao.java
+3
-0
UserFddAuthDao.java
...c/main/java/com/mmc/iuav/user/dao/fdd/UserFddAuthDao.java
+38
-0
PayWalletDao.java
.../main/java/com/mmc/iuav/user/dao/wallet/PayWalletDao.java
+34
-0
WithdrawalDao.java
...c/main/java/com/mmc/iuav/user/dao/xzsz/WithdrawalDao.java
+13
-0
XzDao.java
...-user/src/main/java/com/mmc/iuav/user/dao/xzsz/XzDao.java
+15
-0
UserAccountDO.java
...src/main/java/com/mmc/iuav/user/entity/UserAccountDO.java
+3
-0
XzAuthDO.java
...user/src/main/java/com/mmc/iuav/user/entity/XzAuthDO.java
+32
-0
XzWithdrawalApplyDO.java
...in/java/com/mmc/iuav/user/entity/XzWithdrawalApplyDO.java
+126
-0
FddVerifyInfoDO.java
...in/java/com/mmc/iuav/user/entity/fdd/FddVerifyInfoDO.java
+28
-0
UserFddDO.java
...src/main/java/com/mmc/iuav/user/entity/fdd/UserFddDO.java
+36
-0
PayLogDO.java
...c/main/java/com/mmc/iuav/user/entity/wallet/PayLogDO.java
+17
-98
PayWalletDO.java
...ain/java/com/mmc/iuav/user/entity/wallet/PayWalletDO.java
+10
-3
UserBillingDetailVO.java
.../com/mmc/iuav/user/entity/wallet/UserBillingDetailVO.java
+113
-0
WithdrawalLogDO.java
...java/com/mmc/iuav/user/entity/wallet/WithdrawalLogDO.java
+74
-0
PayMethodEnums.java
...src/main/java/com/mmc/iuav/user/enums/PayMethodEnums.java
+37
-0
RebateMethod.java
...r/src/main/java/com/mmc/iuav/user/enums/RebateMethod.java
+34
-0
SettleTypeEnum.java
...src/main/java/com/mmc/iuav/user/enums/SettleTypeEnum.java
+33
-0
WithdrawalApplyStatus.java
...n/java/com/mmc/iuav/user/enums/WithdrawalApplyStatus.java
+34
-0
WithdrawalMethod.java
...c/main/java/com/mmc/iuav/user/enums/WithdrawalMethod.java
+34
-0
XzEnums.java
...e-user/src/main/java/com/mmc/iuav/user/enums/XzEnums.java
+37
-0
FanoutExchangeConfig.java
.../main/java/com/mmc/iuav/user/mq/FanoutExchangeConfig.java
+2
-1
RabbitmqConstant.java
.../java/com/mmc/iuav/user/mq/constant/RabbitmqConstant.java
+17
-1
MqProducerImpl.java
...c/main/java/com/mmc/iuav/user/mq/impl/MqProducerImpl.java
+1
-1
OrderMqConsumer.java
...n/java/com/mmc/iuav/user/mq/listener/OrderMqConsumer.java
+33
-0
WxService.java
...er/src/main/java/com/mmc/iuav/user/service/WxService.java
+23
-0
FddService.java
...c/main/java/com/mmc/iuav/user/service/fdd/FddService.java
+14
-0
UserFddAuthService.java
...ava/com/mmc/iuav/user/service/fdd/UserFddAuthService.java
+33
-0
FddServiceImpl.java
...va/com/mmc/iuav/user/service/fdd/impl/FddServiceImpl.java
+248
-0
UserFddAuthServiceImpl.java
...mc/iuav/user/service/fdd/impl/UserFddAuthServiceImpl.java
+304
-0
AuthServiceImpl.java
.../java/com/mmc/iuav/user/service/impl/AuthServiceImpl.java
+8
-0
BackUserAccountServiceImpl.java
...mc/iuav/user/service/impl/BackUserAccountServiceImpl.java
+0
-1
RealNameAuthServiceImpl.java
...m/mmc/iuav/user/service/impl/RealNameAuthServiceImpl.java
+1
-0
UserAccountServiceImpl.java
...om/mmc/iuav/user/service/impl/UserAccountServiceImpl.java
+36
-7
WxServiceImpl.java
...in/java/com/mmc/iuav/user/service/impl/WxServiceImpl.java
+97
-4
PayWalletService.java
...va/com/mmc/iuav/user/service/wallet/PayWalletService.java
+11
-0
PayWalletServiceImpl.java
...c/iuav/user/service/wallet/impl/PayWalletServiceImpl.java
+541
-0
WithdrawalService.java
...ava/com/mmc/iuav/user/service/xzsz/WithdrawalService.java
+21
-0
XzService.java
...c/main/java/com/mmc/iuav/user/service/xzsz/XzService.java
+46
-0
WithdrawalServiceImpl.java
...mc/iuav/user/service/xzsz/impl/WithdrawalServiceImpl.java
+258
-0
XzServiceImpl.java
...va/com/mmc/iuav/user/service/xzsz/impl/XzServiceImpl.java
+466
-0
PatternUtil.java
...ser/src/main/java/com/mmc/iuav/user/util/PatternUtil.java
+90
-0
PrivacyUtil.java
...ser/src/main/java/com/mmc/iuav/user/util/PrivacyUtil.java
+165
-0
TDateUtil.java
...-user/src/main/java/com/mmc/iuav/user/util/TDateUtil.java
+612
-0
SingleSubmitResp.java
...rc/main/java/com/mmc/iuav/user/xzsz/SingleSubmitResp.java
+71
-0
WithdrawalResp.java
.../src/main/java/com/mmc/iuav/user/xzsz/WithdrawalResp.java
+178
-0
application-dev.yml
...e/cms-service-user/src/main/resources/application-dev.yml
+22
-0
application-local.yml
...cms-service-user/src/main/resources/application-local.yml
+18
-3
application-prod.yml
.../cms-service-user/src/main/resources/application-prod.yml
+9
-0
fdd-verify-process-1.8.5.jar
...-user/src/main/resources/lib/fdd-verify-process-1.8.5.jar
+0
-0
piggy-settlement-sdk-1.7.0.jar
...ser/src/main/resources/lib/piggy-settlement-sdk-1.7.0.jar
+0
-0
BackUserAccountDao.xml
...ice-user/src/main/resources/mapper/BackUserAccountDao.xml
+16
-6
UserServiceDao.xml
...service-user/src/main/resources/mapper/UserServiceDao.xml
+21
-0
UserSubInfoDao.xml
...service-user/src/main/resources/mapper/UserSubInfoDao.xml
+44
-43
UserFddAuthDao.xml
...ice-user/src/main/resources/mapper/fdd/UserFddAuthDao.xml
+60
-0
PayWalletDao.xml
...ce-user/src/main/resources/mapper/wallet/PayWalletDao.xml
+386
-2
WithdrawalDao.xml
...ice-user/src/main/resources/mapper/xzsz/WithdrawalDao.xml
+26
-0
XzDao.xml
...cms-service-user/src/main/resources/mapper/xzsz/XzDao.xml
+31
-0
not-check.yml
...service/cms-service-user/src/main/resources/not-check.yml
+4
-0
kustomization.yaml
kustomization/overlays/dev/kustomization.yaml
+1
-1
没有找到文件。
cms-common/cms-common-model/src/main/java/com/mmc/iuav/user/model/dto/wallet/PayWalletDTO.java
浏览文件 @
cb5118ae
...
...
@@ -28,22 +28,20 @@ public class PayWalletDTO implements Serializable {
private
String
userName
;
@ApiModelProperty
(
value
=
"云享金余额"
)
private
BigDecimal
cashAmt
;
@ApiModelProperty
(
value
=
"已消耗云享金"
)
private
BigDecimal
cashPaid
;
@ApiModelProperty
(
value
=
"云享金总金额"
)
private
BigDecimal
totalCash
;
@ApiModelProperty
(
value
=
"已冻结云享金"
)
private
BigDecimal
cashFreeze
;
@ApiModelProperty
(
value
=
"佣金余额"
)
private
BigDecimal
salaryAmt
;
@ApiModelProperty
(
value
=
"已消耗佣金"
)
private
BigDecimal
salaryPaid
;
@ApiModelProperty
(
value
=
"已冻结佣金"
)
private
BigDecimal
salaryFreeze
;
@ApiModelProperty
(
value
=
"佣金总额度"
)
private
BigDecimal
totalSalary
;
@ApiModelProperty
(
value
=
"已提现的金额"
)
private
BigDecimal
rebateWdl
;
@ApiModelProperty
(
value
=
"提现冻结金额"
)
private
BigDecimal
wdlFreeze
;
@ApiModelProperty
(
value
=
"冻结总额"
)
private
BigDecimal
totalFreeze
;
@ApiModelProperty
(
value
=
"总金额"
)
...
...
cms-common/cms-common-model/src/main/java/com/mmc/iuav/user/model/dto/wallet/WithdrawalApplyDTO.java
0 → 100644
浏览文件 @
cb5118ae
package
com
.
mmc
.
iuav
.
user
.
model
.
dto
.
wallet
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
import
java.util.Date
;
/**
* @author 作者 lw
* @version 创建时间:2023.8.28 11:08:54
* @explain 类说明
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
WithdrawalApplyDTO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
5782430067900145219L
;
@ApiModelProperty
(
value
=
"id"
)
private
Integer
id
;
@ApiModelProperty
(
value
=
"申请人的用户ID"
)
private
Integer
userAccountId
;
@ApiModelProperty
(
value
=
"申请金额"
)
private
BigDecimal
applyAmt
;
@ApiModelProperty
(
value
=
"申请状态: 0平台处理中 1提现成功 2提现失败"
)
private
Integer
applyStatus
;
@ApiModelProperty
(
value
=
"开户人"
)
private
String
empName
;
@ApiModelProperty
(
value
=
"开户银行-支行名称"
)
private
String
bankName
;
@ApiModelProperty
(
value
=
"收款账号"
)
private
String
payAccount
;
@ApiModelProperty
(
value
=
"备注"
)
private
String
remark
;
@ApiModelProperty
(
value
=
"流水编号"
)
private
String
outerTradeNo
;
@ApiModelProperty
(
value
=
"手机号"
)
private
String
phoneNum
;
@ApiModelProperty
(
value
=
"提现方式-微信(wechat)-支付宝(alipay)-银行卡(bank_card)"
,
required
=
true
,
example
=
"wechat"
)
private
String
settleType
;
@ApiModelProperty
(
value
=
"处理信息"
)
private
String
tradeResult
;
@ApiModelProperty
(
value
=
"apply 提现申请 await待发放 handle交易中 success 交易成功 failure 交易失败"
)
private
String
tradeStatus
;
@ApiModelProperty
(
value
=
"创建时间"
)
private
Date
createTime
;
}
cms-common/cms-common-model/src/main/java/com/mmc/iuav/user/model/dto/xzsz/UsableCashPoolingDTO.java
0 → 100644
浏览文件 @
cb5118ae
package
com
.
mmc
.
iuav
.
user
.
model
.
dto
.
xzsz
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.math.BigDecimal
;
/**
* @Author LW
* @date 2023/8/29 14:25
* 概要:
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public
class
UsableCashPoolingDTO
{
@ApiModelProperty
(
value
=
"商户企业名称"
)
private
String
companyName
;
@ApiModelProperty
(
value
=
"可用余额(含税费金额)"
)
private
String
taxFundName
;
@ApiModelProperty
(
value
=
"税源地名称"
)
private
BigDecimal
availableBalance
;
@ApiModelProperty
(
value
=
"交易渠道"
)
private
String
tradesChannel
;
}
cms-common/cms-common-model/src/main/java/com/mmc/iuav/user/model/fdd/dto/FddVerifyInfoDTO.java
0 → 100644
浏览文件 @
cb5118ae
package
com
.
mmc
.
iuav
.
user
.
model
.
fdd
.
dto
;
import
io.swagger.annotations.ApiModel
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
import
java.util.Date
;
/**
* @author:zhenjie Date:2022/9/2
* time:14:34
*/
@NoArgsConstructor
@AllArgsConstructor
@Data
@Builder
@ApiModel
(
value
=
"com.mmc.csf.fdd.dto.AppEVerifyInfoDTO"
,
description
=
"小程序用户企业认证DTO"
)
public
class
FddVerifyInfoDTO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
4194664180348523961L
;
private
Integer
id
;
private
Integer
userFddId
;
private
String
customerId
;
private
String
transactionNo
;
private
String
url
;
private
Integer
deleted
;
private
Date
createTime
;
private
Date
updateTime
;
}
cms-common/cms-common-model/src/main/java/com/mmc/iuav/user/model/fdd/dto/UserFddDTO.java
0 → 100644
浏览文件 @
cb5118ae
package
com
.
mmc
.
iuav
.
user
.
model
.
fdd
.
dto
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
import
java.util.Date
;
/**
* author:zhenjie
* Date:2022/9/1
* time:15:53
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public
class
UserFddDTO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
4952516407490131779L
;
private
Integer
id
;
private
String
unionId
;
private
String
customerId
;
private
Integer
personVerifyStatus
;
private
Integer
entVerifyStatus
;
private
Integer
accountType
;
private
Date
createTime
;
private
Date
updateTime
;
}
cms-common/cms-common-model/src/main/java/com/mmc/iuav/user/model/fdd/req/NECertReq.java
0 → 100644
浏览文件 @
cb5118ae
package
com
.
mmc
.
iuav
.
user
.
model
.
fdd
.
req
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
/**
* author:zhenjie
* Date:2022/7/27
* time:14:29
*/
@Data
@NoArgsConstructor
public
class
NECertReq
implements
Serializable
{
private
static
final
long
serialVersionUID
=
6174142180495289363L
;
private
String
name
;
private
String
value
;
}
cms-common/cms-common-model/src/main/java/com/mmc/iuav/user/model/fdd/resp/CompanyVerifyResp.java
0 → 100644
浏览文件 @
cb5118ae
package
com
.
mmc
.
iuav
.
user
.
model
.
fdd
.
resp
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
/**
* author:zhenjie
* Date:2022/7/21
* time:18:13
*/
@Data
@NoArgsConstructor
public
class
CompanyVerifyResp
implements
Serializable
{
private
static
final
long
serialVersionUID
=
5835274401261039702L
;
private
String
transactionNo
;
private
String
url
;
}
cms-common/cms-common-model/src/main/java/com/mmc/iuav/user/model/fdd/resp/PersonVerifyResp.java
0 → 100644
浏览文件 @
cb5118ae
package
com
.
mmc
.
iuav
.
user
.
model
.
fdd
.
resp
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
/**
* author:zhenjie
* Date:2022/7/18
* time:16:00
*/
@Data
@NoArgsConstructor
public
class
PersonVerifyResp
implements
Serializable
{
private
static
final
long
serialVersionUID
=
7583599952872411025L
;
private
String
transactionNo
;
private
String
url
;
}
cms-common/cms-common-model/src/main/java/com/mmc/iuav/user/model/fdd/seal/SealDetail.java
0 → 100644
浏览文件 @
cb5118ae
package
com
.
mmc
.
iuav
.
user
.
model
.
fdd
.
seal
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
/**
* @Author LW
* @date 2022/8/3 16:24
* 概要:
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public
class
SealDetail
implements
Serializable
{
@ApiModelProperty
(
value
=
"签章图片Base64"
)
private
String
signatureImg
;
@ApiModelProperty
(
value
=
"签章编号"
)
private
String
signatureId
;
@ApiModelProperty
(
value
=
"签章图片作用范围:0:非默认 1:默认章"
)
private
Integer
signatureScope
;
@ApiModelProperty
(
value
=
"签章来源 0:法大大生成 1:平台上传"
)
private
String
signatureSource
;
@ApiModelProperty
(
value
=
"企业或者个人 1:个人 2:企业"
)
private
String
signatureType
;
}
cms-common/cms-common-model/src/main/java/com/mmc/iuav/user/model/qo/wallet/WalletFlowQO.java
0 → 100644
浏览文件 @
cb5118ae
package
com
.
mmc
.
iuav
.
user
.
model
.
qo
.
wallet
;
import
com.mmc.iuav.group.Page
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
javax.validation.constraints.Min
;
import
javax.validation.constraints.NotNull
;
import
java.io.Serializable
;
/**
* @author 作者 lw
* @version 创建时间:2023.8.26 上午11:40:21
* @explain 类说明
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
WalletFlowQO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
2568266056802132237L
;
@ApiModelProperty
(
value
=
"用户id"
,
hidden
=
true
)
private
Integer
userAccountId
;
@ApiModelProperty
(
value
=
"查询年-月"
)
private
String
yearMonth
;
@ApiModelProperty
(
value
=
"开始时间"
)
private
String
startTime
;
@ApiModelProperty
(
value
=
"结束时间"
,
hidden
=
true
)
private
String
endTime
;
@ApiModelProperty
(
value
=
"状态类型"
)
private
Integer
payMethod
;
@ApiModelProperty
(
value
=
"页码"
,
required
=
true
)
@NotNull
(
message
=
"页码不能为空"
,
groups
=
{
Page
.
class
})
@Min
(
value
=
1
,
groups
=
Page
.
class
)
private
Integer
pageNo
;
@ApiModelProperty
(
value
=
"每页显示数"
,
required
=
true
)
@NotNull
(
message
=
"每页显示数不能为空"
,
groups
=
{
Page
.
class
})
@Min
(
value
=
1
,
groups
=
Page
.
class
)
private
Integer
pageSize
;
public
void
buildCurrentPage
()
{
this
.
pageNo
=
(
pageNo
-
1
)
*
pageSize
;
}
}
cms-common/cms-common-model/src/main/java/com/mmc/iuav/user/model/qo/wallet/WithdrawalApplyQO.java
0 → 100644
浏览文件 @
cb5118ae
package
com
.
mmc
.
iuav
.
user
.
model
.
qo
.
wallet
;
/**
* @author 作者 geDuo
* @version 创建时间:2021年10月29日 下午2:25:08
* @explain 类说明
*/
import
com.mmc.iuav.group.Freeze
;
import
com.mmc.iuav.group.Page
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
javax.validation.constraints.Min
;
import
javax.validation.constraints.NotNull
;
import
java.io.Serializable
;
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
WithdrawalApplyQO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
2185498289462506967L
;
@ApiModelProperty
(
value
=
"关键字"
,
example
=
"666"
)
private
String
keyword
;
@ApiModelProperty
(
value
=
"开始时间"
,
example
=
"2023-08-28 00:00:00"
)
private
String
startTime
;
@ApiModelProperty
(
value
=
"结束时间"
,
example
=
"2023-08-28 23:59:59"
)
private
String
endTime
;
@ApiModelProperty
(
value
=
"状态: apply 提现申请 await待发放 handle交易中 success 交易成功 failure 交易失败"
,
example
=
"0"
)
private
String
tradeStatus
;
@ApiModelProperty
(
value
=
"通道标识-微信(wechat)-支付宝(alipay)-银行卡(bank_card)"
,
required
=
true
,
example
=
"wechat"
)
private
String
settleType
;
@ApiModelProperty
(
value
=
"页码"
,
required
=
true
,
example
=
"1"
)
@NotNull
(
message
=
"页码不能为空"
,
groups
=
{
Page
.
class
,
Freeze
.
class
})
@Min
(
value
=
1
,
groups
=
Page
.
class
)
private
Integer
pageNo
;
@ApiModelProperty
(
value
=
"每页显示数"
,
required
=
true
,
example
=
"10"
)
@NotNull
(
message
=
"每页显示数不能为空"
,
groups
=
{
Page
.
class
,
Freeze
.
class
})
@Min
(
value
=
1
,
groups
=
Page
.
class
)
private
Integer
pageSize
;
public
void
buildCurrentPage
()
{
this
.
pageNo
=
(
pageNo
-
1
)
*
pageSize
;
}
}
cms-common/cms-common-model/src/main/java/com/mmc/iuav/user/model/vo/UserAccountVO.java
浏览文件 @
cb5118ae
...
...
@@ -73,4 +73,8 @@ public class UserAccountVO implements Serializable {
private
Integer
auditStatus
;
@ApiModelProperty
(
value
=
"总积分 null表示无积分"
)
private
Integer
totalPoints
;
@ApiModelProperty
(
value
=
"小猪算账电签状态:0否,1是"
)
private
Integer
xzAuthStatus
;
@ApiModelProperty
(
value
=
"是否关注公众号"
)
private
Integer
subStatus
;
}
cms-common/cms-common-model/src/main/java/com/mmc/iuav/user/model/vo/WithdrawalInfoVO.java
0 → 100644
浏览文件 @
cb5118ae
package
com
.
mmc
.
iuav
.
user
.
model
.
vo
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
import
java.util.Date
;
/**
* @Author LW
* @date 2023/8/26 15:42
* 概要:
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public
class
WithdrawalInfoVO
implements
Serializable
{
public
final
static
String
AMT
=
"amt"
;
public
final
static
String
APPLY
=
"APPLY"
;
private
static
final
long
serialVersionUID
=
2535626170303302278L
;
@ApiModelProperty
(
value
=
"id"
)
private
Integer
id
;
@ApiModelProperty
(
value
=
"流水编号"
)
private
String
payNo
;
@ApiModelProperty
(
value
=
"操作方式"
)
private
Integer
payMethod
;
@ApiModelProperty
(
value
=
"佣金变动金额(正数入账,负数扣除)"
)
private
BigDecimal
salaryAmtPaid
;
@ApiModelProperty
(
value
=
"操作时间"
)
private
Date
payTime
;
@ApiModelProperty
(
value
=
"操作名称"
)
private
String
name
;
}
cms-common/cms-common-model/src/main/java/com/mmc/iuav/user/model/vo/WxMsgVO.java
浏览文件 @
cb5118ae
...
...
@@ -7,11 +7,9 @@ import lombok.Builder;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
org.apache.commons.lang.StringUtils
;
import
org.springframework.util.CollectionUtils
;
import
javax.validation.constraints.NotNull
;
import
java.io.Serializable
;
import
java.util.List
;
/**
* @author: zj
...
...
@@ -26,60 +24,41 @@ public class WxMsgVO implements Serializable {
@ApiModelProperty
(
value
=
"用户id-仅适用云享飞客户端"
)
private
Integer
userAccountId
;
@ApiModelProperty
(
value
=
"公众号的openId"
)
private
String
openId
;
private
String
touser
;
@ApiModelProperty
(
value
=
"unionId-全局通用"
)
private
String
unionId
;
@ApiModelProperty
(
value
=
"模板id"
)
@NotNull
(
message
=
"模板id不能为空"
)
private
String
templ
em
teId
;
private
String
templ
a
teId
;
@ApiModelProperty
(
value
=
"网页跳转连接"
)
private
String
url
;
@ApiModelProperty
(
value
=
"小程序APPID"
)
private
String
wxAppltAppId
;
private
String
wxAppl
e
tAppId
;
@ApiModelProperty
(
value
=
"小程序跳转连接"
)
private
String
appletPath
;
@ApiModelProperty
(
value
=
"标题"
)
private
MsgData
title
;
@ApiModelProperty
(
value
=
"消息数组"
)
private
List
<
MsgData
>
data
;
@ApiModelProperty
(
value
=
"消息备注"
)
private
MsgData
remark
;
@ApiModelProperty
(
value
=
"按照接口文档传数据"
)
private
JSONObject
dataObject
;
public
String
buildMsgJson
()
{
JSONObject
obj
=
new
JSONObject
();
obj
.
put
(
"touser"
,
this
.
openId
);
obj
.
put
(
"template_id"
,
this
.
templemteId
);
public
String
buildTemplateMsg
()
{
JSONObject
msg
=
new
JSONObject
();
msg
.
put
(
"touser"
,
this
.
touser
);
msg
.
put
(
"template_id"
,
this
.
templateId
);
// 跳转页面
if
(!
StringUtils
.
isBlank
(
this
.
url
))
{
obj
.
put
(
"url"
,
this
.
url
);
msg
.
put
(
"url"
,
this
.
url
);
}
if
(!
StringUtils
.
isBlank
(
this
.
wxAppltAppId
)
&&
!
StringUtils
.
isBlank
(
this
.
appletPath
))
{
// 跳转小程序页面设置
if
(!
StringUtils
.
isBlank
(
this
.
wxAppl
e
tAppId
)
&&
!
StringUtils
.
isBlank
(
this
.
appletPath
))
{
JSONObject
mini
=
new
JSONObject
();
mini
.
put
(
"appid"
,
this
.
wxAppltAppId
);
mini
.
put
(
"appid"
,
this
.
wxAppl
e
tAppId
);
mini
.
put
(
"pagepath"
,
this
.
appletPath
);
obj
.
put
(
"miniprogram"
,
mini
);
}
JSONObject
jd
=
new
JSONObject
();
jd
.
put
(
"first"
,
this
.
convertMsg
(
title
));
if
(!
CollectionUtils
.
isEmpty
(
this
.
data
))
{
for
(
int
i
=
0
;
i
<
data
.
size
();
i
++)
{
String
key
=
"keyword"
+
(
i
+
1
);
jd
.
put
(
key
,
this
.
convertMsg
(
data
.
get
(
i
)));
}
}
if
(
this
.
remark
!=
null
&&
!
StringUtils
.
isBlank
(
this
.
remark
.
getValue
()))
{
jd
.
put
(
"remark"
,
this
.
convertMsg
(
this
.
remark
));
msg
.
put
(
"miniprogram"
,
mini
);
}
obj
.
put
(
"data"
,
jd
);
return
obj
.
toJSONString
();
}
public
JSONObject
convertMsg
(
MsgData
msg
)
{
JSONObject
jb
=
new
JSONObject
();
jb
.
put
(
"value"
,
msg
.
getValue
());
jb
.
put
(
"color"
,
msg
.
getColor
());
return
jb
;
msg
.
put
(
"data"
,
this
.
dataObject
);
return
msg
.
toString
();
}
}
cms-common/cms-common-model/src/main/java/com/mmc/iuav/user/model/vo/XzAuthVO.java
0 → 100644
浏览文件 @
cb5118ae
package
com
.
mmc
.
iuav
.
user
.
model
.
vo
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
/**
* @author: zj
* @Date: 2023/8/21 13:40
*/
@Builder
@Data
@NoArgsConstructor
@AllArgsConstructor
public
class
XzAuthVO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
6009105206194794410L
;
@ApiModelProperty
(
value
=
"用户名称"
)
private
String
username
;
@ApiModelProperty
(
value
=
"身份证号"
)
private
String
idCardNo
;
@ApiModelProperty
(
value
=
"手机号码"
)
private
String
mobile
;
@ApiModelProperty
(
value
=
"附加信息,如需4要素认证必填"
)
private
String
bankAccount
;
@ApiModelProperty
(
value
=
"身份证照片人像面URL,图片必须已经通过OCR识别"
)
private
String
idCardImageFront
;
@ApiModelProperty
(
value
=
"身份证照片国徽面URL,图片必须已经通过OCR识别"
)
private
String
idCardImageBack
;
}
cms-common/cms-common-model/src/main/java/com/mmc/iuav/user/model/vo/XzWithdrawalVO.java
0 → 100644
浏览文件 @
cb5118ae
package
com
.
mmc
.
iuav
.
user
.
model
.
vo
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
/**
* @author: zj
* @Date: 2023/8/21 20:14
*/
@Builder
@Data
@NoArgsConstructor
@AllArgsConstructor
public
class
XzWithdrawalVO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
8758847907824399671L
;
@ApiModelProperty
(
value
=
"用户id"
)
private
Integer
userAccountId
;
@ApiModelProperty
(
value
=
"回调地址"
)
private
String
notifyUrl
;
@ApiModelProperty
(
value
=
"税源地id"
)
private
String
taxFundId
;
@ApiModelProperty
(
value
=
"提现月份"
)
private
String
month
;
@ApiModelProperty
(
value
=
"商户业务流水号(商户自行生成,全局唯一)"
)
private
String
outerTradeNo
;
@ApiModelProperty
(
value
=
"自定义员工编号(商户系统中用户唯一编号)"
)
private
String
empNum
;
@ApiModelProperty
(
value
=
"收款人户名"
)
private
String
empName
;
@ApiModelProperty
(
value
=
"收款人手机号"
)
private
String
empPhone
;
@ApiModelProperty
(
value
=
"收款人证件类型:ID_CARD"
)
private
String
licenseType
;
@ApiModelProperty
(
value
=
"收款人证件号码"
)
private
String
licenseId
;
@ApiModelProperty
(
value
=
"交易类型(bankcard:银行卡,alipay:支付宝,wechatpay:微信)"
)
private
String
settleType
;
@ApiModelProperty
(
value
=
"收款账号,交易类型为支付宝时,为支付宝账号;交易类型为微信时,填收款用户的openid"
)
private
String
payAccount
;
@ApiModelProperty
(
value
=
"收款人银行名称 (无需细到支行名称)"
)
private
String
bankName
;
@ApiModelProperty
(
value
=
"服务类型,测试:销售推广;正式:市场推广"
)
private
String
positionName
;
@ApiModelProperty
(
value
=
"交易金额(实际到账金额, 单位元,精确两位小数 )"
)
private
Double
payAmount
;
@ApiModelProperty
(
value
=
"业务备注说明:若需要对每笔提现区分业务来源,可自行定义,后续可在SaaS后台查看,与用户到账说明无关(不能超过10个字)"
)
private
String
remarks
;
@ApiModelProperty
(
value
=
"银行摘要备注(可在收款行交易明细中查看到"
)
private
String
bankRemo
;
@ApiModelProperty
(
value
=
"商户自己的微信APPID,交易类型为微信时,必填"
)
private
String
wechatAppId
;
}
cms-common/cms-common-model/src/main/java/com/mmc/iuav/user/model/vo/wallet/ApplyWithdrawalVO.java
0 → 100644
浏览文件 @
cb5118ae
package
com
.
mmc
.
iuav
.
user
.
model
.
vo
.
wallet
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
/**
* @author: lw
* @Date: 2023/8/25 10:25
*/
@Builder
@Data
@NoArgsConstructor
@AllArgsConstructor
public
class
ApplyWithdrawalVO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
8677383830415176214L
;
@ApiModelProperty
(
value
=
"用户id"
)
private
Integer
userAccountId
;
@ApiModelProperty
(
value
=
"户名"
)
private
String
empName
;
@ApiModelProperty
(
value
=
"手机号"
)
private
String
empPhone
;
@ApiModelProperty
(
value
=
"交易类型(bankcard:银行卡,alipay:支付宝,wechatpay:微信)"
,
required
=
true
)
private
String
settleType
;
@ApiModelProperty
(
value
=
"收款账号,交易类型为支付宝时,为支付宝账号;交易类型为微信时,填收款用户的openid"
,
required
=
true
)
private
String
payAccount
;
@ApiModelProperty
(
value
=
"收款人银行名称 (无需细到支行名称)"
)
private
String
bankName
;
@ApiModelProperty
(
value
=
"服务类型,测试:销售推广;正式:市场推广"
,
required
=
true
)
private
String
positionName
;
@ApiModelProperty
(
value
=
"交易金额(实际到账金额, 单位元,精确两位小数 )"
,
required
=
true
)
private
BigDecimal
payAmount
;
}
cms-common/cms-common-model/src/main/java/com/mmc/iuav/user/model/vo/wallet/FlyerWalletFlowVO.java
0 → 100644
浏览文件 @
cb5118ae
package
com
.
mmc
.
iuav
.
user
.
model
.
vo
.
wallet
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.math.BigDecimal
;
import
java.util.Date
;
/**
* @author 23214
* 飞手方钱包记录
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
FlyerWalletFlowVO
{
@ApiModelProperty
(
value
=
"用户ID"
)
private
Integer
userAccountId
;
@ApiModelProperty
(
value
=
"支付方式 100(订单发布) 200(无人接单取消订单)300(有人接单取消订单)400(飞手抢单)500(客服判定飞手无责取消订单)600(飞手有责取消订单)700(正常结算)800(修改订单金额状态)900(飞手未确认修改金额状态)1000(飞手确认修改金额状态)"
)
private
Integer
modeOfPayment
;
@ApiModelProperty
(
value
=
"云享金(需要正负)"
)
private
BigDecimal
cashAmount
;
@ApiModelProperty
(
value
=
"佣金(需要正负)"
)
private
BigDecimal
salaryAmount
;
@ApiModelProperty
(
value
=
"支付时间"
)
private
Date
timeOfPayment
;
@ApiModelProperty
(
value
=
"操作者用户id"
)
private
Integer
operateUserAccountId
;
@ApiModelProperty
(
value
=
"云享金违约金(需要正负)"
)
private
BigDecimal
yxjCashPledge
;
@ApiModelProperty
(
value
=
"佣金违约金(需要正负)"
)
private
BigDecimal
salaryCashPledge
;
@ApiModelProperty
(
value
=
"订单的百分比违约金(这笔钱是给发布方的)"
)
private
BigDecimal
percentagePenaltyOfOrder
;
}
\ No newline at end of file
cms-common/cms-common-model/src/main/java/com/mmc/iuav/user/model/vo/wallet/PublisherWalletFlowVO.java
0 → 100644
浏览文件 @
cb5118ae
package
com
.
mmc
.
iuav
.
user
.
model
.
vo
.
wallet
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.math.BigDecimal
;
import
java.util.Date
;
/**
* @author 23214
* 发布方钱包记录
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
PublisherWalletFlowVO
{
@ApiModelProperty
(
value
=
"用户ID"
)
private
Integer
userAccountId
;
@ApiModelProperty
(
value
=
"支付方式 100(订单发布) 200(无人接单取消订单)300(有人接单取消订单)400(飞手抢单)500(客服判定飞手无责取消订单)"
+
"600(飞手有责取消订单)700(正常结算)800(修改订单金额状态)900(飞手未确认修改金额状态)1000(飞手确认修改金额状态)"
)
private
Integer
modeOfPayment
;
@ApiModelProperty
(
value
=
"云享金(需要正负)注:结算时修改金额如果大于原订单,需要支付的云享金,也传这个字段"
)
private
BigDecimal
cashAmount
;
@ApiModelProperty
(
value
=
"佣金(需要正负)注:结算时修改金额如果大于原订单,需要支付的佣金,也传这个字段"
)
private
BigDecimal
salaryAmount
;
@ApiModelProperty
(
value
=
"支付时间"
)
private
Date
timeOfPayment
;
@ApiModelProperty
(
value
=
"操作者用户id"
)
private
Integer
operateUserAccountId
;
@ApiModelProperty
(
value
=
"云享金违约金(需要正负)"
)
private
BigDecimal
yxjCashPledge
;
@ApiModelProperty
(
value
=
"佣金违约金(需要正负)"
)
private
BigDecimal
salaryCashPledge
;
@ApiModelProperty
(
value
=
"订单的百分比违约金(这笔钱是给飞手的) (需要正负)"
)
private
BigDecimal
percentagePenaltyOfOrder
;
@ApiModelProperty
(
value
=
"加急单云享金金额 (需要正负)"
)
private
BigDecimal
urgentYxjAmount
;
@ApiModelProperty
(
value
=
"加急单佣金金额 (需要正负)"
)
private
BigDecimal
urgentSalaryAmount
;
@ApiModelProperty
(
value
=
"置顶单云享金金额 (需要正负)"
)
private
BigDecimal
topYxjAmount
;
@ApiModelProperty
(
value
=
"置顶单佣金金额 (需要正负)"
)
private
BigDecimal
topSalaryAmount
;
@ApiModelProperty
(
value
=
"飞手应得订单金额 (正数)"
)
private
BigDecimal
flyerSalaryAmount
;
@ApiModelProperty
(
value
=
"修改后金额(注:①飞手未确认时,后面支付的需要退的佣金那部分钱 ②飞手确认时,修改后的金额小于原佣金,需要退多余的佣金那部分钱 ③如果全部是微信支付的则不用传值)"
)
private
BigDecimal
refundSalaryAmount
;
@ApiModelProperty
(
value
=
"修改后金额(注:①飞手未确认时,后面支付的需要退的云享金那部分钱 ②飞手确认时,修改后的金额小于原佣金,需要退多余的云享金那部分钱 ③如果全部是微信支付的则不用传值)"
)
private
BigDecimal
refundCashAmount
;
}
\ No newline at end of file
cms-common/cms-common-model/src/main/java/com/mmc/iuav/user/model/vo/wallet/TopUpOrderVO.java
0 → 100644
浏览文件 @
cb5118ae
package
com
.
mmc
.
iuav
.
user
.
model
.
vo
.
wallet
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
/**
* @Author LW
* @date 2023/8/23 13:37
* 概要:
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public
class
TopUpOrderVO
{
@ApiModelProperty
(
value
=
"支付用户的openid"
)
private
String
openid
;
@ApiModelProperty
(
value
=
"订单编号"
)
private
String
orderNo
;
@ApiModelProperty
(
value
=
"金额(分)"
)
private
Integer
amount
;
@ApiModelProperty
(
value
=
"订单状态"
)
private
String
tradeState
;
@ApiModelProperty
(
value
=
"交易状态描述"
)
private
String
tradeStateDesc
;
}
cms-common/cms-common-model/src/main/java/com/mmc/iuav/user/model/vo/wallet/WalletFlowVO.java
0 → 100644
浏览文件 @
cb5118ae
package
com
.
mmc
.
iuav
.
user
.
model
.
vo
.
wallet
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
/**
* @Author LW
* @date 2023/8/21 17:59
* 概要:
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public
class
WalletFlowVO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
8848411142632397203L
;
private
PublisherWalletFlowVO
publisherWalletFlowVO
;
private
FlyerWalletFlowVO
flyerWalletFlowVO
;
}
cms-common/cms-common-util/src/main/java/com/mmc/iuav/response/ResultEnum.java
浏览文件 @
cb5118ae
...
...
@@ -9,6 +9,8 @@ public enum ResultEnum implements BaseErrorInfoInterface {
BODY_NOT_MATCH
(
"400"
,
"请求的数据格式不符"
),
FAIL
(
"500"
,
"fail"
),
PARAM_ERROR
(
"400"
,
"参数错误"
),
REQUEST_PARAM_ILLEGAL_ERROR
(
"706"
,
"请求参数非法"
),
NOT_FOUND
(
"404"
,
"未找到该资源!"
),
//企业认证
BUSINESS_LICENSE_CHECK_ANALYSIS_ERROR
(
"1000"
,
"营业执照解析失败,请上传有效清晰的执照"
),
...
...
@@ -82,7 +84,12 @@ public enum ResultEnum implements BaseErrorInfoInterface {
WX_NOT_SEND_MSG_PARAM_ERROR
(
"5029"
,
"userId和openId至少一个不为空"
),
APPLET_USER_ACCESS_TOKE_ERROR
(
"5031"
,
"获取accessToken签名校验失败"
),
WX_NOT_REL_ERROR
(
"5028"
,
"获取微信公众号用户信息失败"
),
DELETE_PASS_ERROR
(
"5029"
,
"已通过认证的不可删除"
);
DELETE_PASS_ERROR
(
"5029"
,
"已通过认证的不可删除"
),
// 提现相关
WITHDRAWAL_APPLY_STATUS_ERROR
(
"40001"
,
"审批状态有误"
),
WITHDRAWAL_INFO_NOT_FIND_ERROR
(
"40002"
,
"提现申请单信息不存在"
),
WITHDRAWAL_REPEAT_CHECK_ERROR
(
"40003"
,
"提现申请单已被审批,切勿重复审批。"
);
/**
* 错误码
...
...
csm-service/cms-service-user/pom.xml
浏览文件 @
cb5118ae
...
...
@@ -85,6 +85,28 @@
<version>
2.0.5
</version>
</dependency>
<dependency>
<groupId>
com.mmc.iuav.cms
</groupId>
<artifactId>
piggy-settlement
</artifactId>
<version>
1.0.0
</version>
<scope>
system
</scope>
<systemPath>
${project.basedir}/src/main/resources/lib/piggy-settlement-sdk-1.7.0.jar
</systemPath>
</dependency>
<dependency>
<groupId>
com.mmc.csf.fdd
</groupId>
<artifactId>
self-innovate
</artifactId>
<version>
1.0.0
</version>
<scope>
system
</scope>
<systemPath>
${basedir}/src/main/resources/lib/fdd-verify-process-1.8.5.jar
</systemPath>
</dependency>
<dependency>
<groupId>
cn.hutool
</groupId>
<artifactId>
hutool-all
</artifactId>
<version>
5.3.5
</version>
</dependency>
</dependencies>
<build>
...
...
@@ -92,6 +114,9 @@
<plugin>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-maven-plugin
</artifactId>
<configuration>
<includeSystemScope>
true
</includeSystemScope>
</configuration>
</plugin>
</plugins>
</build>
...
...
csm-service/cms-service-user/src/main/java/com/mmc/iuav/user/constant/UserSystemConstant.java
浏览文件 @
cb5118ae
...
...
@@ -37,4 +37,28 @@ public class UserSystemConstant {
@Value
(
"${third-party.qcc.secret-key}"
)
private
String
qccSecretKey
;
@Value
(
"${third-party.xzsz.appKey}"
)
private
String
xzAppKey
;
@Value
(
"${third-party.xzsz.appSecret}"
)
private
String
xzAppSecret
;
@Value
(
"${third-party.xzsz.aes}"
)
private
String
xzAes
;
@Value
(
"${third-party.xzsz.domain}"
)
private
String
xzDomain
;
@Value
(
"${third-party.xzsz.position}"
)
private
String
xzPosition
;
@Value
(
"${third-party.xzsz.taxFundId}"
)
private
String
taxFundId
;
@Value
(
"${third-party.xzsz.authNotify}"
)
private
String
authNotify
;
@Value
(
"${third-party.xzsz.withdrawNotify}"
)
private
String
withdrawNotify
;
}
csm-service/cms-service-user/src/main/java/com/mmc/iuav/user/constant/WxConstant.java
浏览文件 @
cb5118ae
package
com
.
mmc
.
iuav
.
user
.
constant
;
import
org.springframework.stereotype.Component
;
/**
* @author: zj
* @Date: 2023/5/16 16:02
...
...
@@ -20,6 +18,7 @@ public class WxConstant {
public
static
final
String
IUAV_MINI_PROGRAM_ACCESS_TOKEN
=
"IUAV_MINI_PROGRAM_ACCESS_TOKEN"
;
public
static
final
String
IUAV_MINI_PROGRAM_STABLE_ACCESS_TOKEN
=
"IUAV_MINI_PROGRAM_STABLE_ACCESS_TOKEN"
;
public
static
final
String
SHARE_FLY_SUB_ACCESS_TOKEN
=
"SHARE_FLY_SUB_ACCESS_TOKEN"
;
public
static
final
String
SHARE_FLY_SUB_STABLE_ACCESS_TOKEN
=
"SHARE_FLY_SUB_STABLE_ACCESS_TOKEN"
;
}
csm-service/cms-service-user/src/main/java/com/mmc/iuav/user/constant/fdd/FddConnectConstant.java
0 → 100644
浏览文件 @
cb5118ae
package
com
.
mmc
.
iuav
.
user
.
constant
.
fdd
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Component
;
/**
* @author:zhenjie Date:2022/7/16
* time:14:58
*/
@Component
public
class
FddConnectConstant
{
public
static
String
APP_ID
;
public
static
String
APP_KEY
;
public
static
String
VERSION
;
public
static
String
HOST
;
public
static
String
MMC_URL
;
public
FddConnectConstant
(
@Value
(
"${fdd.appid}"
)
String
appid
,
@Value
(
"${fdd.appkey}"
)
String
appkey
,
@Value
(
"${fdd.version}"
)
String
version
,
@Value
(
"${fdd.host}"
)
String
host
,
@Value
(
"${fdd.mmc-url}"
)
String
mmcUrl
)
{
APP_ID
=
appid
;
APP_KEY
=
appkey
;
VERSION
=
version
;
HOST
=
host
;
MMC_URL
=
mmcUrl
;
}
}
csm-service/cms-service-user/src/main/java/com/mmc/iuav/user/constant/fdd/FddConstant.java
0 → 100644
浏览文件 @
cb5118ae
package
com
.
mmc
.
iuav
.
user
.
constant
.
fdd
;
import
org.springframework.stereotype.Component
;
/**
* author:zhenjie
* Date:2022/7/22
* time:11:07
*/
@Component
public
class
FddConstant
{
public
static
final
String
CODE
=
"code"
;
public
static
final
String
DATA
=
"data"
;
public
static
final
String
SUCCESS
=
"1"
;
public
static
final
String
MSG
=
"msg"
;
public
static
final
String
SIGNATURE_ID
=
"signature_id"
;
public
static
final
String
UPLOAD_FILE
=
"uploadFile/"
;
//企业实名认证异步回调
// public static final String NOTIFY_E_CERT_RES = "fddservlet/fdd/notifyECertRes";
//企业实名认证同步回调
public
static
final
String
RETURN_E_CERT_RES
=
"fddservlet/fdd/returnECertRes"
;
//小程序企业实名认证异步回调
public
static
final
String
NOTIFY_E_CERT_RES
=
"fdd/notifyECertRes"
;
//签署合同异步回调
public
static
final
String
NOTIFY_STAMP
=
"fddservlet/contract/notifyStamp"
;
public
static
final
String
UAV_NOTIFY_STAMP
=
"fddservlet/uav/contract/notifyStamp"
;
public
static
final
String
APP_ID
=
"appId"
;
public
static
final
String
CUSTOMER_ID
=
"customerId"
;
public
static
final
String
STATUS
=
"status"
;
public
static
final
String
SERIAL_NO
=
"serialNo"
;
public
static
final
String
SIGN
=
"sign"
;
public
static
final
String
UID_REGEX
=
"[-|_]"
;
}
csm-service/cms-service-user/src/main/java/com/mmc/iuav/user/controller/WxController.java
浏览文件 @
cb5118ae
package
com
.
mmc
.
iuav
.
user
.
controller
;
import
com.mmc.iuav.response.ResultBody
;
import
com.mmc.iuav.user.model.vo.WxMsgVO
;
import
com.mmc.iuav.user.service.WxService
;
import
com.mmc.iuav.user.util.WxApiUtil
;
import
io.swagger.annotations.*
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
...
@@ -48,6 +50,21 @@ public class WxController extends BaseController {
return
ResultBody
.
success
(
wxService
.
createUrlLink
(
path
,
query
));
}
@ApiOperation
(
value
=
"验证服务器URL是否有效"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
String
.
class
)})
@GetMapping
(
"wxSendMessage"
)
public
void
checkService
(
@RequestParam
String
signature
,
@RequestParam
String
timestamp
,
@RequestParam
String
nonce
,
@RequestParam
String
echostr
,
HttpServletRequest
req
,
HttpServletResponse
resp
)
throws
IOException
{
req
.
setCharacterEncoding
(
"UTF-8"
);
resp
.
setCharacterEncoding
(
"UTF-8"
);
PrintWriter
out
=
resp
.
getWriter
();
System
.
out
.
println
(
"#############验证服务器URL是否有效-START--################"
);
boolean
bs
=
WxApiUtil
.
checkSignature
(
signature
,
timestamp
,
nonce
);
System
.
out
.
println
(
"输出:"
+
bs
+
"---"
+
echostr
);
System
.
out
.
println
(
"#############验证服务器URL是否有效-END--################"
);
out
.
println
(
bs
?
echostr
:
null
);
}
@ApiOperation
(
value
=
"监控微信公众号的事件变化通知"
,
hidden
=
true
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
String
.
class
)})
@PostMapping
(
"wxSendMessage"
)
...
...
@@ -60,10 +77,38 @@ public class WxController extends BaseController {
out
.
println
(
msg
);
}
@ApiOperation
(
value
=
"发送消息"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
String
.
class
)})
@PostMapping
(
"send"
)
public
ResultBody
send
(
@RequestBody
WxMsgVO
ws
)
{
return
wxService
.
sendSubTemplateMsg
(
ws
);
}
@ApiOperation
(
value
=
"生成小程序码"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
ResultBody
.
class
)})
@GetMapping
(
"getAppletQRCode"
)
public
ResultBody
getAppletQRCode
(
@ApiParam
(
value
=
"小程序路径"
,
example
=
"pages/welcome/index"
)
@RequestParam
String
page
,
@ApiParam
(
value
=
"参数"
,
example
=
"name=123&sex=456"
)
@RequestParam
String
scene
)
{
return
wxService
.
getUnLimitedQRCode
(
page
,
scene
);
}
@ApiOperation
(
value
=
"查询rid信息"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
ResultBody
.
class
)})
@GetMapping
(
"rid"
)
public
ResultBody
rid
(
@RequestParam
String
rid
)
throws
Exception
{
return
wxService
.
rid
(
rid
);
}
@ApiOperation
(
value
=
"同步微信公众号用户"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
ResultBody
.
class
)})
@GetMapping
(
"moveSubUserToTest"
)
public
ResultBody
moveSubUserToTest
()
{
return
wxService
.
moveSubUserToTest
();
}
@ApiOperation
(
value
=
"同步微信公众号用户unionId"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
ResultBody
.
class
)})
@GetMapping
(
"moveSubUserUnionIdToTest"
)
public
ResultBody
moveSubUserUnionIdToTest
()
{
return
wxService
.
moveSubUserUnionIdToTest
();
}
}
csm-service/cms-service-user/src/main/java/com/mmc/iuav/user/controller/fdd/UserFddAuthController.java
0 → 100644
浏览文件 @
cb5118ae
package
com
.
mmc
.
iuav
.
user
.
controller
.
fdd
;
import
com.mmc.iuav.response.ResultBody
;
import
com.mmc.iuav.user.controller.BaseController
;
import
com.mmc.iuav.user.model.fdd.dto.FddVerifyInfoDTO
;
import
com.mmc.iuav.user.model.fdd.dto.UserFddDTO
;
import
com.mmc.iuav.user.model.fdd.resp.CompanyVerifyResp
;
import
com.mmc.iuav.user.model.fdd.resp.PersonVerifyResp
;
import
com.mmc.iuav.user.service.fdd.UserFddAuthService
;
import
io.swagger.annotations.*
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
import
springfox.documentation.annotations.ApiIgnore
;
import
javax.servlet.http.HttpServletRequest
;
import
java.util.Map
;
/**
* @author:lw Date:2022/9/1
* time:15:44
*/
@Api
(
tags
=
{
"fdd用户认证"
})
@RestController
@RequestMapping
(
"/fdd/"
)
public
class
UserFddAuthController
extends
BaseController
{
@Autowired
private
UserFddAuthService
userFddAuthService
;
@ApiOperation
(
value
=
"注册法大大账号"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
String
.
class
)})
@ApiIgnore
@GetMapping
(
"register"
)
public
String
register
(
@ApiParam
(
value
=
"唯一标识当类型为1的时候传openid 当为2的时候传id"
)
@RequestParam
String
uid
,
@ApiParam
(
value
=
"账号类型 1个人 2企业"
)
@RequestParam
String
accountType
)
{
return
userFddAuthService
.
register
(
uid
,
accountType
);
}
@ApiOperation
(
value
=
"获取个人实名认证地址"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
PersonVerifyResp
.
class
)})
@GetMapping
(
"getPersonVerifyUrl"
)
public
ResultBody
getPersonVerifyUrl
(
HttpServletRequest
request
)
{
return
userFddAuthService
.
getPersonVerifyUrl
(
this
.
getUserLoginInfoFromRedis
(
request
).
getUserAccountId
());
}
@ApiOperation
(
value
=
"获取企业实名认证url"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
CompanyVerifyResp
.
class
)})
@GetMapping
(
"getCompanyVerifyUrl"
)
public
ResultBody
getCompanyVerifyUrl
(
@ApiParam
(
value
=
"端口:0小程序 1后台"
)
@RequestParam
Integer
port
,
HttpServletRequest
request
)
{
return
userFddAuthService
.
getCompanyVerifyUrl
(
port
,
this
.
getUserLoginInfoFromRedis
(
request
));
}
@ApiOperation
(
value
=
"异步处理企业实名认证"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
ResultBody
.
class
)})
@ApiIgnore
@PostMapping
(
"notifyECertRes"
)
public
ResultBody
notifyECertRes
(
@RequestParam
Map
<
String
,
String
>
map
)
{
return
userFddAuthService
.
notifyECertRes
(
map
);
}
@ApiOperation
(
value
=
"获取(企业/个人)实名认证信息"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
FddVerifyInfoDTO
.
class
)})
@GetMapping
(
"findCompanyCertInfo"
)
public
ResultBody
findCompanyCertInfo
(
@ApiParam
(
value
=
"端口:0小程序 1后台"
)
@RequestParam
Integer
port
,
@ApiParam
(
value
=
"企业:2 个人:1"
)
Integer
flag
,
HttpServletRequest
request
)
{
return
userFddAuthService
.
findCompanyCertInfo
(
port
,
flag
,
this
.
getUserLoginInfoFromRedis
(
request
));
}
@ApiOperation
(
value
=
"获取认证信息"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
UserFddDTO
.
class
)})
@GetMapping
(
"getAppUserFddInfo"
)
public
ResultBody
<
UserFddDTO
>
getAppUserFddInfo
(
@ApiParam
(
value
=
"端口:0小程序 1后台"
)
@RequestParam
Integer
port
,
HttpServletRequest
request
)
{
return
userFddAuthService
.
getAppUserFddInfo
(
port
,
this
.
getUserLoginInfoFromRedis
(
request
));
}
@ApiOperation
(
value
=
"通过uuid下载文件"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
ResultBody
.
class
)})
@GetMapping
(
"getFileByUuid"
)
public
ResultBody
getFileByUuid
(
@RequestParam
String
uuid
,
@RequestParam
(
required
=
false
)
String
docType
)
{
return
userFddAuthService
.
getFileByUuid
(
uuid
,
docType
);
}
}
csm-service/cms-service-user/src/main/java/com/mmc/iuav/user/controller/wallet/PayWalletController.java
浏览文件 @
cb5118ae
...
...
@@ -2,14 +2,14 @@ package com.mmc.iuav.user.controller.wallet;
import
com.mmc.iuav.response.ResultBody
;
import
com.mmc.iuav.user.controller.BaseController
;
import
com.mmc.iuav.user.entity.wallet.UserBillingDetailVO
;
import
com.mmc.iuav.user.model.dto.wallet.PayWalletDTO
;
import
com.mmc.iuav.user.model.qo.wallet.WalletFlowQO
;
import
com.mmc.iuav.user.model.vo.wallet.TopUpOrderVO
;
import
com.mmc.iuav.user.model.vo.wallet.WalletFlowVO
;
import
com.mmc.iuav.user.service.wallet.PayWalletService
;
import
io.swagger.annotations.*
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RestController
;
import
springfox.documentation.annotations.ApiIgnore
;
import
org.springframework.web.bind.annotation.*
;
import
javax.annotation.Resource
;
import
javax.servlet.http.HttpServletRequest
;
...
...
@@ -30,24 +30,51 @@ public class PayWalletController extends BaseController {
@ApiOperation
(
value
=
"获取当前用户消费(钱包)信息"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
PayWalletDTO
.
class
)})
@GetMapping
(
"getCurrentUserPayWalletInfo"
)
public
ResultBody
getCurrentUserPayWalletInfo
(
HttpServletRequest
request
)
{
public
ResultBody
<
PayWalletDTO
>
getCurrentUserPayWalletInfo
(
HttpServletRequest
request
)
{
return
payWalletService
.
getPayWalletInfo
(
this
.
getUserLoginInfoFromRedis
(
request
).
getUserAccountId
());
}
@ApiOperation
(
value
=
"获取用户消费(钱包)信息"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
PayWalletDTO
.
class
)})
@GetMapping
(
"getPayWalletInfo"
)
public
ResultBody
getPayWalletInfo
(
public
ResultBody
<
PayWalletDTO
>
getPayWalletInfo
(
@ApiParam
(
value
=
"用户userAccountId"
,
required
=
true
)
@RequestParam
Integer
userAccountId
)
{
return
ResultBody
.
success
(
payWalletService
.
getPayWalletInfo
(
userAccountId
));
}
@ApiOperation
(
value
=
"feign-
初始化钱包
"
)
@ApiOperation
(
value
=
"feign-
云享金充值增加金额
"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
ResultBody
.
class
)})
@ApiIgnore
@GetMapping
(
"feignInitPayWallet"
)
public
ResultBody
feignInitPayWallet
(
@RequestParam
Integer
userAccountId
)
{
return
payWalletService
.
initPayWallet
(
userAccountId
);
@PostMapping
(
"feignTopUpCash"
)
public
ResultBody
feignTopUpCash
(
@RequestBody
TopUpOrderVO
topUpOrderVO
)
{
return
payWalletService
.
feignTopUpCash
(
topUpOrderVO
);
}
@ApiOperation
(
value
=
"feign-钱包流水记录"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
ResultBody
.
class
)})
@PostMapping
(
"feignWalletFlow"
)
public
ResultBody
feignWalletFlow
(
@RequestBody
WalletFlowVO
walletFlowVO
)
{
return
payWalletService
.
feignWalletFlow
(
walletFlowVO
);
}
@ApiOperation
(
value
=
"feign-钱包流水记录不带token"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
ResultBody
.
class
)})
@PostMapping
(
"feignWalletFlowNO"
)
public
ResultBody
feignWalletFlowNO
(
@RequestBody
WalletFlowVO
walletFlowVO
)
{
return
payWalletService
.
feignWalletFlow
(
walletFlowVO
);
}
@ApiOperation
(
value
=
"用户账单明细"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
UserBillingDetailVO
.
class
)})
@PostMapping
(
"customerBillingDetail"
)
public
ResultBody
<
UserBillingDetailVO
>
customerBillingDetail
(
HttpServletRequest
request
,
@RequestBody
WalletFlowQO
walletFlowQO
)
{
return
payWalletService
.
customerBillingDetail
(
this
.
getUserLoginInfoFromRedis
(
request
).
getUserAccountId
(),
walletFlowQO
);
}
@ApiOperation
(
value
=
"账单详情"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
UserBillingDetailVO
.
class
)})
@GetMapping
(
"billingDetails"
)
public
ResultBody
<
UserBillingDetailVO
>
billingDetails
(
@ApiParam
(
value
=
"ID"
,
required
=
true
)
@RequestParam
Integer
id
,
@ApiParam
(
value
=
"详情类型"
,
required
=
true
)
@RequestParam
String
detailType
)
{
return
payWalletService
.
billingDetails
(
id
,
detailType
);
}
}
csm-service/cms-service-user/src/main/java/com/mmc/iuav/user/controller/wallet/WithdrawalController.java
0 → 100644
浏览文件 @
cb5118ae
package
com
.
mmc
.
iuav
.
user
.
controller
.
wallet
;
import
com.mmc.iuav.response.ResultBody
;
import
com.mmc.iuav.user.controller.BaseController
;
import
com.mmc.iuav.user.entity.wallet.UserBillingDetailVO
;
import
com.mmc.iuav.user.model.dto.wallet.WithdrawalApplyDTO
;
import
com.mmc.iuav.user.model.qo.wallet.WalletFlowQO
;
import
com.mmc.iuav.user.model.qo.wallet.WithdrawalApplyQO
;
import
com.mmc.iuav.user.model.vo.wallet.ApplyWithdrawalVO
;
import
com.mmc.iuav.user.service.xzsz.WithdrawalService
;
import
io.swagger.annotations.*
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
import
javax.servlet.http.HttpServletRequest
;
/**
* @author: zj
* @Date: 2023/8/23 15:58
*/
@Slf4j
@Api
(
tags
=
"提现相关"
)
@RequestMapping
(
"/withdrawal/"
)
@RestController
public
class
WithdrawalController
extends
BaseController
{
@Autowired
private
WithdrawalService
withdrawalService
;
@ApiOperation
(
value
=
"提现申请"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
ResultBody
.
class
)})
@PostMapping
(
"apply"
)
public
ResultBody
apply
(
@RequestBody
ApplyWithdrawalVO
applyWithdrawalVO
,
HttpServletRequest
request
)
{
return
withdrawalService
.
apply
(
applyWithdrawalVO
,
this
.
getUserLoginInfoFromRedis
(
request
).
getUserAccountId
());
}
// @ApiOperation(value = "个人提现明细列表-V1")
// @ApiResponses({@ApiResponse(code = 200, message = "OK", response = UserBillingDetailVO.class)})
// @PostMapping("withdrawalList")
// public ResultBody<UserBillingDetailVO> withdrawalList(HttpServletRequest request, @RequestBody WalletFlowQO walletFlowQO) {
// return withdrawalService.withdrawalList(this.getUserLoginInfoFromRedis(request).getUserAccountId(), walletFlowQO);
// }
@ApiOperation
(
value
=
"个人提现明细列表"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
UserBillingDetailVO
.
class
)})
@PostMapping
(
"withdrawalList"
)
public
ResultBody
<
UserBillingDetailVO
>
withdrawalList
(
HttpServletRequest
request
,
@RequestBody
WalletFlowQO
walletFlowQO
)
{
return
withdrawalService
.
withdrawalList
(
this
.
getUserLoginInfoFromRedis
(
request
).
getUserAccountId
(),
walletFlowQO
);
}
@ApiOperation
(
value
=
"PC端-提现管理-分页查询"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
WithdrawalApplyDTO
.
class
)})
@PostMapping
(
"listPageWithdrawalApply"
)
public
ResultBody
<
WithdrawalApplyDTO
>
listPageWithdrawalApply
(
@ApiParam
(
value
=
"提现管理查询QO"
,
required
=
true
)
@RequestBody
WithdrawalApplyQO
param
)
{
return
ResultBody
.
success
(
withdrawalService
.
listPageWithdrawalApply
(
param
));
}
@ApiOperation
(
value
=
"PC端-提现管理-审批"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
ResultBody
.
class
)})
@GetMapping
(
"approveWithdrawalApply"
)
public
ResultBody
approveWithdrawalApply
(
@ApiParam
(
value
=
"申请单ID"
,
required
=
true
)
@RequestParam
Integer
id
,
@ApiParam
(
value
=
"状态: 0提现申请中 1审批通过 2审批未通过"
,
required
=
true
)
@RequestParam
Integer
applyStatus
,
@ApiParam
(
value
=
"备注"
)
String
remark
,
HttpServletRequest
request
)
{
return
ResultBody
.
success
(
withdrawalService
.
approveWithdrawalApply
(
id
,
applyStatus
,
this
.
getUserLoginInfoFromRedis
(
request
).
getUserAccountId
(),
remark
));
}
}
csm-service/cms-service-user/src/main/java/com/mmc/iuav/user/controller/xzsz/XzController.java
0 → 100644
浏览文件 @
cb5118ae
package
com
.
mmc
.
iuav
.
user
.
controller
.
xzsz
;
import
cn.hutool.json.JSONObject
;
import
com.mmc.iuav.response.ResultBody
;
import
com.mmc.iuav.user.controller.BaseController
;
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
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiResponse
;
import
io.swagger.annotations.ApiResponses
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
import
javax.servlet.http.HttpServletRequest
;
/**
* @author: zj
* @Date: 2023/8/20 14:01
*/
@Slf4j
@Api
(
tags
=
"小猪算账api"
)
@RequestMapping
(
"/xz/"
)
@RestController
public
class
XzController
extends
BaseController
{
@Autowired
private
XzService
xzService
;
@ApiOperation
(
value
=
"税源地公司信息查询-V2"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
ResultBody
.
class
)})
@PostMapping
(
"getTaxFundList"
)
public
ResultBody
getTaxFundList
()
{
return
xzService
.
getTaxFundList
();
}
@ApiOperation
(
value
=
"资金池汇总余额查询-V2"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
ResultBody
.
class
)})
@PostMapping
(
"getCashPooling"
)
public
ResultBody
getCashPooling
()
{
return
xzService
.
getCashPooling
();
}
@ApiOperation
(
value
=
"查询税源地可用资金-V2"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
ResultBody
.
class
)})
@PostMapping
(
"getUsableCashPooling"
)
public
ResultBody
getUsableCashPooling
()
{
return
ResultBody
.
success
(
xzService
.
getUsableCashPooling
());
}
@ApiOperation
(
value
=
"签约状态查询"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
ResultBody
.
class
)})
@PostMapping
(
"getContractScope"
)
public
ResultBody
getContractScope
(
@RequestBody
XzAuthVO
xzAuthVO
)
{
return
ResultBody
.
success
(
xzService
.
getContractScope
(
xzAuthVO
));
}
@ApiOperation
(
value
=
"发起合同签署"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
ResultBody
.
class
)})
@PostMapping
(
"hasKeyByUrl"
)
public
ResultBody
hasKeyByUrl
(
HttpServletRequest
request
)
{
return
ResultBody
.
success
(
xzService
.
hasKeyByUrl
(
this
.
getUserLoginInfoFromRedis
(
request
)));
}
@ApiOperation
(
value
=
"查询签署结果"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
ResultBody
.
class
)})
@PostMapping
(
"getSignedResult"
)
public
ResultBody
getSignedResult
(
@RequestBody
XzAuthVO
xzAuthVO
)
{
return
ResultBody
.
success
(
com
.
alibaba
.
fastjson2
.
JSONObject
.
toJSONString
(
xzService
.
getSignedResult
(
xzAuthVO
)));
}
@ApiOperation
(
value
=
"在线浏览合同"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
ResultBody
.
class
)})
@GetMapping
(
"viewContract"
)
public
ResultBody
viewContract
(
@RequestParam
String
documentId
)
{
return
ResultBody
.
success
(
xzService
.
viewContract
(
documentId
));
}
@ApiOperation
(
value
=
"刷脸数据删除"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
ResultBody
.
class
)})
@GetMapping
(
"clearTestFace"
)
public
ResultBody
clearTestFace
(
@RequestParam
String
name
,
@RequestParam
String
idCard
)
{
return
xzService
.
clearTestFace
(
name
,
idCard
);
}
@ApiOperation
(
value
=
"特殊单笔提现上报"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
ResultBody
.
class
)})
@PostMapping
(
"singleSubmitLimit"
)
public
ResultBody
singleSubmitLimit
(
@RequestBody
XzWithdrawalVO
xzWithdrawalVO
)
{
return
ResultBody
.
success
(
xzService
.
singleSubmitLimit
(
xzWithdrawalVO
));
}
@ApiOperation
(
value
=
"单笔提现上报"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
ResultBody
.
class
)})
@PostMapping
(
"singleSubmit"
)
public
ResultBody
singleSubmit
(
@RequestBody
XzWithdrawalVO
xzWithdrawalVO
)
{
return
ResultBody
.
success
(
xzService
.
singleSubmit
(
xzWithdrawalVO
));
}
@ApiOperation
(
value
=
"查询提现结果"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
ResultBody
.
class
)})
@GetMapping
(
"querySingleTrade"
)
public
ResultBody
querySingleTrade
(
@RequestParam
String
outerTradeNo
)
{
return
ResultBody
.
success
(
xzService
.
querySingleTrade
(
outerTradeNo
));
}
@ApiOperation
(
value
=
"查询单笔交易回单"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
ResultBody
.
class
)})
@GetMapping
(
"querySingleReceipt"
)
public
ResultBody
querySingleReceipt
(
@RequestParam
String
frontLogNo
)
{
return
xzService
.
querySingleReceipt
(
frontLogNo
);
}
@ApiOperation
(
value
=
"签署结果回调"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
ResultBody
.
class
)})
@PostMapping
(
"xzAuthNotify"
)
public
String
xzAuthNotify
(
@RequestBody
JSONObject
notify
)
{
return
xzService
.
xzAuthNotify
(
notify
);
}
@ApiOperation
(
value
=
"回调通知(单笔)"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
ResultBody
.
class
)})
@PostMapping
(
"xzWithdrawNotify"
)
public
String
xzWithdrawNotify
(
@RequestBody
JSONObject
notify
)
{
return
xzService
.
xzWithdrawNotify
(
notify
);
}
}
csm-service/cms-service-user/src/main/java/com/mmc/iuav/user/dao/UserServiceDao.java
浏览文件 @
cb5118ae
...
...
@@ -165,4 +165,7 @@ public interface UserServiceDao {
* @return
*/
List
<
UserAccountDO
>
getUserAccountByPhoneNum
(
String
phoneNum
);
UserAccountDO
getUserAccountInfoByOpenId
(
String
openid
);
}
csm-service/cms-service-user/src/main/java/com/mmc/iuav/user/dao/fdd/UserFddAuthDao.java
0 → 100644
浏览文件 @
cb5118ae
package
com
.
mmc
.
iuav
.
user
.
dao
.
fdd
;
import
com.mmc.iuav.user.entity.fdd.FddVerifyInfoDO
;
import
com.mmc.iuav.user.entity.fdd.UserFddDO
;
import
org.apache.ibatis.annotations.Mapper
;
/**
* author:zhenjie
* Date:2022/9/1
* time:15:46
*/
@Mapper
public
interface
UserFddAuthDao
{
UserFddDO
checkRegisterFdd
(
String
unionId
,
Integer
flag
);
void
insertAppUserFdd
(
UserFddDO
userFddDO
);
FddVerifyInfoDO
getVerifyUrl
(
String
customerId
);
void
insertVerifyInfo
(
FddVerifyInfoDO
verifyInfoDO1
);
void
updateCompanyCertStatus
(
String
customerId
,
String
status
);
UserFddDO
getAppUserFddInfo
(
String
unionId
);
// void insertAppUserFdd(UserFddDO appUserFddDO1);
//
// AppEVerifyInfoDO getCompanyVerifyUrl(String customerId);
//
// void insertAppEVerifyInfo(AppEVerifyInfoDO appEVerifyInfoDO1);
//
// void updateCompanyCertStatus(String customerId, String status);
//
//
// List<UserFddDO> feignGetAppUserFddInfo(List<String> unionIds);
//
// UserFddDO getAppUserFddInfoByCustomerId(String customerId);
}
csm-service/cms-service-user/src/main/java/com/mmc/iuav/user/dao/wallet/PayWalletDao.java
浏览文件 @
cb5118ae
package
com
.
mmc
.
iuav
.
user
.
dao
.
wallet
;
import
com.mmc.iuav.user.entity.XzWithdrawalApplyDO
;
import
com.mmc.iuav.user.entity.wallet.PayLogDO
;
import
com.mmc.iuav.user.entity.wallet.PayWalletDO
;
import
com.mmc.iuav.user.entity.wallet.WithdrawalLogDO
;
import
com.mmc.iuav.user.model.qo.wallet.WalletFlowQO
;
import
com.mmc.iuav.user.model.qo.wallet.WithdrawalApplyQO
;
import
org.apache.ibatis.annotations.Mapper
;
import
org.apache.ibatis.annotations.Param
;
import
java.util.List
;
/**
* @Author LW
...
...
@@ -13,4 +21,30 @@ public interface PayWalletDao {
PayWalletDO
getPayWalletByUser
(
Integer
userAccountId
);
void
insertPayWalletInfo
(
PayWalletDO
wallet
);
void
insertPayLogDO
(
PayLogDO
payWalletDO
);
int
updatePayWallet
(
PayWalletDO
updatePayWallet
);
List
<
PayLogDO
>
getPayLog
(
WalletFlowQO
param
);
int
countPayLog
(
WalletFlowQO
param
);
PayLogDO
getPayLogById
(
Integer
id
);
void
insertWithdrawalLog
(
WithdrawalLogDO
withdrawalLogDO
);
List
<
XzWithdrawalApplyDO
>
getWithdrawalListByUserAccountId
(
WalletFlowQO
param
);
XzWithdrawalApplyDO
getWithdrawalApplyByIdOrOuterTradeNo
(
@Param
(
value
=
"id"
)
Integer
id
,
@Param
(
value
=
"outerTradeNo"
)
String
outerTradeNo
);
List
<
WithdrawalLogDO
>
listPayWithdrawalLog
(
Integer
id
);
int
countPayWithdrawalLog
(
WalletFlowQO
param
);
int
countWithdrawalApply
(
WithdrawalApplyQO
param
);
List
<
XzWithdrawalApplyDO
>
listPageWithdrawalApply
(
WithdrawalApplyQO
param
);
int
updateWithdrawalApply
(
XzWithdrawalApplyDO
apply
);
}
csm-service/cms-service-user/src/main/java/com/mmc/iuav/user/dao/xzsz/WithdrawalDao.java
0 → 100644
浏览文件 @
cb5118ae
package
com
.
mmc
.
iuav
.
user
.
dao
.
xzsz
;
import
com.mmc.iuav.user.entity.XzWithdrawalApplyDO
;
import
org.apache.ibatis.annotations.Mapper
;
/**
* @author: zj
* @Date: 2023/8/23 16:10
*/
@Mapper
public
interface
WithdrawalDao
{
void
insertWithdrawalApply
(
XzWithdrawalApplyDO
xzWithdrawalApplyDO
);
}
csm-service/cms-service-user/src/main/java/com/mmc/iuav/user/dao/xzsz/XzDao.java
0 → 100644
浏览文件 @
cb5118ae
package
com
.
mmc
.
iuav
.
user
.
dao
.
xzsz
;
import
com.mmc.iuav.user.entity.XzAuthDO
;
import
org.apache.ibatis.annotations.Mapper
;
/**
* @author: zj
* @Date: 2023/8/21 16:24
*/
@Mapper
public
interface
XzDao
{
int
addAuth
(
XzAuthDO
authDO
);
XzAuthDO
getXzAuthByUserAccountId
(
Integer
userAccountId
);
}
csm-service/cms-service-user/src/main/java/com/mmc/iuav/user/entity/UserAccountDO.java
浏览文件 @
cb5118ae
...
...
@@ -44,6 +44,8 @@ public class UserAccountDO implements Serializable {
private
Integer
cityCode
;
private
Integer
districtCode
;
private
Integer
xzAuthStatus
;
private
Integer
companyAuthStatus
;
private
String
companyName
;
private
Integer
leader
;
...
...
@@ -111,6 +113,7 @@ public class UserAccountDO implements Serializable {
.
userRcdVO
(
this
.
userRcdDO
==
null
?
null
:
this
.
userRcdDO
.
buildUserRcdVO
())
.
leader
(
this
.
leader
)
.
realNameAuthStatus
(
this
.
realNameAuthStatus
)
.
xzAuthStatus
(
this
.
xzAuthStatus
)
.
auditStatus
(
this
.
auditStatus
)
.
totalPoints
(
this
.
totalPoints
)
.
build
();
...
...
csm-service/cms-service-user/src/main/java/com/mmc/iuav/user/entity/XzAuthDO.java
0 → 100644
浏览文件 @
cb5118ae
package
com
.
mmc
.
iuav
.
user
.
entity
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
import
java.util.Date
;
/**
* @author: zj
* @Date: 2023/8/21 15:50
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public
class
XzAuthDO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
48590767645438311L
;
private
Integer
id
;
private
Integer
userAccountId
;
private
String
name
;
private
String
idCardNo
;
private
String
mobile
;
private
String
bankAccount
;
private
String
subsidiary_name
;
private
String
document_id
;
private
String
customParams
;
private
String
contract_url
;
private
Integer
deleted
;
private
Date
create_time
;
private
Integer
xzAuthStatus
;
}
csm-service/cms-service-user/src/main/java/com/mmc/iuav/user/entity/XzWithdrawalApplyDO.java
0 → 100644
浏览文件 @
cb5118ae
package
com
.
mmc
.
iuav
.
user
.
entity
;
import
com.mmc.iuav.user.entity.wallet.UserBillingDetailVO
;
import
com.mmc.iuav.user.enums.SettleTypeEnum
;
import
com.mmc.iuav.user.enums.XzEnums
;
import
com.mmc.iuav.user.model.dto.wallet.WithdrawalApplyDTO
;
import
com.mmc.iuav.user.model.vo.XzWithdrawalVO
;
import
com.mmc.iuav.user.model.vo.wallet.ApplyWithdrawalVO
;
import
com.mmc.iuav.user.util.PrivacyUtil
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
import
java.util.Date
;
/**
* @author: zj
* @Date: 2023/8/23 16:17
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public
class
XzWithdrawalApplyDO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
7891653696372539753L
;
private
Integer
id
;
private
Integer
userAccountId
;
private
Integer
applyStatus
;
private
String
bankName
;
private
String
bankRemo
;
private
String
empNum
;
private
String
empName
;
private
String
empPhone
;
private
String
licenseId
;
private
String
licenseType
;
private
String
month
;
private
String
notifyUrl
;
private
String
outerTradeNo
;
private
String
payAccount
;
private
Double
payAmount
;
private
String
positionName
;
private
String
remarks
;
private
String
settleType
;
private
String
taxFundId
;
private
String
wechatAppId
;
private
String
tradeStatus
;
private
String
tradeTime
;
private
String
frontLogNo
;
private
String
tradeFailCode
;
private
String
tradeResult
;
private
String
submitStatus
;
private
String
errorCode
;
private
Date
payTime
;
private
String
errorMessage
;
private
BigDecimal
chargeAmount
;
private
Date
createTime
;
private
String
remark
;
private
Integer
approveUser
;
private
Date
approveTime
;
public
XzWithdrawalApplyDO
(
XzWithdrawalVO
xzWithdrawalVO
)
{
this
.
userAccountId
=
xzWithdrawalVO
.
getUserAccountId
();
this
.
notifyUrl
=
xzWithdrawalVO
.
getNotifyUrl
();
this
.
taxFundId
=
xzWithdrawalVO
.
getTaxFundId
();
this
.
month
=
xzWithdrawalVO
.
getMonth
();
this
.
outerTradeNo
=
xzWithdrawalVO
.
getOuterTradeNo
();
this
.
empName
=
xzWithdrawalVO
.
getEmpName
();
this
.
empPhone
=
xzWithdrawalVO
.
getEmpPhone
();
this
.
empNum
=
xzWithdrawalVO
.
getEmpNum
();
this
.
licenseId
=
xzWithdrawalVO
.
getLicenseId
();
this
.
licenseType
=
xzWithdrawalVO
.
getLicenseType
();
this
.
settleType
=
xzWithdrawalVO
.
getSettleType
();
this
.
payAmount
=
xzWithdrawalVO
.
getPayAmount
();
this
.
payAccount
=
xzWithdrawalVO
.
getSettleType
().
equals
(
SettleTypeEnum
.
BANK
.
getCode
())
?
xzWithdrawalVO
.
getPayAccount
()
:
xzWithdrawalVO
.
getWechatAppId
();
this
.
bankName
=
xzWithdrawalVO
.
getBankName
();
this
.
positionName
=
xzWithdrawalVO
.
getPositionName
();
this
.
remarks
=
xzWithdrawalVO
.
getRemarks
();
this
.
bankRemo
=
xzWithdrawalVO
.
getBankRemo
();
}
public
XzWithdrawalApplyDO
(
ApplyWithdrawalVO
applyWithdrawalVO
)
{
this
.
userAccountId
=
applyWithdrawalVO
.
getUserAccountId
();
this
.
bankName
=
applyWithdrawalVO
.
getBankName
();
this
.
settleType
=
applyWithdrawalVO
.
getSettleType
();
this
.
payAccount
=
applyWithdrawalVO
.
getPayAccount
();
this
.
positionName
=
applyWithdrawalVO
.
getPositionName
();
this
.
payAmount
=
applyWithdrawalVO
.
getPayAmount
().
doubleValue
();
}
public
UserBillingDetailVO
buildUserBillingDetailVO
()
{
payAccount
=
PrivacyUtil
.
encryptBankAcct
(
payAccount
);
String
name
=
"提现"
;
if
(
this
.
tradeStatus
.
equals
(
XzEnums
.
apply
.
getCode
()))
{
name
=
XzEnums
.
apply
.
getName
();
}
else
if
(
this
.
tradeStatus
.
equals
(
XzEnums
.
await
.
getCode
()))
{
name
=
XzEnums
.
await
.
getName
();
}
else
if
(
this
.
tradeStatus
.
equals
(
XzEnums
.
handle
.
getCode
()))
{
name
=
XzEnums
.
handle
.
getName
();
}
else
if
(
this
.
tradeStatus
.
equals
(
XzEnums
.
failure
.
getCode
()))
{
name
=
XzEnums
.
failure
.
getName
();
}
else
if
(
this
.
tradeStatus
.
equals
(
XzEnums
.
success
.
getCode
()))
{
name
=
XzEnums
.
success
.
getName
();
}
else
if
(
this
.
applyStatus
==
2
)
{
name
=
"提现审批未通过"
;
}
BigDecimal
salaryAmtPaid
;
if
(
this
.
tradeStatus
.
equals
(
XzEnums
.
failure
.
getCode
())
||
this
.
applyStatus
==
2
)
{
salaryAmtPaid
=
new
BigDecimal
(
payAmount
);
}
else
{
salaryAmtPaid
=
new
BigDecimal
(
payAmount
).
negate
();
}
return
UserBillingDetailVO
.
builder
().
userAccountId
(
userAccountId
)
.
payNo
(
outerTradeNo
).
payTime
(
payTime
).
account
(
payAccount
).
name
(
name
).
id
(
id
)
.
salaryAmtPaid
(
salaryAmtPaid
).
tradeResult
(
tradeResult
).
build
();
}
public
WithdrawalApplyDTO
buildWithdrawalApplyDTO
()
{
return
WithdrawalApplyDTO
.
builder
().
id
(
id
).
userAccountId
(
userAccountId
).
applyAmt
(
new
BigDecimal
(
payAmount
))
.
applyStatus
(
applyStatus
).
empName
(
empName
).
bankName
(
bankName
).
payAccount
(
payAccount
)
.
remark
(
remark
).
outerTradeNo
(
outerTradeNo
).
tradeStatus
(
tradeStatus
).
phoneNum
(
empPhone
).
settleType
(
settleType
)
.
tradeResult
(
tradeResult
).
createTime
(
createTime
).
build
();
}
}
csm-service/cms-service-user/src/main/java/com/mmc/iuav/user/entity/fdd/FddVerifyInfoDO.java
0 → 100644
浏览文件 @
cb5118ae
package
com
.
mmc
.
iuav
.
user
.
entity
.
fdd
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
import
java.util.Date
;
/**
* @author:zhenjie Date:2022/7/22
* time:11:33
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
FddVerifyInfoDO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
7766546708723743143L
;
private
Integer
id
;
private
Integer
userFddId
;
private
String
customerId
;
private
String
transactionNo
;
private
String
url
;
private
Integer
deleted
;
private
Date
createTime
;
private
Date
updateTime
;
}
csm-service/cms-service-user/src/main/java/com/mmc/iuav/user/entity/fdd/UserFddDO.java
0 → 100644
浏览文件 @
cb5118ae
package
com
.
mmc
.
iuav
.
user
.
entity
.
fdd
;
import
com.mmc.iuav.user.model.fdd.dto.UserFddDTO
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
import
java.util.Date
;
/**
* author:zhenjie
* Date:2022/9/1
* time:15:51
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public
class
UserFddDO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
6432171445803296265L
;
private
Integer
id
;
private
String
unionId
;
private
String
customerId
;
private
Integer
personVerifyStatus
;
private
Integer
entVerifyStatus
;
private
Integer
accountType
;
private
Date
createTime
;
private
Date
updateTime
;
public
UserFddDTO
buildUserFddDTO
()
{
return
UserFddDTO
.
builder
().
id
(
this
.
id
).
unionId
(
this
.
unionId
).
customerId
(
this
.
customerId
).
personVerifyStatus
(
this
.
personVerifyStatus
)
.
entVerifyStatus
(
this
.
entVerifyStatus
).
accountType
(
this
.
accountType
).
createTime
(
this
.
createTime
).
updateTime
(
this
.
updateTime
).
build
();
}
}
csm-service/cms-service-user/src/main/java/com/mmc/iuav/user/entity/wallet/PayLogDO.java
浏览文件 @
cb5118ae
package
com
.
mmc
.
iuav
.
user
.
entity
.
wallet
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
import
java.util.Date
;
/**
...
...
@@ -9,6 +14,9 @@ import java.util.Date;
* @author makejava
* @since 2023-08-18 16:18:01
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
PayLogDO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
752682324297846133L
;
...
...
@@ -26,17 +34,18 @@ public class PayLogDO implements Serializable {
*/
private
String
payNo
;
/**
* 0手动变更(大于0充值or小于0扣除) 100订单扣除 150订单冻结 200订单完成 250提现扣除
* 支付方式 100(订单发布) 200(无人接单取消订单)300(有人接单取消订单)400(飞手抢单)500(客服判定飞手无责取消订单)
* 600(飞手有责取消订单)700(正常结算)800(修改订单金额状态)900(飞手未确认修改金额状态)1000(飞手确认修改金额状态)1100(充值) 1200(提现)
*/
private
Integer
payMethod
;
/**
* 云享金变动金额(正数充值,负数扣除)
*/
private
Double
cashAmtPaid
;
private
BigDecimal
cashAmtPaid
;
/**
* 佣金变动金额(正数入账,负数扣除)
*/
private
Double
salaryAmtPaid
;
private
BigDecimal
salaryAmtPaid
;
/**
* 支付时间
*/
...
...
@@ -54,102 +63,12 @@ public class PayLogDO implements Serializable {
private
Date
updateTime
;
private
String
name
;
public
Integer
getId
()
{
return
id
;
}
public
void
setId
(
Integer
id
)
{
this
.
id
=
id
;
}
public
Integer
getUserAccountId
()
{
return
userAccountId
;
}
public
void
setUserAccountId
(
Integer
userAccountId
)
{
this
.
userAccountId
=
userAccountId
;
}
public
Integer
getOrderNo
()
{
return
orderNo
;
}
public
void
setOrderNo
(
Integer
orderNo
)
{
this
.
orderNo
=
orderNo
;
}
public
String
getPayNo
()
{
return
payNo
;
}
public
void
setPayNo
(
String
payNo
)
{
this
.
payNo
=
payNo
;
}
public
Integer
getPayMethod
()
{
return
payMethod
;
}
public
void
setPayMethod
(
Integer
payMethod
)
{
this
.
payMethod
=
payMethod
;
}
public
Double
getCashAmtPaid
()
{
return
cashAmtPaid
;
}
public
void
setCashAmtPaid
(
Double
cashAmtPaid
)
{
this
.
cashAmtPaid
=
cashAmtPaid
;
}
public
Double
getSalaryAmtPaid
()
{
return
salaryAmtPaid
;
}
public
void
setSalaryAmtPaid
(
Double
salaryAmtPaid
)
{
this
.
salaryAmtPaid
=
salaryAmtPaid
;
}
public
Date
getPayTime
()
{
return
payTime
;
}
public
void
setPayTime
(
Date
payTime
)
{
this
.
payTime
=
payTime
;
}
public
String
getRemark
()
{
return
remark
;
}
public
void
setRemark
(
String
remark
)
{
this
.
remark
=
remark
;
}
public
Integer
getOperateUser
()
{
return
operateUser
;
}
public
void
setOperateUser
(
Integer
operateUser
)
{
this
.
operateUser
=
operateUser
;
}
public
Date
getCreateTime
()
{
return
createTime
;
}
public
void
setCreateTime
(
Date
createTime
)
{
this
.
createTime
=
createTime
;
}
public
Date
getUpdateTime
()
{
return
updateTime
;
public
UserBillingDetailVO
buildUserBillingDetailVO
()
{
return
UserBillingDetailVO
.
builder
().
userAccountId
(
userAccountId
).
payNo
(
payNo
)
.
payTime
(
payTime
).
payMethod
(
payMethod
).
cashAmtPaid
(
cashAmtPaid
)
.
salaryAmtPaid
(
salaryAmtPaid
).
name
(
name
).
id
(
id
).
build
();
}
public
void
setUpdateTime
(
Date
updateTime
)
{
this
.
updateTime
=
updateTime
;
}
}
csm-service/cms-service-user/src/main/java/com/mmc/iuav/user/entity/wallet/PayWalletDO.java
浏览文件 @
cb5118ae
...
...
@@ -53,6 +53,13 @@ public class PayWalletDO implements Serializable {
*/
private
BigDecimal
salaryFreeze
;
private
BigDecimal
wxCashFreeze
;
/**
* 提现冻结
*/
private
BigDecimal
wdlFreeze
;
/**
* 提现总额
*/
...
...
@@ -65,9 +72,8 @@ public class PayWalletDO implements Serializable {
public
PayWalletDTO
buildPayWalletDTO
()
{
return
PayWalletDTO
.
builder
().
id
(
this
.
id
).
userAccountId
(
this
.
userAccountId
)
.
cashAmt
(
this
.
cashAmt
).
cashFreeze
(
this
.
cashFreeze
)
.
cashPaid
(
this
.
cashPaid
).
salaryAmt
(
this
.
salaryAmt
)
.
salaryFreeze
(
this
.
salaryFreeze
).
salaryPaid
(
this
.
salaryPaid
)
.
rebateWdl
(
this
.
salaryWdl
).
build
();
.
salaryAmt
(
this
.
salaryAmt
).
salaryFreeze
(
this
.
salaryFreeze
.
add
(
this
.
wdlFreeze
))
.
rebateWdl
(
this
.
salaryWdl
).
wdlFreeze
(
this
.
wdlFreeze
).
build
();
}
public
void
defaultValue
()
{
...
...
@@ -78,6 +84,7 @@ public class PayWalletDO implements Serializable {
this
.
salaryPaid
=
BigDecimal
.
ZERO
;
this
.
salaryFreeze
=
BigDecimal
.
ZERO
;
this
.
salaryWdl
=
BigDecimal
.
ZERO
;
this
.
wxCashFreeze
=
BigDecimal
.
ZERO
;
}
}
csm-service/cms-service-user/src/main/java/com/mmc/iuav/user/entity/wallet/UserBillingDetailVO.java
0 → 100644
浏览文件 @
cb5118ae
package
com
.
mmc
.
iuav
.
user
.
entity
.
wallet
;
import
com.mmc.iuav.user.enums.RebateMethod
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.List
;
/**
* @Author LW
* @date 2023/8/24 14:37
* 概要:
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public
class
UserBillingDetailVO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
113701726830167312L
;
@ApiModelProperty
(
value
=
"id"
)
private
Integer
id
;
@ApiModelProperty
(
value
=
"用户id"
)
private
Integer
userAccountId
;
@ApiModelProperty
(
value
=
"流水编号"
)
private
String
payNo
;
@ApiModelProperty
(
value
=
"操作方式"
)
private
Integer
payMethod
;
@ApiModelProperty
(
value
=
"云享金变动金额(正数充值,负数扣除)"
)
private
BigDecimal
cashAmtPaid
;
@ApiModelProperty
(
value
=
"佣金变动金额(正数入账,负数扣除)"
)
private
BigDecimal
salaryAmtPaid
;
@ApiModelProperty
(
value
=
"操作时间"
)
private
Date
payTime
;
@ApiModelProperty
(
value
=
"操作名称"
)
private
String
name
;
@ApiModelProperty
(
value
=
"交易说明"
)
private
String
tradeResult
;
@ApiModelProperty
(
value
=
"到账账户"
)
private
String
account
;
@ApiModelProperty
(
value
=
"处理进度"
)
private
List
<
Schedule
>
schedules
;
public
void
buildSchedules
(
List
<
WithdrawalLogDO
>
list
)
{
this
.
schedules
=
new
ArrayList
<
Schedule
>();
for
(
WithdrawalLogDO
d
:
list
)
{
if
(
RebateMethod
.
PENDING
.
getCode
().
equals
(
d
.
getPayMethod
().
toString
()))
{
Schedule
sd
=
new
Schedule
();
sd
.
setTitle
(
RebateMethod
.
PENDING
.
getStatus
());
sd
.
setAcTime
(
d
.
getPayTime
());
sd
.
setActive
(
1
);
this
.
schedules
.
add
(
sd
);
}
else
if
(
RebateMethod
.
SUCCESS
.
getCode
().
equals
(
d
.
getPayMethod
().
toString
()))
{
Schedule
sd
=
new
Schedule
();
sd
.
setTitle
(
RebateMethod
.
SUCCESS
.
getStatus
());
sd
.
setAcTime
(
d
.
getPayTime
());
sd
.
setActive
(
1
);
this
.
schedules
.
add
(
sd
);
}
else
if
(
RebateMethod
.
FAIL
.
getCode
().
equals
(
d
.
getPayMethod
().
toString
()))
{
Schedule
sd
=
new
Schedule
();
sd
.
setTitle
(
RebateMethod
.
FAIL
.
getStatus
());
sd
.
setAcTime
(
d
.
getPayTime
());
sd
.
setActive
(
1
);
this
.
schedules
.
add
(
sd
);
}
}
if
(
this
.
schedules
.
size
()
==
1
)
{
Schedule
sd
=
new
Schedule
();
sd
.
setTitle
(
RebateMethod
.
SUCCESS
.
getStatus
());
sd
.
setActive
(
0
);
this
.
schedules
.
add
(
sd
);
}
}
public
static
class
Schedule
{
private
String
title
;
private
Date
acTime
;
private
Integer
active
;
public
String
getTitle
()
{
return
title
;
}
public
void
setTitle
(
String
title
)
{
this
.
title
=
title
;
}
public
Date
getAcTime
()
{
return
acTime
;
}
public
void
setAcTime
(
Date
acTime
)
{
this
.
acTime
=
acTime
;
}
public
Integer
getActive
()
{
return
active
;
}
public
void
setActive
(
Integer
active
)
{
this
.
active
=
active
;
}
}
}
csm-service/cms-service-user/src/main/java/com/mmc/iuav/user/entity/wallet/WithdrawalLogDO.java
0 → 100644
浏览文件 @
cb5118ae
package
com
.
mmc
.
iuav
.
user
.
entity
.
wallet
;
import
com.mmc.iuav.user.enums.WithdrawalMethod
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
import
java.util.Date
;
/**
* (WithdrawalLogDO)实体类
*
* @author makejava
* @since 2023-08-25 16:57:13
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public
class
WithdrawalLogDO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
757884073681912750L
;
private
Integer
id
;
/**
* 用户id
*/
private
Integer
userAccountId
;
/**
* 支付流水号(T202109031615XXXX)XXXX随机数
*/
private
String
payNo
;
/**
* 150:提现冻结 200:提现成功 250:提现失败
*/
private
Integer
payMethod
;
/**
* 流水时间
*/
private
Date
payTime
;
/**
* 提现申请id
*/
private
Integer
xzWithdrawalApplyId
;
private
String
typeName
;
/**
* 提现冻结
*/
private
BigDecimal
salaryFreeze
;
private
BigDecimal
salaryPaid
;
private
Date
createTime
;
private
Date
updateTime
;
public
UserBillingDetailVO
buildUserBillingDetailVO
()
{
if
(
payMethod
.
equals
(
WithdrawalMethod
.
TXDJ
.
getCode
()))
{
this
.
typeName
=
WithdrawalMethod
.
TXDJ
.
getName
();
}
if
(
payMethod
.
equals
(
WithdrawalMethod
.
TXCG
.
getCode
()))
{
this
.
typeName
=
WithdrawalMethod
.
TXCG
.
getName
();
}
if
(
payMethod
.
equals
(
WithdrawalMethod
.
TXSB
.
getCode
()))
{
this
.
typeName
=
WithdrawalMethod
.
TXSB
.
getName
();
}
return
UserBillingDetailVO
.
builder
().
id
(
id
).
userAccountId
(
userAccountId
)
.
payMethod
(
payMethod
).
payTime
(
payTime
).
salaryAmtPaid
(
salaryFreeze
==
null
?
salaryPaid
:
salaryFreeze
)
.
payNo
(
payNo
).
name
(
typeName
).
build
();
}
}
csm-service/cms-service-user/src/main/java/com/mmc/iuav/user/enums/PayMethodEnums.java
0 → 100644
浏览文件 @
cb5118ae
package
com
.
mmc
.
iuav
.
user
.
enums
;
/**
* @Author LW
* @date 2023/8/19 18:53
* 概要:
*/
public
enum
PayMethodEnums
{
PUBLISH_ORDER
(
100
,
"订单发布"
),
CANCEL_ORDER_TAKING
(
200
,
"未接单时取消订单"
),
RECEIVED_ORDER_CANCEL
(
300
,
"已接单取消订单"
),
FLYING_ORDER_TAKING
(
400
,
"飞手抢单"
),
CUSTOMER_SERVICE_CANCEL_ORDER
(
500
,
"客服判定飞手无责取消订单"
),
FLYER_CANCEL_ORDER
(
600
,
"飞手有责取消订单"
),
NORMAL_SETTLEMENT
(
700
,
"正常结算"
),
MODIFY_THE_ORDER
(
800
,
"修改订单金额状态(大于)"
),
FLYING_HAND_NOT_CONFIRMED_GT
(
900
,
"飞手未确认修改金额大于原订单状态"
),
FLYING_HAND_CONFIRM_LT
(
1000
,
"飞手确认修改金额小于原订单状态"
),
USER_TOP_UP
(
1100
,
"充值"
);
PayMethodEnums
(
Integer
code
,
String
method
)
{
this
.
code
=
code
;
this
.
method
=
method
;
}
private
Integer
code
;
private
String
method
;
public
Integer
getCode
()
{
return
this
.
code
;
}
public
String
getMethod
()
{
return
this
.
method
;
}
}
csm-service/cms-service-user/src/main/java/com/mmc/iuav/user/enums/RebateMethod.java
0 → 100644
浏览文件 @
cb5118ae
package
com
.
mmc
.
iuav
.
user
.
enums
;
/**
* @author 作者 lw
* @version 创建时间:2023.8.26 下午5:29:24
* @explain 类说明
*/
public
enum
RebateMethod
{
PENDING
(
"150"
,
"提现申请"
),
SUCCESS
(
"200"
,
"提现到账"
),
FAIL
(
"250"
,
"提现失败"
);
RebateMethod
(
String
code
,
String
status
)
{
this
.
code
=
code
;
this
.
status
=
status
;
}
private
String
code
;
private
String
status
;
public
String
getCode
()
{
return
code
;
}
public
void
setCode
(
String
code
)
{
this
.
code
=
code
;
}
public
String
getStatus
()
{
return
status
;
}
public
void
setStatus
(
String
status
)
{
this
.
status
=
status
;
}
}
csm-service/cms-service-user/src/main/java/com/mmc/iuav/user/enums/SettleTypeEnum.java
0 → 100644
浏览文件 @
cb5118ae
package
com
.
mmc
.
iuav
.
user
.
enums
;
/**
* @author: zj
* @Date: 2023/8/23 16:50
*/
public
enum
SettleTypeEnum
{
ALIPAY
(
"alipay"
,
"支付宝"
),
WECHAT
(
"wechatpay"
,
"微信"
),
BANK
(
"bankcard"
,
"银行卡"
);
SettleTypeEnum
(
String
code
,
String
status
)
{
this
.
code
=
code
;
this
.
status
=
status
;
}
private
String
code
;
private
String
status
;
public
String
getCode
()
{
return
code
;
}
public
void
setCode
(
String
code
)
{
this
.
code
=
code
;
}
public
String
getStatus
()
{
return
status
;
}
public
void
setStatus
(
String
status
)
{
this
.
status
=
status
;
}
}
csm-service/cms-service-user/src/main/java/com/mmc/iuav/user/enums/WithdrawalApplyStatus.java
0 → 100644
浏览文件 @
cb5118ae
package
com
.
mmc
.
iuav
.
user
.
enums
;
/**
* @author 作者 geDuo
* @version 创建时间:2021年10月29日 下午2:43:14
* @explain 类说明
*/
public
enum
WithdrawalApplyStatus
{
TXSQ
(
0
,
"提现申请中"
),
TXCG
(
1
,
"提现成功"
),
TXSB
(
2
,
"提现失败"
);
private
Integer
code
;
private
String
name
;
WithdrawalApplyStatus
(
Integer
code
,
String
name
)
{
this
.
code
=
code
;
this
.
name
=
name
;
}
public
void
setCode
(
Integer
code
)
{
this
.
code
=
code
;
}
public
Integer
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/enums/WithdrawalMethod.java
0 → 100644
浏览文件 @
cb5118ae
package
com
.
mmc
.
iuav
.
user
.
enums
;
/**
* @author 作者 LW
* @version 创建时间:2023.8.26 10:56
* @explain 类说明
*/
public
enum
WithdrawalMethod
{
TXDJ
(
150
,
"提现冻结"
),
TXCG
(
200
,
"提现成功"
),
TXSB
(
250
,
"提现失败"
);
private
Integer
code
;
private
String
name
;
WithdrawalMethod
(
Integer
code
,
String
name
)
{
this
.
code
=
code
;
this
.
name
=
name
;
}
public
void
setCode
(
Integer
code
)
{
this
.
code
=
code
;
}
public
Integer
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/enums/XzEnums.java
0 → 100644
浏览文件 @
cb5118ae
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"
),
F
(
"F"
,
"回调code"
),
apply
(
"apply"
,
"提现申请"
),
cancel
(
"cancel"
,
"撤销"
),
pay
(
"pay"
,
"支付"
),
refund
(
"refund"
,
"退款"
);
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/mq/FanoutExchangeConfig.java
浏览文件 @
cb5118ae
package
com
.
mmc
.
iuav
.
user
.
mq
;
import
com.mmc.iuav.user.mq.constant.RabbitmqConstant
;
import
org.springframework.amqp.core.Binding
;
import
org.springframework.amqp.core.BindingBuilder
;
import
org.springframework.amqp.core.FanoutExchange
;
...
...
@@ -14,7 +15,7 @@ import org.springframework.context.annotation.Configuration;
@Configuration
public
class
FanoutExchangeConfig
{
@Bean
public
FanoutExchange
fanoutExchange
(){
public
FanoutExchange
fanoutExchange
()
{
return
new
FanoutExchange
(
RabbitmqConstant
.
USER_INFO_UPDATE_FANOUT_EXCHANGE
);
}
...
...
csm-service/cms-service-user/src/main/java/com/mmc/iuav/user/mq/RabbitmqConstant.java
→
csm-service/cms-service-user/src/main/java/com/mmc/iuav/user/mq/
constant/
RabbitmqConstant.java
浏览文件 @
cb5118ae
package
com
.
mmc
.
iuav
.
user
.
mq
;
package
com
.
mmc
.
iuav
.
user
.
mq
.
constant
;
/**
* @author: zj
...
...
@@ -8,4 +8,20 @@ public class RabbitmqConstant {
public
final
static
String
USER_INFO_UPDATE_FANOUT_EXCHANGE
=
"USER_INFO_UPDATE_FANOUT_EXCHANGE"
;
public
final
static
String
USER_INFO_UPDATE_FANOUT_FORUM_QUEUE
=
"USER_INFO_UPDATE_FANOUT_FORUM_QUEUE"
;
/**
* 用户充值订单交换机
*/
public
final
static
String
USER_TOP_UP_DIRECT_EXCHANGE
=
"USER_TOP_UP_DIRECT_EXCHANGE"
;
/**
* 充值订单队列、routing_key
*/
public
final
static
String
USER_TOP_UP_DIRECT_QUEUE
=
"USER_TOP_UP_DIRECT_QUEUE"
;
public
final
static
String
USER_TOP_UP_ROUTING_KEY
=
"USER_TOP_UP_ROUTING_KEY"
;
/**
* 充值成功队列、routing_key
*/
public
final
static
String
USER_TOP_UP_SUCCESS_QUEUE
=
"USER_TOP_UP_SUCCESS_QUEUE"
;
public
final
static
String
USER_TOP_UP_SUCCESS_ROUTING_KEY
=
"USER_TOP_UP_SUCCESS_ROUTING_KEY"
;
}
csm-service/cms-service-user/src/main/java/com/mmc/iuav/user/mq/impl/MqProducerImpl.java
浏览文件 @
cb5118ae
...
...
@@ -3,7 +3,7 @@ package com.mmc.iuav.user.mq.impl;
import
com.alibaba.fastjson2.JSONObject
;
import
com.mmc.iuav.user.model.vo.UserAccountVO
;
import
com.mmc.iuav.user.mq.MqProducer
;
import
com.mmc.iuav.user.mq.RabbitmqConstant
;
import
com.mmc.iuav.user.mq.
constant.
RabbitmqConstant
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.amqp.rabbit.core.RabbitTemplate
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
...
csm-service/cms-service-user/src/main/java/com/mmc/iuav/user/mq/listener/OrderMqConsumer.java
0 → 100644
浏览文件 @
cb5118ae
package
com
.
mmc
.
iuav
.
user
.
mq
.
listener
;
import
com.alibaba.fastjson2.JSONObject
;
import
com.mmc.iuav.user.model.vo.wallet.TopUpOrderVO
;
import
com.mmc.iuav.user.mq.constant.RabbitmqConstant
;
import
com.mmc.iuav.user.service.wallet.PayWalletService
;
import
com.rabbitmq.client.Channel
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.amqp.core.Message
;
import
org.springframework.amqp.rabbit.annotation.RabbitListener
;
import
org.springframework.messaging.handler.annotation.Payload
;
import
org.springframework.stereotype.Component
;
import
javax.annotation.Resource
;
/**
* @Author LW
* @date 2023/6/29 10:35 概要:
*/
@Slf4j
@Component
public
class
OrderMqConsumer
{
@Resource
PayWalletService
payWalletService
;
@RabbitListener
(
queues
=
RabbitmqConstant
.
USER_TOP_UP_SUCCESS_QUEUE
)
public
void
subscribeDirectQueue
(
@Payload
String
topUpOrder
,
Channel
channel
,
Message
message
)
{
TopUpOrderVO
topUpOrderVO
=
JSONObject
.
parseObject
(
topUpOrder
,
TopUpOrderVO
.
class
);
log
.
info
(
"<==========用户充值成功消费开始:订单信息是---->{}==========>"
,
topUpOrderVO
);
payWalletService
.
feignTopUpCash
(
topUpOrderVO
);
log
.
info
(
"<==========用户充值成功消费结束==========>"
);
}
}
csm-service/cms-service-user/src/main/java/com/mmc/iuav/user/service/WxService.java
浏览文件 @
cb5118ae
...
...
@@ -14,6 +14,7 @@ import javax.servlet.http.HttpServletRequest;
public
interface
WxService
{
/**
* 小程序登录调用接口
*
* @param wxLoginVO
* @return
*/
...
...
@@ -21,6 +22,7 @@ public interface WxService {
/**
* pc扫码登录
*
* @param wxLoginVO
* @return
*/
...
...
@@ -28,36 +30,49 @@ public interface WxService {
/**
* 获取AccessToken
*
* @return
*/
String
getAccessToken
();
/**
* 获取稳定AccessToken
*
* @return
*/
String
getStableAccessToken
()
throws
Exception
;
/**
* 获取公众号AccessToken
*
* @return
*/
String
getSubAccessToken
();
/**
* 获取公众号稳定版accessToken
*
* @return
*/
String
getSubStableAccessToken
();
/**
* 监控微信公众号的事件变化通知
*
* @param request
*/
String
receiveSubAccountEvents
(
HttpServletRequest
request
);
/**
* 公众号推送模板消息-不需要用户同意
*
* @return
*/
ResultBody
sendSubTemplateMsg
(
WxMsgVO
ws
);
/**
* 获取不限制的小程序码
*
* @param path
* @param scene
*/
...
...
@@ -65,12 +80,14 @@ public interface WxService {
/**
* 小程序推送订阅号消息-需用户同意订阅
*
* @param appletMsgVO
*/
ResultBody
sendAppletMsg
(
AppletMsgVO
appletMsgVO
);
/**
* 生成小程序链接
*
* @param path
* @param query
* @return
...
...
@@ -85,4 +102,10 @@ public interface WxService {
* @return
*/
String
getUserPhoneNumber
(
Integer
id
,
String
code
);
ResultBody
rid
(
String
rid
)
throws
Exception
;
ResultBody
moveSubUserToTest
();
ResultBody
moveSubUserUnionIdToTest
();
}
csm-service/cms-service-user/src/main/java/com/mmc/iuav/user/service/fdd/FddService.java
0 → 100644
浏览文件 @
cb5118ae
package
com
.
mmc
.
iuav
.
user
.
service
.
fdd
;
/**
* author:zhenjie
* Date:2022/7/16
* time:15:30
*/
public
interface
FddService
{
String
register
(
String
uid
,
String
accountType
);
String
getApplyCert
(
String
customerId
,
String
transactionNo
);
// ResultBody getFileByUuid(String uuid, String docType);
}
csm-service/cms-service-user/src/main/java/com/mmc/iuav/user/service/fdd/UserFddAuthService.java
0 → 100644
浏览文件 @
cb5118ae
package
com
.
mmc
.
iuav
.
user
.
service
.
fdd
;
import
com.mmc.iuav.response.ResultBody
;
import
com.mmc.iuav.user.model.dto.LoginSuccessDTO
;
import
com.mmc.iuav.user.model.fdd.dto.UserFddDTO
;
import
java.util.Map
;
/**
* author:zhenjie
* Date:2022/9/1
* time:15:46
*/
public
interface
UserFddAuthService
{
String
register
(
String
uid
,
String
accountType
);
ResultBody
getPersonVerifyUrl
(
Integer
userAccountId
);
ResultBody
getCompanyVerifyUrl
(
Integer
port
,
LoginSuccessDTO
loginSuccessDTO
);
ResultBody
notifyECertRes
(
Map
<
String
,
String
>
map
);
ResultBody
findCompanyCertInfo
(
Integer
port
,
Integer
flag
,
LoginSuccessDTO
loginSuccessDTO
);
String
replaceUnableString
(
String
uid
);
ResultBody
<
UserFddDTO
>
getAppUserFddInfo
(
Integer
port
,
LoginSuccessDTO
loginSuccessDTO
);
ResultBody
getFileByUuid
(
String
uuid
,
String
docType
);
// List<UserFddDTO> feignGetAppUserFddInfo(List<String> unionId);
}
csm-service/cms-service-user/src/main/java/com/mmc/iuav/user/service/fdd/impl/FddServiceImpl.java
0 → 100644
浏览文件 @
cb5118ae
package
com
.
mmc
.
iuav
.
user
.
service
.
fdd
.
impl
;
import
com.alibaba.fastjson2.JSONObject
;
import
com.fadada.sdk.base.client.FddBaseClient
;
import
com.fadada.sdk.base.model.req.RegisterAccountParams
;
import
com.fadada.sdk.verify.client.FddVerifyClient
;
import
com.fadada.sdk.verify.model.req.ApplyCertParams
;
import
com.mmc.iuav.user.constant.fdd.FddConnectConstant
;
import
com.mmc.iuav.user.constant.fdd.FddConstant
;
import
com.mmc.iuav.user.dao.UserServiceDao
;
import
com.mmc.iuav.user.service.fdd.FddService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Service
;
import
javax.annotation.Resource
;
/**
* author:zhenjie
* Date:2022/7/16
* time:15:30
*/
@Service
@Slf4j
public
class
FddServiceImpl
implements
FddService
{
@Resource
UserServiceDao
userServiceDao
;
@Override
public
String
register
(
String
uid
,
String
accountType
)
{
FddBaseClient
baseClient
=
new
FddBaseClient
(
FddConnectConstant
.
APP_ID
,
FddConnectConstant
.
APP_KEY
,
FddConnectConstant
.
VERSION
,
FddConnectConstant
.
HOST
);
RegisterAccountParams
params
=
new
RegisterAccountParams
();
//账号类型1个人 2企业
params
.
setAccountType
(
accountType
);
//替换uid中包含的-或者_
String
openId
=
uid
.
replaceAll
(
"[-|_]"
,
""
);
//平台方自定义唯一标识
params
.
setOpenId
(
openId
);
String
result
=
baseClient
.
invokeRegisterAccount
(
params
);
log
.
info
(
result
);
if
(!
JSONObject
.
parseObject
(
result
).
getString
(
FddConstant
.
CODE
).
equals
(
FddConstant
.
SUCCESS
))
{
return
null
;
}
return
JSONObject
.
parseObject
(
result
).
getString
(
FddConstant
.
DATA
);
}
// @Override
// public ResultBody findPersonCertInfo(String verifiedSerialNo) {
// FddVerifyClient client = new FddVerifyClient(FddConnectConstant.APP_ID, FddConnectConstant.APP_KEY, FddConnectConstant.VERSION, FddConnectConstant.HOST);
// FindPersonCertParams params = new FindPersonCertParams();
// params.setVerifiedSerialNo(verifiedSerialNo); //此处填获取个人实名认证地址返回的交易号
// String result = client.invokeFindPersonCert(params);
// return ResultBody.success(result);
// }
//
// @Override
// public ResultBody getCompanyVerifyUrl(Integer userAccountId) {
// String customerId = this.checkRegisterFdd(userAccountId);
// if(customerId == null){
// return ResultBody.error(ResultEnum.REQUEST_PARAM_ILLEGAL_ERROR);
// }
// //查询原来有没有请求
// FddEVerifyInfoDO fddEVerifyInfo = fddVerifyDao.getFddEVerifyInfo(userAccountId);
// if(fddEVerifyInfo == null){
// CompanyVerifyResp companyVerifyResp = this.reqCompanyVerifyUrl(customerId);
// if(companyVerifyResp == null){
// return ResultBody.error(ResultEnum.REQUEST_PARAM_ILLEGAL_ERROR);
// }
// //保存实名认证链接和交易号
// FddEVerifyInfoDO fddEVerifyInfoDO = new FddEVerifyInfoDO();
// fddEVerifyInfoDO.setUserAccountId(userAccountId);
// fddEVerifyInfoDO.setCustomerId(customerId);
// fddEVerifyInfoDO.setTransactionNo(companyVerifyResp.getTransactionNo());
// fddEVerifyInfoDO.setUrl(companyVerifyResp.getUrl());
// fddVerifyDao.addFddEVerifyInfo(fddEVerifyInfoDO);
// return ResultBody.success(companyVerifyResp.getUrl());
// }
// return ResultBody.success(fddEVerifyInfo.getUrl());
// }
//
// private CompanyVerifyResp reqCompanyVerifyUrl(String customerId){
// FddVerifyClient client = new FddVerifyClient(FddConnectConstant.APP_ID, FddConnectConstant.APP_KEY, FddConnectConstant.VERSION, FddConnectConstant.HOST);
// CompanyVerifyUrlParams params = new CompanyVerifyUrlParams();
// params.setCustomerId(customerId);
// params.setPageModify("1");//1允许 2不允许 默认为1
// //设置回调通知
// params.setReturnUrl(FddConnectConstant.MMC_URL + FddConstant.RETURN_E_CERT_RES);
// params.setNotifyUrl(FddConnectConstant.MMC_URL + FddConstant.NOTIFY_E_CERT_RES);
// String result = client.invokeCompanyVerifyUrl(params);
// if(!JSONObject.parseObject(result).getString(FddConstant.CODE).equals(FddConstant.SUCCESS)){
// return null;
// }
// CompanyVerifyResp data = JSON.parseObject(JSONObject.parseObject(result).getString(FddConstant.DATA), CompanyVerifyResp.class);
// return data;
// }
@Override
public
String
getApplyCert
(
String
customerId
,
String
transactionNo
)
{
FddVerifyClient
client
=
new
FddVerifyClient
(
FddConnectConstant
.
APP_ID
,
FddConnectConstant
.
APP_KEY
,
FddConnectConstant
.
VERSION
,
FddConnectConstant
.
HOST
);
ApplyCertParams
params
=
new
ApplyCertParams
();
//客户编号
params
.
setCustomerId
(
customerId
);
// 填写获取实名认证地址返回的交易号transactionNo
params
.
setVerifiedSerialNo
(
transactionNo
);
String
result
=
client
.
invokeApplyCert
(
params
);
if
(!
JSONObject
.
parseObject
(
result
).
getString
(
FddConstant
.
CODE
).
equals
(
FddConstant
.
SUCCESS
))
{
return
null
;
}
return
result
;
}
// @Override
// public ResultBody findCompanyCertInfo(Integer userAccountId) {
// UserFddDO userFddDO = fddVerifyDao.getUserFddByUserAccountId(userAccountId);
// if(userFddDO == null){
// return ResultBody.error(ResultEnum.NOT_FOUND);
// }
// FddEVerifyInfoDO fddEVerifyInfo = fddVerifyDao.getFddEVerifyInfo(userAccountId);
// if( fddEVerifyInfo == null ){
// return ResultBody.error(ResultEnum.NOT_FOUND);
// }
//
// FddVerifyClient client = new FddVerifyClient(FddConnectConstant.APP_ID, FddConnectConstant.APP_KEY, FddConnectConstant.VERSION, FddConnectConstant.HOST);
// FindCompanyCertParams params = new FindCompanyCertParams();
// params.setVerifiedSerialNo(fddEVerifyInfo.getTransactionNo());//此处填获取企业实名认证地址返回的交易号
// String result = client.invokeFindCompanyCert(params);
// if(!JSONObject.parseObject(result).getString(FddConstant.CODE).equals(FddConstant.SUCCESS)){
// return ResultBody.error(ResultEnum.NOT_FOUND);
// }
// return ResultBody.success(JSONObject.parseObject(result).getString(FddConstant.DATA));
// }
//
// @Override
// public ResultBody notifyECertRes(String appId, String serialNo, String customerId, String status, String statusDesc, String certStatus, String authenticationType, String timestamp, String sign) {
// if (!appId.equals(FddConnectConstant.APP_ID)){
// return ResultBody.error(ResultEnum.NOT_FOUND);
// }
// //修改状态认证
// return userServletClient.notifyECertRes(appId, serialNo, customerId, status, statusDesc, certStatus, authenticationType, timestamp, sign);
// }
//
// @Override
// public ResultBody returnECertRes(String personName, String transactionNo, String authenticationType, String status, String sign) {
// //修改状态认证
// return userServletClient.returnECertRes(personName, transactionNo, authenticationType, status, sign);
// }
//
// @Override
// public ResultBody newNotifyECertRes(Map<String, String> map) {
//
// String appId = map.get("appId");
//// String name="%E9%83%AD%E5%AE%B6%E8%BE%89";
// String serialNo = map.get("serialNo");
// String customerId = map.get("customerId");
// String status = map.get("status");
// String statusDesc = map.get("statusDesc");
// String certStatus = map.get("certStatus");
// String authenticationType = map.get("authenticationType");
// String timestamp = map.get("timestamp");
// String sign = map.get("sign");
// String sha1 = FddEncryptTool.sha1(FddConnectConstant.APP_KEY +authenticationType +certStatus+customerId+ serialNo+status+ statusDesc);
// try {
// String md5 = FddEncryptTool.md5Digest(timestamp);
// String outSha1 = FddEncryptTool.sha1(FddConnectConstant.APP_ID+md5 + sha1);
// String base64 = new String(FddEncryptTool.Base64Encode(outSha1.getBytes())).trim();
// if(!base64.equals(sign)){
// return ResultBody.error(ResultEnum.NOT_FOUND);
// }
// if (!appId.equals(FddConnectConstant.APP_ID)){
// return ResultBody.error(ResultEnum.NOT_FOUND);
// }
// }catch (Exception e){
// return ResultBody.error(ResultEnum.NOT_FOUND);
// }
// FddEVerifyInfoDO fddEVerifyInfo = fddVerifyDao.getFddEVerifyInfoByTransactionNo(serialNo);
// if(fddEVerifyInfo == null){
// return ResultBody.error(ResultEnum.NOT_FOUND);
// }
// //修改认证状态
// fddVerifyDao.updateCompanyCertStatus(customerId, status);
// //通过需要申请证书
// if(status.equals("4")){
// this.getApplyCert(fddEVerifyInfo.getCustomerId(), fddEVerifyInfo.getTransactionNo());
// }
// return ResultBody.success();
// }
//
// @Override
// public ResultBody getUserFddInfo(Integer id) {
// UserFddDO userFddDO = fddVerifyDao.getUserFddByUserAccountId(id);
// if(userFddDO == null){
// return ResultBody.error(ResultEnum.NO_REAL_NAME);
// }
// return ResultBody.success(userFddDO.buildUserFddDTO());
// }
//
// @Override
// public List<UserFddDTO> feignBatchUserFddPage(List<Integer> list) {
// if( list.size() == 0 ){
// return null;
// }
// List<UserFddDO> userFddDOList = fddVerifyDao.listUserFddPage(list);
// List<UserFddDTO> collect = userFddDOList.stream().map(d -> {
// return d.buildUserFddDTO();
// }).collect(Collectors.toList());
// return collect;
// }
//
// @Override
// public ResultBody getFileByUuid(String uuid, String docType) {
// FddVerifyClient client = new FddVerifyClient(FddConnectConstant.APP_ID, FddConnectConstant.APP_KEY, FddConnectConstant.VERSION, FddConnectConstant.HOST);
// FileForUUIDParams params = new FileForUUIDParams();
// params.setUuid(uuid);//此处传个人实名认证接口查询中返回的认证图片id,或查询企业认证信息中返回 的企业认证申请表id
// params.setDocType(docType);//0:图片(默认图片)1:pdf (仅支持企业申请表模板)
// String result = client.invokeFileForUUID(params);
// //防止被转移,把字符串转base64
// String base64 = new String(FddEncryptTool.Base64Encode(result.getBytes())).trim();
// return ResultBody.success(base64);
// }
//
// /**
// * 查询是否注册法大大
// */
// private String checkRegisterFdd(Integer userAccountId){
// UserAccountDTO userAccountDTO = userServletClient.feignGetUserSimpleInfo(userAccountId);
// UserFddDO userFddDO = fddVerifyDao.getUserFddByUserAccountId(userAccountId);
// String customerId = null;
// if(userFddDO == null){
// //账号类型1个人 2企业,合伙人默认全部是企业
// Integer accountType = 2;
// customerId = this.register(userAccountDTO.getUid(), accountType+"");
// if(customerId == null){
// return null;
// }
// UserFddDO userFddDO1 = new UserFddDO();
// userFddDO1.setUserAccountId(userAccountId);
// userFddDO1.setCustomerId(customerId);
// userFddDO1.setAccountType(accountType);
// userFddDO1.setPersonVerifyStatus(0);
// userFddDO1.setEntVerifyStatus(0);
// fddVerifyDao.addUserFdd(userFddDO1);
// }else {
// customerId = userFddDO.getCustomerId();
// }
// return customerId;
// }
}
\ No newline at end of file
csm-service/cms-service-user/src/main/java/com/mmc/iuav/user/service/fdd/impl/UserFddAuthServiceImpl.java
0 → 100644
浏览文件 @
cb5118ae
package
com
.
mmc
.
iuav
.
user
.
service
.
fdd
.
impl
;
import
com.alibaba.fastjson2.JSON
;
import
com.alibaba.fastjson2.JSONObject
;
import
com.fadada.sdk.utils.crypt.FddEncryptTool
;
import
com.fadada.sdk.verify.client.FddVerifyClient
;
import
com.fadada.sdk.verify.model.req.*
;
import
com.mmc.iuav.response.ResultBody
;
import
com.mmc.iuav.response.ResultEnum
;
import
com.mmc.iuav.user.constant.fdd.FddConnectConstant
;
import
com.mmc.iuav.user.constant.fdd.FddConstant
;
import
com.mmc.iuav.user.dao.UserServiceDao
;
import
com.mmc.iuav.user.dao.fdd.UserFddAuthDao
;
import
com.mmc.iuav.user.entity.UserAccountDO
;
import
com.mmc.iuav.user.entity.fdd.FddVerifyInfoDO
;
import
com.mmc.iuav.user.entity.fdd.UserFddDO
;
import
com.mmc.iuav.user.model.dto.LoginSuccessDTO
;
import
com.mmc.iuav.user.model.fdd.resp.CompanyVerifyResp
;
import
com.mmc.iuav.user.model.fdd.resp.PersonVerifyResp
;
import
com.mmc.iuav.user.service.fdd.FddService
;
import
com.mmc.iuav.user.service.fdd.UserFddAuthService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
javax.annotation.Resource
;
import
java.util.Map
;
/**
* author:zhenjie
* Date:2022/9/1
* time:15:46
*/
@Service
public
class
UserFddAuthServiceImpl
implements
UserFddAuthService
{
@Autowired
private
FddService
fddService
;
@Resource
private
UserServiceDao
userServiceDao
;
@Autowired
private
UserFddAuthDao
userFddAuthDao
;
@Override
public
String
register
(
String
uid
,
String
accountType
)
{
return
fddService
.
register
(
uid
,
accountType
);
}
@Override
public
ResultBody
getPersonVerifyUrl
(
Integer
userAccountId
)
{
UserAccountDO
userInfo
=
userServiceDao
.
getUserAccountById
(
userAccountId
);
String
unionId
=
this
.
replaceUnableString
(
userInfo
.
getUnionId
());
//验证是否注册个人
String
customerId
=
this
.
checkRegisterFdd
(
unionId
,
1
);
if
(
customerId
==
null
)
{
return
ResultBody
.
error
(
ResultEnum
.
REQUEST_PARAM_ILLEGAL_ERROR
);
}
UserFddDO
userFddDO
=
userFddAuthDao
.
checkRegisterFdd
(
unionId
,
1
);
if
(
userFddDO
==
null
)
{
return
ResultBody
.
error
(
ResultEnum
.
NOT_FOUND
);
}
//查看原来是否有申请
FddVerifyInfoDO
verifyInfoDO
=
userFddAuthDao
.
getVerifyUrl
(
userFddDO
.
getCustomerId
());
if
(
verifyInfoDO
==
null
)
{
PersonVerifyResp
personVerifyResp
=
this
.
getPersonVerifyUrl
(
customerId
);
if
(
personVerifyResp
==
null
)
{
return
ResultBody
.
error
(
ResultEnum
.
REQUEST_PARAM_ILLEGAL_ERROR
);
}
FddVerifyInfoDO
verifyInfoDO1
=
new
FddVerifyInfoDO
();
verifyInfoDO1
.
setUserFddId
(
userFddDO
.
getId
());
verifyInfoDO1
.
setCustomerId
(
customerId
);
verifyInfoDO1
.
setTransactionNo
(
personVerifyResp
.
getTransactionNo
());
verifyInfoDO1
.
setUrl
(
personVerifyResp
.
getUrl
());
userFddAuthDao
.
insertVerifyInfo
(
verifyInfoDO1
);
return
ResultBody
.
success
(
personVerifyResp
.
getUrl
());
}
return
ResultBody
.
success
(
verifyInfoDO
.
getUrl
());
}
public
PersonVerifyResp
getPersonVerifyUrl
(
String
customerId
)
{
FddVerifyClient
client
=
new
FddVerifyClient
(
FddConnectConstant
.
APP_ID
,
FddConnectConstant
.
APP_KEY
,
FddConnectConstant
.
VERSION
,
FddConnectConstant
.
HOST
);
PersonVerifyUrlParams
params
=
new
PersonVerifyUrlParams
();
params
.
setCustomerId
(
customerId
);
//客户编号
params
.
setVerifiedWay
(
"0"
);
//实名认证套餐类型
params
.
setPageModify
(
"1"
);
//是否允许用户页面修改 1允许 2不允许
// 以下是非必填参数
params
.
setNotifyUrl
(
FddConnectConstant
.
MMC_URL
+
FddConstant
.
NOTIFY_E_CERT_RES
);
//异步回调地址
// params.setReturnUrl(""); //同步通知url
// params.setCustomerName(""); //姓名
// params.setCustomerIdentType(""); //证件类型
// params.setCustomerIdentNo(""); //证件号码
// params.setMobile(""); //手机号码
// params.setIdentFrontPath(""); //证件正面照下载地址
// params.setIdentBackPath(""); //证件反面照下载地址
// params.setResultType(""); //刷脸是否显示结果页面
// params.setCertFlag(""); //是否认证成功后自动申请实名证书
// params.setCertType(""); //证件类型
// params.setBankCardNo(""); //个人银行卡
// params.setOption(""); //不传默认add
// params.setIdPhotoOptional(""); //是否需要上传身份照片
// params.setIsMinProgram(""); //是否跳转法大大公证处小程序认证
// params.setLang("zh"); //zh:中文;en:英文
// params.setIsAllowOverseasBankCardAuth(""); //海外用户是否支持银行卡认证
// params.setIdentFrontImg(new File("")); //证件正面照图片文件
// params.setIdentBackImg(new File("")); //证件反面照图片文件
String
result
=
client
.
invokePersonVerifyUrl
(
params
);
if
(!
com
.
alibaba
.
fastjson
.
JSONObject
.
parseObject
(
result
).
getString
(
FddConstant
.
CODE
).
equals
(
FddConstant
.
SUCCESS
))
{
return
null
;
}
PersonVerifyResp
data
=
com
.
alibaba
.
fastjson
.
JSON
.
parseObject
(
com
.
alibaba
.
fastjson
.
JSONObject
.
parseObject
(
result
).
getString
(
FddConstant
.
DATA
),
PersonVerifyResp
.
class
);
return
data
;
}
@Override
public
ResultBody
getCompanyVerifyUrl
(
Integer
port
,
LoginSuccessDTO
loginSuccessDTO
)
{
String
uId
;
if
(
port
.
equals
(
0
))
{
// 获取小程序用户信息拿到unionId
UserAccountDO
userInfo
=
userServiceDao
.
getUserAccountById
(
loginSuccessDTO
.
getUserAccountId
());
uId
=
this
.
replaceUnableString
(
userInfo
.
getUnionId
());
}
else
{
uId
=
loginSuccessDTO
.
getUserAccountId
().
toString
();
}
//验证是否注册企业
String
customerId
=
this
.
checkRegisterFdd
(
uId
,
2
);
if
(
customerId
==
null
)
{
return
ResultBody
.
error
(
ResultEnum
.
REQUEST_PARAM_ILLEGAL_ERROR
);
}
UserFddDO
userFddDO
=
userFddAuthDao
.
checkRegisterFdd
(
uId
,
2
);
if
(
userFddDO
==
null
)
{
return
ResultBody
.
error
(
ResultEnum
.
NOT_FOUND
);
}
//查看原来是否有申请
FddVerifyInfoDO
verifyInfoDO
=
userFddAuthDao
.
getVerifyUrl
(
userFddDO
.
getCustomerId
());
if
(
verifyInfoDO
==
null
)
{
CompanyVerifyResp
companyVerifyResp
=
this
.
reqCompanyVerifyUrl
(
customerId
);
if
(
companyVerifyResp
==
null
)
{
return
ResultBody
.
error
(
ResultEnum
.
REQUEST_PARAM_ILLEGAL_ERROR
);
}
FddVerifyInfoDO
verifyInfoDO1
=
new
FddVerifyInfoDO
();
verifyInfoDO1
.
setUserFddId
(
userFddDO
.
getId
());
verifyInfoDO1
.
setCustomerId
(
customerId
);
verifyInfoDO1
.
setTransactionNo
(
companyVerifyResp
.
getTransactionNo
());
verifyInfoDO1
.
setUrl
(
companyVerifyResp
.
getUrl
());
userFddAuthDao
.
insertVerifyInfo
(
verifyInfoDO1
);
return
ResultBody
.
success
(
companyVerifyResp
.
getUrl
());
}
return
ResultBody
.
success
(
verifyInfoDO
.
getUrl
());
}
@Override
public
ResultBody
notifyECertRes
(
Map
<
String
,
String
>
map
)
{
String
appId
=
map
.
get
(
"appId"
);
String
serialNo
=
map
.
get
(
"serialNo"
);
String
customerId
=
map
.
get
(
"customerId"
);
String
status
=
map
.
get
(
"status"
);
String
statusDesc
=
map
.
get
(
"statusDesc"
);
String
certStatus
=
map
.
get
(
"certStatus"
);
String
authenticationType
=
map
.
get
(
"authenticationType"
);
String
timestamp
=
map
.
get
(
"timestamp"
);
String
sign
=
map
.
get
(
"sign"
);
String
sha1
=
FddEncryptTool
.
sha1
(
FddConnectConstant
.
APP_KEY
+
authenticationType
+
certStatus
+
customerId
+
serialNo
+
status
+
statusDesc
);
try
{
String
md5
=
FddEncryptTool
.
md5Digest
(
timestamp
);
String
outSha1
=
FddEncryptTool
.
sha1
(
FddConnectConstant
.
APP_ID
+
md5
+
sha1
);
String
base64
=
new
String
(
FddEncryptTool
.
Base64Encode
(
outSha1
.
getBytes
())).
trim
();
if
(!
base64
.
equals
(
sign
))
{
return
ResultBody
.
error
(
ResultEnum
.
NOT_FOUND
);
}
if
(!
appId
.
equals
(
FddConnectConstant
.
APP_ID
))
{
return
ResultBody
.
error
(
ResultEnum
.
NOT_FOUND
);
}
}
catch
(
Exception
e
)
{
return
ResultBody
.
error
(
ResultEnum
.
NOT_FOUND
);
}
FddVerifyInfoDO
verifyInfoDO
=
userFddAuthDao
.
getVerifyUrl
(
customerId
);
if
(
verifyInfoDO
==
null
)
{
return
ResultBody
.
error
(
ResultEnum
.
NOT_FOUND
);
}
//修改认证状态
userFddAuthDao
.
updateCompanyCertStatus
(
customerId
,
status
);
//通过需要申请证书
if
((
authenticationType
.
equals
(
"2"
)
&&
status
.
equals
(
"4"
))
||
(
authenticationType
.
equals
(
"1"
)
&&
status
.
equals
(
"2"
)))
{
fddService
.
getApplyCert
(
verifyInfoDO
.
getCustomerId
(),
verifyInfoDO
.
getTransactionNo
());
}
return
ResultBody
.
success
();
}
@Override
public
ResultBody
findCompanyCertInfo
(
Integer
port
,
Integer
flag
,
LoginSuccessDTO
loginSuccessDTO
)
{
String
uId
;
String
result
;
if
(
port
.
equals
(
0
))
{
UserAccountDO
userInfo
=
userServiceDao
.
getUserAccountById
(
loginSuccessDTO
.
getUserAccountId
());
uId
=
this
.
replaceUnableString
(
userInfo
.
getUnionId
());
}
else
{
uId
=
loginSuccessDTO
.
getUserAccountId
().
toString
();
}
UserFddDO
appUserFddDO
=
userFddAuthDao
.
checkRegisterFdd
(
uId
,
flag
);
if
(
appUserFddDO
==
null
)
{
return
ResultBody
.
error
(
ResultEnum
.
REQUEST_PARAM_ILLEGAL_ERROR
);
}
FddVerifyInfoDO
fddVerifyInfoDO
=
userFddAuthDao
.
getVerifyUrl
(
appUserFddDO
.
getCustomerId
());
if
(
fddVerifyInfoDO
==
null
)
{
return
ResultBody
.
error
(
ResultEnum
.
REQUEST_PARAM_ILLEGAL_ERROR
);
}
FddVerifyClient
client
=
new
FddVerifyClient
(
FddConnectConstant
.
APP_ID
,
FddConnectConstant
.
APP_KEY
,
FddConnectConstant
.
VERSION
,
FddConnectConstant
.
HOST
);
if
(
flag
.
equals
(
2
))
{
FindCompanyCertParams
params
=
new
FindCompanyCertParams
();
//此处填获取企业实名认证地址返回的交易号
params
.
setVerifiedSerialNo
(
fddVerifyInfoDO
.
getTransactionNo
());
result
=
client
.
invokeFindCompanyCert
(
params
);
}
else
{
FindPersonCertParams
params
=
new
FindPersonCertParams
();
//此处填获取个人实名认证地址返回的交易号
params
.
setVerifiedSerialNo
(
fddVerifyInfoDO
.
getTransactionNo
());
result
=
client
.
invokeFindPersonCert
(
params
);
}
if
(!
JSONObject
.
parseObject
(
result
).
getString
(
FddConstant
.
CODE
).
equals
(
FddConstant
.
SUCCESS
))
{
return
ResultBody
.
error
(
ResultEnum
.
NOT_FOUND
);
}
return
ResultBody
.
success
(
JSONObject
.
parseObject
(
result
).
getString
(
FddConstant
.
DATA
));
}
@Override
public
ResultBody
getAppUserFddInfo
(
Integer
port
,
LoginSuccessDTO
loginSuccessDTO
)
{
String
uId
;
if
(
port
==
0
)
{
UserAccountDO
userInfo
=
userServiceDao
.
getUserAccountById
(
loginSuccessDTO
.
getUserAccountId
());
uId
=
this
.
replaceUnableString
(
userInfo
.
getUnionId
());
}
else
{
uId
=
loginSuccessDTO
.
getUserAccountId
().
toString
();
}
UserFddDO
appUserFddDO
=
userFddAuthDao
.
getAppUserFddInfo
(
uId
);
return
ResultBody
.
success
(
appUserFddDO
==
null
?
null
:
appUserFddDO
.
buildUserFddDTO
());
}
private
CompanyVerifyResp
reqCompanyVerifyUrl
(
String
customerId
)
{
FddVerifyClient
client
=
new
FddVerifyClient
(
FddConnectConstant
.
APP_ID
,
FddConnectConstant
.
APP_KEY
,
FddConnectConstant
.
VERSION
,
FddConnectConstant
.
HOST
);
CompanyVerifyUrlParams
params
=
new
CompanyVerifyUrlParams
();
params
.
setCustomerId
(
customerId
);
params
.
setPageModify
(
"1"
);
//1允许 2不允许 默认为1
//设置回调通知
params
.
setNotifyUrl
(
FddConnectConstant
.
MMC_URL
+
FddConstant
.
NOTIFY_E_CERT_RES
);
params
.
setMVerifiedWay
(
"4"
);
String
result
=
client
.
invokeCompanyVerifyUrl
(
params
);
if
(!
JSONObject
.
parseObject
(
result
).
getString
(
FddConstant
.
CODE
).
equals
(
FddConstant
.
SUCCESS
))
{
return
null
;
}
CompanyVerifyResp
data
=
JSON
.
parseObject
(
JSONObject
.
parseObject
(
result
).
getString
(
FddConstant
.
DATA
),
CompanyVerifyResp
.
class
);
return
data
;
}
private
String
checkRegisterFdd
(
String
unionId
,
Integer
flag
)
{
//查看是否已注册
UserFddDO
userFddDO
=
userFddAuthDao
.
checkRegisterFdd
(
unionId
,
flag
);
String
customerId
;
if
(
userFddDO
==
null
)
{
//账号类型1个人 2企业
customerId
=
this
.
register
(
unionId
,
flag
.
toString
());
if
(
customerId
==
null
)
{
return
null
;
}
UserFddDO
userFdd
=
new
UserFddDO
();
userFdd
.
setUnionId
(
unionId
);
userFdd
.
setCustomerId
(
customerId
);
userFdd
.
setAccountType
(
flag
);
userFdd
.
setEntVerifyStatus
(
0
);
userFdd
.
setPersonVerifyStatus
(
0
);
userFddAuthDao
.
insertAppUserFdd
(
userFdd
);
}
else
{
customerId
=
userFddDO
.
getCustomerId
();
}
return
customerId
;
}
//
@Override
public
String
replaceUnableString
(
String
uid
)
{
String
u
=
uid
.
replaceAll
(
FddConstant
.
UID_REGEX
,
""
);
return
u
;
}
@Override
public
ResultBody
getFileByUuid
(
String
uuid
,
String
docType
)
{
FddVerifyClient
client
=
new
FddVerifyClient
(
FddConnectConstant
.
APP_ID
,
FddConnectConstant
.
APP_KEY
,
FddConnectConstant
.
VERSION
,
FddConnectConstant
.
HOST
);
FileForUUIDParams
params
=
new
FileForUUIDParams
();
//此处传个人实名认证接口查询中返回的认证图片id,或查询企业认证信息中返回 的企业认证申请表id
params
.
setUuid
(
uuid
);
//0:图片(默认图片)1:pdf (仅支持企业申请表模板)
params
.
setDocType
(
docType
);
String
result
=
client
.
invokeFileForUUID
(
params
);
//防止被转移,把字符串转base64
String
base64
=
new
String
(
FddEncryptTool
.
Base64Encode
(
result
.
getBytes
())).
trim
();
return
ResultBody
.
success
(
base64
);
}
}
csm-service/cms-service-user/src/main/java/com/mmc/iuav/user/service/impl/AuthServiceImpl.java
浏览文件 @
cb5118ae
...
...
@@ -18,6 +18,7 @@ import com.mmc.iuav.user.model.dto.LoginSuccessDTO;
import
com.mmc.iuav.user.model.qo.LoginUserQO
;
import
com.mmc.iuav.user.model.vo.*
;
import
com.mmc.iuav.user.service.*
;
import
com.mmc.iuav.user.service.wallet.PayWalletService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
...
@@ -25,6 +26,7 @@ import org.springframework.data.redis.core.StringRedisTemplate;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
javax.annotation.Resource
;
import
java.security.NoSuchAlgorithmException
;
import
java.util.concurrent.TimeUnit
;
...
...
@@ -66,8 +68,12 @@ public class AuthServiceImpl implements AuthService {
@Autowired
private
AuthHandler
authHandler
;
@Resource
private
PayWalletService
payWalletService
;
@Transactional
@Override
public
ResultBody
appletLogin
(
WxLoginVO
wxLoginVO
)
{
String
unionId
;
String
openId
;
...
...
@@ -101,6 +107,8 @@ public class AuthServiceImpl implements AuthService {
userAccountDO
.
setSource
(
wxLoginVO
.
getSource
());
userAccountService
.
insertUserAccount
(
userAccountDO
);
userAccountVO
=
userAccountDO
.
buildUserAccountVO
();
// 创建用户钱包
payWalletService
.
initPayWallet
(
userAccountDO
.
getId
());
payClient
.
createWallet
(
userAccountDO
.
getId
());
// 查询之前有没有实名过
RealNameAuthDO
nameAuthByUnionId
=
realNameAuthDao
.
getRealNameAuthBakByUnionId
(
unionId
);
...
...
csm-service/cms-service-user/src/main/java/com/mmc/iuav/user/service/impl/BackUserAccountServiceImpl.java
浏览文件 @
cb5118ae
...
...
@@ -162,7 +162,6 @@ public class BackUserAccountServiceImpl implements BackUserAccountService {
if
(
companyInfoVO
!=
null
&&
companyInfoVO
.
getCompanyType
().
equals
(
CompanyTypeEnums
.
FRANCHISEE
.
getType
()))
{
// 加盟企业的账号,需要把对应的成员和后台账号解绑
companyService
.
unbindingAllUsers
(
companyInfoVO
.
getId
());
companyService
.
deleteCompanyInfoById
(
companyInfoVO
.
getId
());
}
String
accountNo
=
"DISABLE_"
+
backUserAccountDO
.
getAccountNo
()
+
RandomStringUtils
.
randomAlphanumeric
(
3
);
backUserAccountDao
.
disableBackUserAccountDO
(
accountId
,
accountNo
);
...
...
csm-service/cms-service-user/src/main/java/com/mmc/iuav/user/service/impl/RealNameAuthServiceImpl.java
浏览文件 @
cb5118ae
...
...
@@ -46,6 +46,7 @@ public class RealNameAuthServiceImpl implements RealNameAuthService {
@Override
public
ResultBody
add
(
RealNameAuthVO
realNameAuthVO
)
{
log
.
info
(
"RealNameAuthVO:{}"
,
JSONObject
.
toJSONString
(
realNameAuthVO
));
RealNameAuthDO
realNameAuthDO0
=
realNameAuthDao
.
getRealNameAuthByUId
(
realNameAuthVO
.
getUserAccountId
());
if
(
realNameAuthDO0
!=
null
&&
realNameAuthDO0
.
getCheckStatus
().
equals
(
1
))
{
return
ResultBody
.
error
(
ResultEnum
.
REAL_NAME_PASS_ERROR
);
...
...
csm-service/cms-service-user/src/main/java/com/mmc/iuav/user/service/impl/UserAccountServiceImpl.java
浏览文件 @
cb5118ae
...
...
@@ -6,15 +6,11 @@ import com.mmc.iuav.response.ResultBody;
import
com.mmc.iuav.response.ResultEnum
;
import
com.mmc.iuav.user.controller.userpoints.config.NumberOfUserPoints
;
import
com.mmc.iuav.user.controller.userpoints.config.UserPointsEnum
;
import
com.mmc.iuav.user.dao.CooperationDao
;
import
com.mmc.iuav.user.dao.RealNameAuthDao
;
import
com.mmc.iuav.user.dao.UserServiceDao
;
import
com.mmc.iuav.user.dao.*
;
import
com.mmc.iuav.user.dao.userpoints.UserPointsDao
;
import
com.mmc.iuav.user.dao.userpoints.UserPointsDetailsDao
;
import
com.mmc.iuav.user.entity.CooperationTagDO
;
import
com.mmc.iuav.user.entity.RealNameAuthDO
;
import
com.mmc.iuav.user.entity.UserAccountDO
;
import
com.mmc.iuav.user.entity.UserRcdDO
;
import
com.mmc.iuav.user.dao.xzsz.XzDao
;
import
com.mmc.iuav.user.entity.*
;
import
com.mmc.iuav.user.entity.userpoints.UserPointsDO
;
import
com.mmc.iuav.user.entity.userpoints.UserPointsDetails
;
import
com.mmc.iuav.user.model.dto.LoginSuccessDTO
;
...
...
@@ -78,6 +74,12 @@ public class UserAccountServiceImpl implements UserAccountService {
@Autowired
private
RealNameAuthDao
realNameAuthDao
;
@Autowired
private
XzDao
xzDao
;
@Autowired
private
UserSubInfoDao
userSubInfoDao
;
@Override
public
UserAccountVO
getUserAccountInfoByUnionId
(
String
unionId
)
{
...
...
@@ -104,6 +106,7 @@ public class UserAccountServiceImpl implements UserAccountService {
RealNameAuthDTO
realNameAuthDTO
=
nameAuthDTOResultBody
.
getResult
();
if
(
realNameAuthDTO
!=
null
&&
realNameAuthDTO
.
getCheckStatus
().
equals
(
1
))
{
userAccountVO
.
setRealNameAuthStatus
(
1
);
userAccountVO
.
setUserName
(
realNameAuthDTO
.
getUserName
());
}
CompanyAuthVO
companyAuthVO
=
companyAuthService
.
getCompanyAuthByUId
(
userAccountId
);
if
(
companyAuthVO
!=
null
)
{
...
...
@@ -116,6 +119,18 @@ public class UserAccountServiceImpl implements UserAccountService {
List
<
CooperationTagVO
>
cooperationTags
=
cooperationTagDOS
.
stream
().
map
(
CooperationTagDO:
:
buildCooperationTagVO
).
collect
(
Collectors
.
toList
());
userAccountVO
.
setCooperationTagVOS
(
cooperationTags
);
}
XzAuthDO
xzAuthDO
=
xzDao
.
getXzAuthByUserAccountId
(
userAccountId
);
if
(
xzAuthDO
!=
null
)
{
userAccountVO
.
setXzAuthStatus
(
xzAuthDO
.
getXzAuthStatus
());
}
else
{
userAccountVO
.
setXzAuthStatus
(
0
);
}
UserSubInfoDO
userSubInfoDO
=
userSubInfoDao
.
getUserSubInfoByUnionId
(
userAccountDO
.
getUnionId
());
if
(
userSubInfoDO
!=
null
&&
userSubInfoDO
.
getRegStatus
().
equals
(
1
))
{
userAccountVO
.
setSubStatus
(
1
);
}
else
{
userAccountVO
.
setSubStatus
(
0
);
}
return
userAccountVO
;
}
...
...
@@ -358,12 +373,26 @@ public class UserAccountServiceImpl implements UserAccountService {
}
}
@Autowired
private
CompanyDao
companyDao
;
@Override
public
ResultBody
disableAppAccount
(
Integer
userAccountId
)
{
userServiceDao
.
disableUserAccount
(
CodeUtil
.
removeUserAccount
(),
userAccountId
);
UserAccountVO
userAccountVO
=
new
UserAccountVO
();
userAccountVO
.
setId
(
userAccountId
);
userAccountVO
.
setDeleted
(
1
);
// 删除绑定企业信息,
// 该企业只有一人时可以直接删除,或者不是管理员时也可以直接删除,
// 是管理者时并且有多人则不能删除,提醒解绑成员后才能删除
CompanyInfoDO
companyInfoDO
=
companyDao
.
getAppCompanyInfoUId
(
userAccountId
);
if
(
companyInfoDO
!=
null
)
{
int
members
=
companyDao
.
countCompanyMembers
(
companyInfoDO
.
getId
());
if
(
members
>
1
&&
companyInfoDO
.
getLeader
().
equals
(
1
))
{
return
ResultBody
.
error
(
"该用户是单位管理员,暂时不能删除"
);
}
companyDao
.
unbindCompanyMember
(
userAccountId
,
companyInfoDO
.
getId
());
}
mqProducer
.
sentUserInfoChangedMsg
(
userAccountVO
);
return
ResultBody
.
success
();
}
...
...
csm-service/cms-service-user/src/main/java/com/mmc/iuav/user/service/impl/WxServiceImpl.java
浏览文件 @
cb5118ae
package
com
.
mmc
.
iuav
.
user
.
service
.
impl
;
import
com.alibaba.fastjson2.JSONArray
;
import
com.alibaba.fastjson2.JSONObject
;
import
com.mmc.iuav.http.HttpHelper
;
import
com.mmc.iuav.http.HttpsRequestUtil
;
...
...
@@ -26,6 +27,7 @@ import java.io.BufferedReader;
import
java.io.InputStreamReader
;
import
java.util.Date
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.concurrent.TimeUnit
;
...
...
@@ -134,9 +136,39 @@ public class WxServiceImpl implements WxService {
}
@Override
public
String
getSubStableAccessToken
()
{
//token有效期为7200s,需要保存起来,先从redis中获取accessToken,没有则请求获取
String
accessToken
=
stringRedisTemplate
.
opsForValue
().
get
(
WxConstant
.
SHARE_FLY_SUB_STABLE_ACCESS_TOKEN
);
if
(
StringUtils
.
isBlank
(
accessToken
))
{
Map
<
String
,
String
>
params
=
new
HashMap
<
String
,
String
>();
params
.
put
(
"grant_type"
,
"client_credential"
);
params
.
put
(
"appid"
,
userSystemConstant
.
getWxSubAppId
());
params
.
put
(
"secret"
,
userSystemConstant
.
getWxSubSecret
());
String
res
=
null
;
try
{
res
=
HttpsRequestUtil
.
httpsRequest
(
"https://api.weixin.qq.com/cgi-bin/stable_token"
,
"POST"
,
null
,
JSONObject
.
toJSONString
(
params
));
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
JSONObject
tokenResult
=
JSONObject
.
parseObject
(
res
);
if
(
res
.
indexOf
(
"access_token"
)
==
-
1
)
{
log
.
info
(
"获取公众号access_token有误:{}"
,
tokenResult
);
return
null
;
}
accessToken
=
tokenResult
.
getString
(
"access_token"
);
long
expiresIn
=
tokenResult
.
getLong
(
"expires_in"
);
//保存进redis
stringRedisTemplate
.
opsForValue
().
set
(
WxConstant
.
SHARE_FLY_SUB_STABLE_ACCESS_TOKEN
,
accessToken
,
expiresIn
,
TimeUnit
.
SECONDS
);
return
accessToken
;
}
return
accessToken
;
}
@Override
public
String
receiveSubAccountEvents
(
HttpServletRequest
request
)
{
try
{
Map
<
String
,
String
>
map
=
this
.
convertRequestToMap
(
request
);
log
.
info
(
"Received wx events(after convert):{}"
,
JSONObject
.
toJSONString
(
map
));
String
event
=
map
.
get
(
"Event"
);
if
(
WxConstant
.
subscribe
.
equals
(
event
))
{
// 关注事件
...
...
@@ -188,8 +220,8 @@ public class WxServiceImpl implements WxService {
try
{
String
InfoUrl
=
"https://api.weixin.qq.com/cgi-bin/user/info?access_token="
+
accessToken
+
"&openid="
+
openid
+
"&lang=zh_CN"
;
//String jsonStr = HttpsOpenUtil.https(InfoUrl, "GET");// 错误:{"errcode":40013,"errmsg":"invalid appid"}
String
jsonStr
=
HttpsRequestUtil
.
httpsRequest
(
InfoUrl
,
"GET"
,
null
,
null
);
String
jsonStr
=
HttpsRequestUtil
.
httpsGet
(
InfoUrl
,
null
);
log
.
info
(
"updateWXUserInfo:{}"
,
jsonStr
);
JSONObject
obj
=
JSONObject
.
parseObject
(
jsonStr
);
// 用户是否订阅该公众号标识,值为0时,代表此用户没有关注该公众号,拉取不到其余信息。
Integer
subscribe
=
obj
.
getInteger
(
"subscribe"
);
...
...
@@ -215,10 +247,11 @@ public class WxServiceImpl implements WxService {
public
ResultBody
sendSubTemplateMsg
(
WxMsgVO
ws
)
{
String
accessToken
=
null
;
try
{
accessToken
=
this
.
getSubAccessToken
();
accessToken
=
this
.
getSub
Stable
AccessToken
();
String
url
=
"https://api.weixin.qq.com/cgi-bin/message/template/send?access_token="
+
accessToken
;
String
param
=
ws
.
build
MsgJson
();
String
param
=
ws
.
build
TemplateMsg
();
String
result
=
HttpHelper
.
httpPost
(
url
,
param
);
log
.
info
(
"模板消息发送结果:{}"
,
result
);
}
catch
(
Exception
e
)
{
log
.
error
(
"accessToken获取失败:{}"
,
e
.
getMessage
());
return
ResultBody
.
error
(
ResultEnum
.
WX_ACCESS_TOKEN_ERROR
.
getResultCode
(),
...
...
@@ -307,4 +340,64 @@ public class WxServiceImpl implements WxService {
}
return
null
;
}
@Override
public
ResultBody
rid
(
String
rid
)
throws
Exception
{
JSONObject
param
=
new
JSONObject
();
param
.
put
(
"rid"
,
rid
);
String
url
=
"https://api.weixin.qq.com/cgi-bin/openapi/rid/get?access_token="
+
this
.
getSubAccessToken
();
String
res
=
HttpHelper
.
httpPost
(
url
,
param
.
toString
());
return
ResultBody
.
success
(
res
);
}
@Override
public
ResultBody
moveSubUserToTest
()
{
String
accessToken
=
this
.
getSubStableAccessToken
();
String
url
=
"https://api.weixin.qq.com/cgi-bin/user/get?access_token="
+
accessToken
;
String
jsonStr
=
HttpsRequestUtil
.
httpsGet
(
url
,
null
);
log
.
info
(
"all users:{}"
,
jsonStr
);
JSONObject
obj
=
JSONObject
.
parseObject
(
jsonStr
);
List
<
String
>
lists
=
JSONArray
.
parseArray
(
obj
.
getJSONObject
(
"data"
).
get
(
"openid"
).
toString
(),
String
.
class
);
int
count
=
0
;
for
(
String
openid
:
lists
)
{
Integer
integer
=
userSubInfoDao
.
countUserSubInfo
(
openid
);
if
(
integer
==
0
)
{
count
++;
UserSubInfoDO
sub
=
new
UserSubInfoDO
();
sub
.
setOpenId
(
openid
);
sub
.
setRegStatus
(
1
);
sub
.
setDeleted
(
0
);
sub
.
setCreateTime
(
new
Date
());
userSubInfoDao
.
insertUserSubInfo
(
sub
);
}
}
log
.
info
(
"User count: {}"
,
count
);
return
ResultBody
.
success
();
}
@Override
public
ResultBody
moveSubUserUnionIdToTest
()
{
String
accessToken
=
this
.
getSubStableAccessToken
();
String
url
=
"https://api.weixin.qq.com/cgi-bin/user/get?access_token="
+
accessToken
+
"&next_openid="
+
"oB6kk6obNektxM62mjj9PJHPtcME"
;
String
jsonStr
=
HttpsRequestUtil
.
httpsGet
(
url
,
null
);
log
.
info
(
"all users:{}"
,
jsonStr
);
JSONObject
obj
=
JSONObject
.
parseObject
(
jsonStr
);
List
<
String
>
lists
=
JSONArray
.
parseArray
(
obj
.
getJSONObject
(
"data"
).
get
(
"openid"
).
toString
(),
String
.
class
);
int
count
=
0
;
for
(
String
openid
:
lists
)
{
UserSubInfoDO
userSubInfo
=
userSubInfoDao
.
getUserSubInfo
(
openid
);
if
(
userSubInfo
!=
null
)
{
String
InfoUrl
=
"https://api.weixin.qq.com/cgi-bin/user/info?access_token="
+
accessToken
+
"&openid="
+
openid
+
"&lang=zh_CN"
;
String
jsonStr1
=
HttpsRequestUtil
.
httpsGet
(
InfoUrl
,
null
);
JSONObject
obj1
=
JSONObject
.
parseObject
(
jsonStr1
);
userSubInfo
.
setUnionId
(
obj1
.
getString
(
"unionid"
));
userSubInfo
.
setRegStatus
(
1
);
userSubInfoDao
.
updateUserSubInfo
(
userSubInfo
);
}
}
log
.
info
(
"User count: {}"
,
count
);
return
ResultBody
.
success
();
}
}
csm-service/cms-service-user/src/main/java/com/mmc/iuav/user/service/wallet/PayWalletService.java
浏览文件 @
cb5118ae
package
com
.
mmc
.
iuav
.
user
.
service
.
wallet
;
import
com.mmc.iuav.response.ResultBody
;
import
com.mmc.iuav.user.model.qo.wallet.WalletFlowQO
;
import
com.mmc.iuav.user.model.vo.wallet.TopUpOrderVO
;
import
com.mmc.iuav.user.model.vo.wallet.WalletFlowVO
;
/**
* @Author LW
...
...
@@ -11,4 +14,12 @@ public interface PayWalletService {
ResultBody
getPayWalletInfo
(
Integer
userAccountId
);
ResultBody
initPayWallet
(
Integer
userAccountId
);
ResultBody
feignWalletFlow
(
WalletFlowVO
walletFlowVO
);
ResultBody
feignTopUpCash
(
TopUpOrderVO
topUpOrderVO
);
ResultBody
customerBillingDetail
(
Integer
userAccountId
,
WalletFlowQO
walletFlowQO
);
ResultBody
billingDetails
(
Integer
id
,
String
detailType
);
}
csm-service/cms-service-user/src/main/java/com/mmc/iuav/user/service/wallet/impl/PayWalletServiceImpl.java
浏览文件 @
cb5118ae
package
com
.
mmc
.
iuav
.
user
.
service
.
wallet
.
impl
;
import
com.mmc.iuav.general.CodeUtil
;
import
com.mmc.iuav.page.PageResult
;
import
com.mmc.iuav.response.ResultBody
;
import
com.mmc.iuav.user.dao.UserServiceDao
;
import
com.mmc.iuav.user.dao.wallet.PayWalletDao
;
import
com.mmc.iuav.user.entity.UserAccountDO
;
import
com.mmc.iuav.user.entity.XzWithdrawalApplyDO
;
import
com.mmc.iuav.user.entity.wallet.PayLogDO
;
import
com.mmc.iuav.user.entity.wallet.PayWalletDO
;
import
com.mmc.iuav.user.entity.wallet.UserBillingDetailVO
;
import
com.mmc.iuav.user.entity.wallet.WithdrawalLogDO
;
import
com.mmc.iuav.user.enums.PayMethodEnums
;
import
com.mmc.iuav.user.model.dto.wallet.PayWalletDTO
;
import
com.mmc.iuav.user.model.qo.wallet.WalletFlowQO
;
import
com.mmc.iuav.user.model.vo.WithdrawalInfoVO
;
import
com.mmc.iuav.user.model.vo.wallet.FlyerWalletFlowVO
;
import
com.mmc.iuav.user.model.vo.wallet.PublisherWalletFlowVO
;
import
com.mmc.iuav.user.model.vo.wallet.TopUpOrderVO
;
import
com.mmc.iuav.user.model.vo.wallet.WalletFlowVO
;
import
com.mmc.iuav.user.service.wallet.PayWalletService
;
import
com.mmc.iuav.user.util.TDateUtil
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang.StringUtils
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
javax.annotation.Resource
;
import
java.math.BigDecimal
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.stream.Collectors
;
/**
* @Author LW
...
...
@@ -15,9 +38,12 @@ import javax.annotation.Resource;
* 概要:
*/
@Service
@Slf4j
public
class
PayWalletServiceImpl
implements
PayWalletService
{
@Resource
PayWalletDao
payWalletDao
;
@Resource
UserServiceDao
userServiceDao
;
@Override
public
ResultBody
getPayWalletInfo
(
Integer
userAccountId
)
{
...
...
@@ -38,4 +64,519 @@ public class PayWalletServiceImpl implements PayWalletService {
payWalletDao
.
insertPayWalletInfo
(
wallet
);
return
ResultBody
.
success
();
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
ResultBody
feignWalletFlow
(
WalletFlowVO
walletFlowVO
)
{
// 获取发布者的信息
PublisherWalletFlowVO
publisherWalletFlowVO
=
walletFlowVO
.
getPublisherWalletFlowVO
();
// 获取接单者的信息
FlyerWalletFlowVO
flyerWalletFlowVO
=
walletFlowVO
.
getFlyerWalletFlowVO
();
// 发布者的钱包信息
PayWalletDO
publishWallet
=
new
PayWalletDO
();
// 接单者的钱包信息
PayWalletDO
flyerWallet
=
new
PayWalletDO
();
// 获取用户钱包信息
if
(
publisherWalletFlowVO
!=
null
)
{
publishWallet
=
payWalletDao
.
getPayWalletByUser
(
publisherWalletFlowVO
.
getUserAccountId
());
}
if
(
flyerWalletFlowVO
!=
null
)
{
flyerWallet
=
payWalletDao
.
getPayWalletByUser
(
flyerWalletFlowVO
.
getUserAccountId
());
}
// 判断状态进行资金的扣减等于100时 发布订单
if
(
publisherWalletFlowVO
!=
null
&&
publisherWalletFlowVO
.
getModeOfPayment
().
equals
(
PayMethodEnums
.
PUBLISH_ORDER
.
getCode
()))
{
PayWalletDO
publishUpdatePayWallet
=
new
PayWalletDO
();
publishUpdatePayWallet
.
setUserAccountId
(
publisherWalletFlowVO
.
getUserAccountId
());
publishUpdatePayWallet
.
setPid
(
publishWallet
.
getPid
());
publishUpdatePayWallet
.
setCashAmt
(
publishWallet
.
getCashAmt
().
add
(
publisherWalletFlowVO
.
getCashAmount
())
.
add
(
publisherWalletFlowVO
.
getTopYxjAmount
()).
add
(
publisherWalletFlowVO
.
getUrgentYxjAmount
()));
publishUpdatePayWallet
.
setCashFreeze
(
publishWallet
.
getCashFreeze
().
subtract
(
publisherWalletFlowVO
.
getCashAmount
())
.
subtract
(
publisherWalletFlowVO
.
getTopYxjAmount
()).
subtract
(
publisherWalletFlowVO
.
getUrgentYxjAmount
()));
publishUpdatePayWallet
.
setSalaryAmt
(
publishWallet
.
getSalaryAmt
().
add
(
publisherWalletFlowVO
.
getSalaryAmount
())
.
add
(
publisherWalletFlowVO
.
getTopSalaryAmount
()).
add
(
publisherWalletFlowVO
.
getUrgentSalaryAmount
()));
publishUpdatePayWallet
.
setSalaryFreeze
(
publishWallet
.
getSalaryFreeze
().
subtract
(
publisherWalletFlowVO
.
getSalaryAmount
())
.
subtract
(
publisherWalletFlowVO
.
getTopSalaryAmount
()).
subtract
(
publisherWalletFlowVO
.
getUrgentSalaryAmount
()));
int
i
=
payWalletDao
.
updatePayWallet
(
publishUpdatePayWallet
);
if
(
i
>
0
)
{
PayLogDO
payLogDO
=
buildPayLogDO
(
publisherWalletFlowVO
,
null
);
payLogDO
.
setCashAmtPaid
(
publisherWalletFlowVO
.
getCashAmount
().
add
(
publisherWalletFlowVO
.
getTopYxjAmount
()).
add
(
publisherWalletFlowVO
.
getUrgentYxjAmount
()));
payLogDO
.
setSalaryAmtPaid
(
publisherWalletFlowVO
.
getSalaryAmount
().
add
(
publisherWalletFlowVO
.
getTopSalaryAmount
()).
add
(
publisherWalletFlowVO
.
getUrgentSalaryAmount
()));
// 插入流水记录表
payWalletDao
.
insertPayLogDO
(
payLogDO
);
return
ResultBody
.
success
();
}
else
{
log
.
error
(
"发布订单时,用户钱包更新失败,用户id是:{},传入参数是:{}"
,
publisherWalletFlowVO
.
getUserAccountId
(),
publisherWalletFlowVO
);
return
ResultBody
.
error
(
"钱包操作错误"
);
}
}
else
if
(
publisherWalletFlowVO
!=
null
&&
publisherWalletFlowVO
.
getModeOfPayment
().
equals
(
PayMethodEnums
.
CANCEL_ORDER_TAKING
.
getCode
()))
{
// 等于200时 发布方取消订单,无飞手接单
PayWalletDO
publishUpdatePayWallet
=
new
PayWalletDO
();
publishUpdatePayWallet
.
setUserAccountId
(
publisherWalletFlowVO
.
getUserAccountId
());
publishUpdatePayWallet
.
setPid
(
publishWallet
.
getPid
());
publishUpdatePayWallet
.
setCashAmt
(
publishWallet
.
getCashAmt
().
add
(
publisherWalletFlowVO
.
getCashAmount
()));
publishUpdatePayWallet
.
setCashFreeze
(
publishWallet
.
getCashFreeze
().
add
(
publisherWalletFlowVO
.
getTopYxjAmount
())
.
add
(
publisherWalletFlowVO
.
getUrgentYxjAmount
()).
subtract
(
publisherWalletFlowVO
.
getCashAmount
()));
publishUpdatePayWallet
.
setSalaryAmt
(
publishWallet
.
getSalaryAmt
().
add
(
publisherWalletFlowVO
.
getSalaryAmount
()));
publishUpdatePayWallet
.
setSalaryFreeze
(
publishWallet
.
getSalaryFreeze
().
add
(
publisherWalletFlowVO
.
getTopSalaryAmount
())
.
add
(
publisherWalletFlowVO
.
getUrgentSalaryAmount
()).
subtract
(
publisherWalletFlowVO
.
getSalaryAmount
()));
int
i
=
payWalletDao
.
updatePayWallet
(
publishUpdatePayWallet
);
if
((
i
>
0
)
&&
(
publisherWalletFlowVO
.
getCashAmount
().
compareTo
(
BigDecimal
.
ZERO
)
>
0
||
publisherWalletFlowVO
.
getSalaryAmount
().
compareTo
(
BigDecimal
.
ZERO
)
>
0
))
{
PayLogDO
payLogDO
=
buildPayLogDO
(
publisherWalletFlowVO
,
null
);
// 插入流水记录表
payWalletDao
.
insertPayLogDO
(
payLogDO
);
return
ResultBody
.
success
();
}
else
{
log
.
error
(
"发布方取消订单,无飞手接单时,用户id是:{},传入参数是:{}"
,
publisherWalletFlowVO
.
getUserAccountId
(),
publisherWalletFlowVO
);
return
ResultBody
.
error
(
"钱包操作错误"
);
}
}
else
if
(
publisherWalletFlowVO
!=
null
&&
publisherWalletFlowVO
.
getModeOfPayment
().
equals
(
PayMethodEnums
.
RECEIVED_ORDER_CANCEL
.
getCode
()))
{
// 等于300时 发布方取消订单,有飞手接单
PayWalletDO
publishUpdatePayWallet
=
new
PayWalletDO
();
publishUpdatePayWallet
.
setUserAccountId
(
publisherWalletFlowVO
.
getUserAccountId
());
publishUpdatePayWallet
.
setPid
(
publishWallet
.
getPid
());
publishUpdatePayWallet
.
setCashAmt
(
publishWallet
.
getCashAmt
().
add
(
publisherWalletFlowVO
.
getCashAmount
()));
publishUpdatePayWallet
.
setCashFreeze
(
publishWallet
.
getCashFreeze
().
subtract
(
publisherWalletFlowVO
.
getCashAmount
())
.
add
(
publisherWalletFlowVO
.
getYxjCashPledge
()).
add
(
publisherWalletFlowVO
.
getTopYxjAmount
()).
add
(
publisherWalletFlowVO
.
getUrgentYxjAmount
()));
publishUpdatePayWallet
.
setSalaryAmt
(
publishWallet
.
getSalaryAmt
().
add
(
publisherWalletFlowVO
.
getSalaryAmount
()));
publishUpdatePayWallet
.
setSalaryFreeze
(
publishWallet
.
getSalaryFreeze
().
add
(
publisherWalletFlowVO
.
getSalaryCashPledge
())
.
subtract
(
publisherWalletFlowVO
.
getSalaryAmount
()).
add
(
publisherWalletFlowVO
.
getUrgentSalaryAmount
().
add
(
publisherWalletFlowVO
.
getTopSalaryAmount
())));
// 更新发布者钱包数据
int
publishUpdateCount
=
payWalletDao
.
updatePayWallet
(
publishUpdatePayWallet
);
if
(
publishUpdateCount
<=
0
)
{
log
.
error
(
"发布方取消订单,有飞手接单时,发单方用户钱包更新失败,更新参数是:{},发单方用户id是:{},传入参数是:{}"
,
publishUpdatePayWallet
,
publisherWalletFlowVO
.
getUserAccountId
(),
publisherWalletFlowVO
);
return
ResultBody
.
error
(
"钱包操作错误"
);
}
if
(
publisherWalletFlowVO
.
getCashAmount
().
compareTo
(
BigDecimal
.
ZERO
)
>
0
||
publisherWalletFlowVO
.
getSalaryAmount
().
compareTo
(
BigDecimal
.
ZERO
)
>
0
)
{
// 插入发布者流水记录表
sendBackPublishPayLog
(
publisherWalletFlowVO
,
1
);
}
// 飞手钱包更新信息
PayWalletDO
flyerUpdatePayWallet
=
new
PayWalletDO
();
// 断言此处必定不为空
assert
flyerWalletFlowVO
!=
null
;
flyerUpdatePayWallet
.
setUserAccountId
(
flyerWalletFlowVO
.
getUserAccountId
());
flyerUpdatePayWallet
.
setPid
(
flyerWallet
.
getPid
());
flyerUpdatePayWallet
.
setCashAmt
(
flyerWallet
.
getCashAmt
().
add
(
flyerWalletFlowVO
.
getCashAmount
()));
flyerUpdatePayWallet
.
setCashFreeze
(
flyerWallet
.
getCashFreeze
().
subtract
(
flyerWalletFlowVO
.
getCashAmount
()));
flyerUpdatePayWallet
.
setSalaryAmt
(
flyerWallet
.
getSalaryAmt
().
add
(
flyerWalletFlowVO
.
getSalaryAmount
()).
subtract
(
publisherWalletFlowVO
.
getPercentagePenaltyOfOrder
()));
flyerUpdatePayWallet
.
setSalaryFreeze
(
flyerWallet
.
getSalaryFreeze
().
subtract
(
flyerWalletFlowVO
.
getSalaryAmount
()));
int
flyerUpdateCount
=
payWalletDao
.
updatePayWallet
(
flyerUpdatePayWallet
);
if
(
flyerUpdateCount
>
0
)
{
// 记录订单保证金退回记录
if
(
flyerWalletFlowVO
.
getCashAmount
().
compareTo
(
BigDecimal
.
ZERO
)
>
0
||
flyerWalletFlowVO
.
getSalaryAmount
().
compareTo
(
BigDecimal
.
ZERO
)
>
0
)
{
sendBackPledge
(
flyerWalletFlowVO
);
}
// 获得违约金流水记录
paymentOfLiquidatedDamage
(
publisherWalletFlowVO
,
flyerWalletFlowVO
,
0
);
return
ResultBody
.
success
();
}
else
{
log
.
error
(
"发布方取消订单,有飞手接单时,飞手用户钱包更新失败,飞手用户id是:{},接单方传入参数是:{},发单方违约金是:{}"
,
flyerWalletFlowVO
.
getUserAccountId
(),
flyerWalletFlowVO
,
publisherWalletFlowVO
.
getPercentagePenaltyOfOrder
());
}
}
else
if
(
flyerWalletFlowVO
!=
null
&&
flyerWalletFlowVO
.
getModeOfPayment
().
equals
(
PayMethodEnums
.
FLYING_ORDER_TAKING
.
getCode
()))
{
// 状态为400时 表示飞手接单
// 飞手钱包更新信息
int
flyerUpdateCount
=
buildFlyerWallet
(
flyerWalletFlowVO
,
flyerWallet
);
if
(
flyerUpdateCount
>
0
)
{
PayLogDO
flyerPayLogDO
=
buildPayLogDO
(
null
,
flyerWalletFlowVO
);
// 插入流水记录表
payWalletDao
.
insertPayLogDO
(
flyerPayLogDO
);
return
ResultBody
.
success
();
}
else
{
log
.
error
(
"飞手抢单时,飞手用户钱包更新失败,飞手用户id是:{},传入参数是:{}"
,
flyerWalletFlowVO
.
getUserAccountId
(),
flyerWalletFlowVO
);
}
}
else
if
(
flyerWalletFlowVO
!=
null
&&
flyerWalletFlowVO
.
getModeOfPayment
().
equals
(
PayMethodEnums
.
CUSTOMER_SERVICE_CANCEL_ORDER
.
getCode
()))
{
// 状态为500时 客服判定飞手无责取消订单
// 飞手钱包更新信息
int
flyerUpdateCount
=
buildFlyerWallet
(
flyerWalletFlowVO
,
flyerWallet
);
if
(
flyerUpdateCount
>
0
)
{
PayLogDO
flyerPayLogDO
=
buildPayLogDO
(
null
,
flyerWalletFlowVO
);
// 插入流水记录表
payWalletDao
.
insertPayLogDO
(
flyerPayLogDO
);
return
ResultBody
.
success
();
}
else
{
log
.
error
(
"客服判定飞手无责取消订单时,飞手用户钱包更新失败,飞手用户id是:{},传入参数是:{}"
,
flyerWalletFlowVO
.
getUserAccountId
(),
flyerWalletFlowVO
);
}
}
else
if
(
flyerWalletFlowVO
!=
null
&&
flyerWalletFlowVO
.
getModeOfPayment
().
equals
(
PayMethodEnums
.
FLYER_CANCEL_ORDER
.
getCode
()))
{
// 状态为600时 飞手有责取消订单
// 飞手钱包更新信息
PayWalletDO
flyerUpdatePayWallet
=
new
PayWalletDO
();
flyerUpdatePayWallet
.
setUserAccountId
(
flyerWalletFlowVO
.
getUserAccountId
());
flyerUpdatePayWallet
.
setPid
(
flyerWallet
.
getPid
());
flyerUpdatePayWallet
.
setCashFreeze
(
flyerWallet
.
getCashFreeze
().
add
(
flyerWalletFlowVO
.
getYxjCashPledge
()));
flyerUpdatePayWallet
.
setSalaryFreeze
(
flyerWallet
.
getSalaryFreeze
().
add
(
flyerWalletFlowVO
.
getSalaryCashPledge
()));
int
flyerUpdateCount
=
payWalletDao
.
updatePayWallet
(
flyerUpdatePayWallet
);
if
(
flyerUpdateCount
<=
0
)
{
log
.
error
(
"飞手有责取消订单,飞手用户钱包更新失败,飞手用户id是:{},接单方传入参数是:{}"
,
flyerWalletFlowVO
.
getUserAccountId
(),
flyerWalletFlowVO
);
return
ResultBody
.
error
(
"钱包操作错误"
);
}
// 发单者钱包更新信息
PayWalletDO
publishUpdatePayWallet
=
new
PayWalletDO
();
// 断言此处必定不为空
assert
publisherWalletFlowVO
!=
null
;
publishUpdatePayWallet
.
setUserAccountId
(
publisherWalletFlowVO
.
getUserAccountId
());
publishUpdatePayWallet
.
setPid
(
publishWallet
.
getPid
());
publishUpdatePayWallet
.
setCashAmt
(
publishWallet
.
getCashAmt
().
add
(
publisherWalletFlowVO
.
getCashAmount
())
.
add
(
publisherWalletFlowVO
.
getTopYxjAmount
()).
add
(
publisherWalletFlowVO
.
getTopYxjAmount
()));
publishUpdatePayWallet
.
setSalaryAmt
(
publishWallet
.
getSalaryAmt
().
add
(
publisherWalletFlowVO
.
getSalaryAmount
())
.
subtract
(
flyerWalletFlowVO
.
getPercentagePenaltyOfOrder
()));
publishUpdatePayWallet
.
setCashFreeze
(
publishWallet
.
getCashFreeze
().
subtract
(
publisherWalletFlowVO
.
getCashAmount
())
.
subtract
(
publisherWalletFlowVO
.
getUrgentYxjAmount
()).
subtract
(
publisherWalletFlowVO
.
getTopYxjAmount
()));
publishUpdatePayWallet
.
setSalaryFreeze
(
publishWallet
.
getSalaryFreeze
().
subtract
(
publisherWalletFlowVO
.
getSalaryAmount
())
.
subtract
(
publisherWalletFlowVO
.
getUrgentSalaryAmount
()).
subtract
(
publisherWalletFlowVO
.
getTopSalaryAmount
()));
int
publishUpdateCount
=
payWalletDao
.
updatePayWallet
(
publishUpdatePayWallet
);
if
(
publishUpdateCount
>
0
)
{
// 记录飞手违约金流水
paymentOfLiquidatedDamage
(
publisherWalletFlowVO
,
flyerWalletFlowVO
,
1
);
if
(
publisherWalletFlowVO
.
getCashAmount
().
compareTo
(
BigDecimal
.
ZERO
)
>
0
||
publisherWalletFlowVO
.
getUrgentYxjAmount
().
compareTo
(
BigDecimal
.
ZERO
)
>
0
||
publisherWalletFlowVO
.
getTopYxjAmount
().
compareTo
(
BigDecimal
.
ZERO
)
>
0
||
publisherWalletFlowVO
.
getSalaryAmount
().
compareTo
(
BigDecimal
.
ZERO
)
>
0
||
publisherWalletFlowVO
.
getUrgentSalaryAmount
().
compareTo
(
BigDecimal
.
ZERO
)
>
0
||
publisherWalletFlowVO
.
getTopSalaryAmount
().
compareTo
(
BigDecimal
.
ZERO
)
>
0
)
{
// 记录退回订单金额
sendBackPublishPayLog
(
publisherWalletFlowVO
,
0
);
}
return
ResultBody
.
success
();
}
else
{
log
.
error
(
"飞手有责取消订单,发布者用户钱包更新失败,发布者用户id是:{},发布方传入参数是:{},接单方方违约金是:{}"
,
publisherWalletFlowVO
.
getUserAccountId
(),
publisherWalletFlowVO
,
flyerWalletFlowVO
.
getPercentagePenaltyOfOrder
());
}
}
else
if
(
publisherWalletFlowVO
!=
null
&&
publisherWalletFlowVO
.
getModeOfPayment
().
equals
(
PayMethodEnums
.
NORMAL_SETTLEMENT
.
getCode
()))
{
// 状态为700时 正常订单结算
// 解冻发布方订单的钱包金额
PayWalletDO
publishPayWalletDO
=
new
PayWalletDO
();
publishPayWalletDO
.
setUserAccountId
(
publisherWalletFlowVO
.
getUserAccountId
());
publishPayWalletDO
.
setPid
(
publishWallet
.
getPid
());
publishPayWalletDO
.
setCashFreeze
(
publishWallet
.
getCashFreeze
().
add
(
publisherWalletFlowVO
.
getCashAmount
())
.
add
(
publisherWalletFlowVO
.
getUrgentYxjAmount
()).
add
(
publisherWalletFlowVO
.
getTopYxjAmount
()));
publishPayWalletDO
.
setSalaryFreeze
(
publishWallet
.
getSalaryFreeze
().
add
(
publisherWalletFlowVO
.
getSalaryAmount
())
.
add
(
publisherWalletFlowVO
.
getTopSalaryAmount
()).
add
(
publisherWalletFlowVO
.
getUrgentSalaryAmount
()));
int
publishUpdateCount
=
payWalletDao
.
updatePayWallet
(
publishPayWalletDO
);
if
(
publishUpdateCount
<=
0
)
{
log
.
error
(
"正常结算时,发布者用户钱包更新失败,发布者id是:{},发布者传参是:{}"
,
publisherWalletFlowVO
.
getUserAccountId
(),
publisherWalletFlowVO
);
}
// 增加接单方钱包金额
assert
flyerWalletFlowVO
!=
null
;
int
flyerUpdateCount
=
addFlyerSalary
(
publisherWalletFlowVO
,
flyerWalletFlowVO
,
flyerWallet
);
if
(
flyerUpdateCount
>
0
)
{
// 记录订单保证金退回记录
sendBackPledge
(
flyerWalletFlowVO
);
// 记录订单结算流水记录
PayLogDO
flyerPayLogDO
=
buildFlyerLog
(
publisherWalletFlowVO
,
flyerWalletFlowVO
.
getUserAccountId
());
// 插入接单者流水记录表
payWalletDao
.
insertPayLogDO
(
flyerPayLogDO
);
return
ResultBody
.
success
();
}
else
{
log
.
error
(
"正常结算时,接单方用户钱包更新失败,接单者id是:{},发布者传参是:{}"
,
flyerWalletFlowVO
.
getUserAccountId
(),
publisherWalletFlowVO
);
}
}
else
if
(
publisherWalletFlowVO
!=
null
&&
publisherWalletFlowVO
.
getModeOfPayment
().
equals
(
PayMethodEnums
.
MODIFY_THE_ORDER
.
getCode
()))
{
// 状态为800时 发布方修改金额大于原来订单佣金
// 发布方还需补金额
if
(
releaseOrCancelOrderWallet
(
publisherWalletFlowVO
,
publishWallet
))
{
PayLogDO
payLogDO
=
buildPayLogDO
(
publisherWalletFlowVO
,
null
);
// 插入流水记录表
payWalletDao
.
insertPayLogDO
(
payLogDO
);
return
ResultBody
.
success
();
}
else
{
log
.
error
(
"发布方修改金额大于原来订单佣金时,用户钱包更新失败,用户id是:{},传入参数是:{}"
,
publisherWalletFlowVO
.
getUserAccountId
(),
publisherWalletFlowVO
);
return
ResultBody
.
error
(
"钱包操作错误"
);
}
}
else
if
(
publisherWalletFlowVO
!=
null
&&
publisherWalletFlowVO
.
getModeOfPayment
().
equals
(
PayMethodEnums
.
FLYING_HAND_NOT_CONFIRMED_GT
.
getCode
()))
{
// 状态为900时 飞手未确认修改金额大于原订单状态时订单结算
// 退回发布方后面补的金额
PayWalletDO
publishUpdatePayWallet
=
new
PayWalletDO
();
publishUpdatePayWallet
.
setUserAccountId
(
publisherWalletFlowVO
.
getUserAccountId
());
publishUpdatePayWallet
.
setPid
(
publishWallet
.
getPid
());
publishUpdatePayWallet
.
setSalaryAmt
(
publishWallet
.
getSalaryAmt
().
add
(
publisherWalletFlowVO
.
getRefundSalaryAmount
()));
publishUpdatePayWallet
.
setSalaryFreeze
(
publishWallet
.
getSalaryFreeze
().
subtract
(
publisherWalletFlowVO
.
getRefundSalaryAmount
()));
publishUpdatePayWallet
.
setCashAmt
(
publishWallet
.
getCashAmt
().
add
(
publisherWalletFlowVO
.
getRefundCashAmount
()));
publishUpdatePayWallet
.
setCashFreeze
(
publishWallet
.
getCashFreeze
().
subtract
(
publisherWalletFlowVO
.
getRefundCashAmount
()));
int
publishUpdateCount
=
payWalletDao
.
updatePayWallet
(
publishUpdatePayWallet
);
if
(
publishUpdateCount
<=
0
)
{
log
.
error
(
"飞手未确认修改金额大于原订单状态时,发布者用户钱包更新失败,发布者id是:{},发布者参数是:{}"
,
publisherWalletFlowVO
.
getUserAccountId
(),
publisherWalletFlowVO
);
}
// 记录发单方退回多余金额记录
refund
(
publisherWalletFlowVO
);
// 增加接单方钱包金额
assert
flyerWalletFlowVO
!=
null
;
int
flyerUpdateCount
=
addFlyerSalary
(
publisherWalletFlowVO
,
flyerWalletFlowVO
,
flyerWallet
);
if
(
flyerUpdateCount
>
0
)
{
// 记录订单保证金退回记录
sendBackPledge
(
flyerWalletFlowVO
);
// 记录订单结算流水记录
PayLogDO
flyerPayLogDO
=
buildFlyerLog
(
publisherWalletFlowVO
,
flyerWalletFlowVO
.
getUserAccountId
());
// 插入接单者流水记录表
payWalletDao
.
insertPayLogDO
(
flyerPayLogDO
);
return
ResultBody
.
success
();
}
else
{
log
.
error
(
"飞手未确认修改金额大于原订单状态时,接单方用户钱包更新失败,接单者id是:{},发布者传参是:{}"
,
flyerWalletFlowVO
.
getUserAccountId
(),
publisherWalletFlowVO
);
}
}
else
if
(
publisherWalletFlowVO
!=
null
&&
publisherWalletFlowVO
.
getModeOfPayment
().
equals
(
PayMethodEnums
.
FLYING_HAND_CONFIRM_LT
.
getCode
()))
{
// 状态为1000时 飞手确认修改金额小于原订单状态
// 退回发布方多余原订单金额,解冻钱包金额
PayWalletDO
publishUpdatePayWallet
=
new
PayWalletDO
();
publishUpdatePayWallet
.
setUserAccountId
(
publisherWalletFlowVO
.
getUserAccountId
());
publishUpdatePayWallet
.
setPid
(
publishWallet
.
getPid
());
publishUpdatePayWallet
.
setCashAmt
(
publishWallet
.
getCashAmt
().
add
(
publisherWalletFlowVO
.
getRefundCashAmount
()));
publishUpdatePayWallet
.
setCashFreeze
(
publishWallet
.
getCashFreeze
().
subtract
(
publisherWalletFlowVO
.
getRefundCashAmount
())
.
subtract
(
publisherWalletFlowVO
.
getCashAmount
()).
add
(
publisherWalletFlowVO
.
getUrgentYxjAmount
()).
add
(
publisherWalletFlowVO
.
getTopYxjAmount
()));
publishUpdatePayWallet
.
setSalaryAmt
(
publishWallet
.
getSalaryAmt
().
add
(
publisherWalletFlowVO
.
getRefundSalaryAmount
()));
publishUpdatePayWallet
.
setSalaryFreeze
(
publishWallet
.
getSalaryFreeze
().
subtract
(
publisherWalletFlowVO
.
getRefundSalaryAmount
())
.
subtract
(
publisherWalletFlowVO
.
getSalaryAmount
()).
add
(
publisherWalletFlowVO
.
getUrgentSalaryAmount
()).
add
(
publisherWalletFlowVO
.
getTopYxjAmount
()));
int
publishUpdateCount
=
payWalletDao
.
updatePayWallet
(
publishUpdatePayWallet
);
if
(
publishUpdateCount
<=
0
)
{
log
.
error
(
"飞手确认修改金额小于原订单状态,发布者用户钱包更新失败,发布者id是:{},发布者参数是:{}"
,
publisherWalletFlowVO
.
getUserAccountId
(),
publisherWalletFlowVO
);
}
// 记录多余退款记录
refund
(
publisherWalletFlowVO
);
// 增加接单方钱包金额
assert
flyerWalletFlowVO
!=
null
;
int
flyerUpdateCount
=
addFlyerSalary
(
publisherWalletFlowVO
,
flyerWalletFlowVO
,
flyerWallet
);
if
(
flyerUpdateCount
>
0
)
{
// 记录订单保证金退回记录
sendBackPledge
(
flyerWalletFlowVO
);
// 记录订单结算流水记录
PayLogDO
flyerPayLogDO
=
buildFlyerLog
(
publisherWalletFlowVO
,
flyerWalletFlowVO
.
getUserAccountId
());
// 插入接单者流水记录表
payWalletDao
.
insertPayLogDO
(
flyerPayLogDO
);
return
ResultBody
.
success
();
}
else
{
log
.
error
(
"飞手确认修改金额小于原订单状态,接单方用户钱包更新失败,接单者id是:{},发布者传参是:{}"
,
flyerWalletFlowVO
.
getUserAccountId
(),
publisherWalletFlowVO
);
}
}
return
ResultBody
.
error
(
"钱包操作错误"
);
}
/**
* @param publisherWalletFlowVO
* @param flag 0 未违约取消 1 违约取消
*/
private
void
sendBackPublishPayLog
(
PublisherWalletFlowVO
publisherWalletFlowVO
,
Integer
flag
)
{
PayLogDO
payLogDO
=
new
PayLogDO
();
String
payNo
=
"T"
+
TDateUtil
.
getDateStr
(
new
Date
(),
TDateUtil
.
TYPE
)
+
publisherWalletFlowVO
.
getUserAccountId
()
+
CodeUtil
.
getRandomNum
(
4
);
if
(
flag
==
0
)
{
payLogDO
.
setPayMethod
(
200
);
payLogDO
.
setCashAmtPaid
(
publisherWalletFlowVO
.
getCashAmount
().
add
(
publisherWalletFlowVO
.
getTopYxjAmount
()).
add
(
publisherWalletFlowVO
.
getUrgentYxjAmount
()));
payLogDO
.
setSalaryAmtPaid
(
publisherWalletFlowVO
.
getSalaryAmount
().
add
(
publisherWalletFlowVO
.
getTopSalaryAmount
()).
add
(
publisherWalletFlowVO
.
getUrgentSalaryAmount
()));
}
else
{
payLogDO
.
setPayMethod
(
300
);
payLogDO
.
setCashAmtPaid
(
publisherWalletFlowVO
.
getCashAmount
());
payLogDO
.
setSalaryAmtPaid
(
publisherWalletFlowVO
.
getSalaryAmount
());
}
payLogDO
.
setPayNo
(
payNo
);
payLogDO
.
setUserAccountId
(
publisherWalletFlowVO
.
getUserAccountId
());
payLogDO
.
setOperateUser
(
publisherWalletFlowVO
.
getUserAccountId
());
// 插入流水记录表
payWalletDao
.
insertPayLogDO
(
payLogDO
);
}
/**
* @param publisherWalletFlowVO 发布者信息
* @param flyerWalletFlowVO 接单者信息
* @param flag 0:发布者违约 1:抢单者违约
*/
private
void
paymentOfLiquidatedDamage
(
PublisherWalletFlowVO
publisherWalletFlowVO
,
FlyerWalletFlowVO
flyerWalletFlowVO
,
Integer
flag
)
{
PayLogDO
flyerPayLogDO
=
new
PayLogDO
();
String
payNo
;
Integer
userAccountId
;
BigDecimal
percentagePenaltyOfOrder
;
if
(
flag
==
0
)
{
// 生成支付流水号(规则"T" + 时间戳 + 用户id + 随机数4位)
payNo
=
"T"
+
TDateUtil
.
getDateStr
(
new
Date
(),
TDateUtil
.
TYPE
)
+
flyerWalletFlowVO
.
getUserAccountId
()
+
CodeUtil
.
getRandomNum
(
4
);
userAccountId
=
flyerWalletFlowVO
.
getUserAccountId
();
percentagePenaltyOfOrder
=
publisherWalletFlowVO
.
getPercentagePenaltyOfOrder
();
flyerPayLogDO
.
setOperateUser
(
userAccountId
);
}
else
{
// 生成支付流水号(规则"T" + 时间戳 + 用户id + 随机数4位)
payNo
=
"T"
+
TDateUtil
.
getDateStr
(
new
Date
(),
TDateUtil
.
TYPE
)
+
publisherWalletFlowVO
.
getUserAccountId
()
+
CodeUtil
.
getRandomNum
(
4
);
userAccountId
=
publisherWalletFlowVO
.
getUserAccountId
();
flyerPayLogDO
.
setOperateUser
(
userAccountId
);
percentagePenaltyOfOrder
=
flyerWalletFlowVO
.
getPercentagePenaltyOfOrder
();
}
flyerPayLogDO
.
setPayMethod
(
1300
);
flyerPayLogDO
.
setPayNo
(
payNo
);
flyerPayLogDO
.
setUserAccountId
(
userAccountId
);
flyerPayLogDO
.
setCashAmtPaid
(
BigDecimal
.
ZERO
);
flyerPayLogDO
.
setSalaryAmtPaid
(
percentagePenaltyOfOrder
.
abs
());
// 插入流水记录表
payWalletDao
.
insertPayLogDO
(
flyerPayLogDO
);
}
private
PayLogDO
buildFlyerLog
(
PublisherWalletFlowVO
publisherWalletFlowVO
,
Integer
userAccountId
)
{
PayLogDO
payLogWalletDO
=
new
PayLogDO
();
// 生成支付流水号(规则"T" + 时间戳 + 用户id + 随机数4位)
String
flyerPayNo
=
"T"
+
TDateUtil
.
getDateStr
(
new
Date
(),
TDateUtil
.
TYPE
)
+
userAccountId
+
CodeUtil
.
getRandomNum
(
4
);
payLogWalletDO
.
setPayMethod
(
publisherWalletFlowVO
.
getModeOfPayment
());
payLogWalletDO
.
setPayNo
(
flyerPayNo
);
payLogWalletDO
.
setUserAccountId
(
userAccountId
);
payLogWalletDO
.
setSalaryAmtPaid
(
publisherWalletFlowVO
.
getFlyerSalaryAmount
());
payLogWalletDO
.
setOperateUser
(
publisherWalletFlowVO
.
getUserAccountId
());
return
payLogWalletDO
;
}
private
void
sendBackPledge
(
FlyerWalletFlowVO
flyerWalletFlowVO
)
{
if
(
flyerWalletFlowVO
.
getCashAmount
().
compareTo
(
new
BigDecimal
(
0
))
>
0
||
flyerWalletFlowVO
.
getSalaryAmount
().
compareTo
(
new
BigDecimal
(
0
))
>
0
)
{
PayLogDO
flyerPledgeSendBack
=
buildPayLogDO
(
null
,
flyerWalletFlowVO
);
flyerPledgeSendBack
.
setPayMethod
(
500
);
// 插入接单者流水记录表
payWalletDao
.
insertPayLogDO
(
flyerPledgeSendBack
);
}
}
private
int
buildFlyerWallet
(
FlyerWalletFlowVO
flyerWalletFlowVO
,
PayWalletDO
flyerWallet
)
{
PayWalletDO
flyerUpdatePayWallet
=
new
PayWalletDO
();
flyerUpdatePayWallet
.
setUserAccountId
(
flyerWalletFlowVO
.
getUserAccountId
());
flyerUpdatePayWallet
.
setPid
(
flyerWallet
.
getPid
());
flyerUpdatePayWallet
.
setCashAmt
(
flyerWallet
.
getCashAmt
().
add
(
flyerWalletFlowVO
.
getCashAmount
()));
flyerUpdatePayWallet
.
setCashFreeze
(
flyerWallet
.
getCashFreeze
().
subtract
(
flyerWalletFlowVO
.
getCashAmount
()));
flyerUpdatePayWallet
.
setSalaryAmt
(
flyerWallet
.
getSalaryAmt
().
add
(
flyerWalletFlowVO
.
getSalaryAmount
()));
flyerUpdatePayWallet
.
setSalaryFreeze
(
flyerWallet
.
getSalaryFreeze
().
subtract
(
flyerWalletFlowVO
.
getSalaryAmount
()));
int
flyerUpdateCount
=
payWalletDao
.
updatePayWallet
(
flyerUpdatePayWallet
);
return
flyerUpdateCount
;
}
private
void
refund
(
PublisherWalletFlowVO
publisherWalletFlowVO
)
{
if
(
publisherWalletFlowVO
.
getRefundCashAmount
().
compareTo
(
BigDecimal
.
ZERO
)
!=
0
||
publisherWalletFlowVO
.
getRefundSalaryAmount
().
compareTo
(
BigDecimal
.
ZERO
)
!=
0
)
{
PayLogDO
publishPayLogDO
=
buildPayLogDO
(
publisherWalletFlowVO
,
null
);
publishPayLogDO
.
setCashAmtPaid
(
publisherWalletFlowVO
.
getRefundCashAmount
());
publishPayLogDO
.
setSalaryAmtPaid
(
publisherWalletFlowVO
.
getRefundSalaryAmount
());
payWalletDao
.
insertPayLogDO
(
publishPayLogDO
);
}
}
private
int
addFlyerSalary
(
PublisherWalletFlowVO
publisherWalletFlowVO
,
FlyerWalletFlowVO
flyerWalletFlowVO
,
PayWalletDO
flyerWallet
)
{
assert
flyerWalletFlowVO
!=
null
;
PayWalletDO
flyerPayWalletDO
=
new
PayWalletDO
();
flyerPayWalletDO
.
setUserAccountId
(
flyerWalletFlowVO
.
getUserAccountId
());
flyerPayWalletDO
.
setPid
(
flyerWallet
.
getPid
());
flyerPayWalletDO
.
setSalaryAmt
(
flyerWallet
.
getSalaryAmt
().
add
(
publisherWalletFlowVO
.
getFlyerSalaryAmount
()).
add
(
flyerWalletFlowVO
.
getSalaryAmount
()));
flyerPayWalletDO
.
setSalaryFreeze
(
flyerWallet
.
getSalaryFreeze
().
subtract
(
flyerWalletFlowVO
.
getSalaryAmount
()));
flyerPayWalletDO
.
setCashAmt
(
flyerWallet
.
getCashAmt
().
add
(
flyerWalletFlowVO
.
getCashAmount
()));
flyerPayWalletDO
.
setCashFreeze
(
flyerWallet
.
getCashFreeze
().
subtract
(
flyerWalletFlowVO
.
getCashAmount
()));
int
flyerUpdateCount
=
payWalletDao
.
updatePayWallet
(
flyerPayWalletDO
);
return
flyerUpdateCount
;
}
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
boolean
releaseOrCancelOrderWallet
(
PublisherWalletFlowVO
publisherWalletFlowVO
,
PayWalletDO
wallet
)
{
PayWalletDO
publishUpdatePayWallet
=
new
PayWalletDO
();
if
(
publisherWalletFlowVO
.
getCashAmount
()
==
null
)
{
publisherWalletFlowVO
.
setCashAmount
(
BigDecimal
.
ZERO
);
}
if
(
publisherWalletFlowVO
.
getSalaryAmount
()
==
null
)
{
publisherWalletFlowVO
.
setSalaryAmount
(
BigDecimal
.
ZERO
);
}
publishUpdatePayWallet
.
setUserAccountId
(
publisherWalletFlowVO
.
getUserAccountId
());
publishUpdatePayWallet
.
setPid
(
wallet
.
getPid
());
publishUpdatePayWallet
.
setCashAmt
(
wallet
.
getCashAmt
().
add
(
publisherWalletFlowVO
.
getCashAmount
()));
publishUpdatePayWallet
.
setCashFreeze
(
wallet
.
getCashFreeze
().
subtract
(
publisherWalletFlowVO
.
getCashAmount
()));
publishUpdatePayWallet
.
setSalaryAmt
(
wallet
.
getSalaryAmt
().
add
(
publisherWalletFlowVO
.
getSalaryAmount
()));
publishUpdatePayWallet
.
setSalaryFreeze
(
wallet
.
getSalaryFreeze
().
subtract
(
publisherWalletFlowVO
.
getSalaryAmount
()));
int
i
=
payWalletDao
.
updatePayWallet
(
publishUpdatePayWallet
);
if
(
i
>
0
)
{
return
true
;
}
return
false
;
}
public
PayLogDO
buildPayLogDO
(
PublisherWalletFlowVO
publisherWalletFlowVO
,
FlyerWalletFlowVO
flyerWalletFlowVO
)
{
// 记录资金流水记录
PayLogDO
payLogWalletDO
=
new
PayLogDO
();
// 获取用户钱包信息
if
(
publisherWalletFlowVO
!=
null
)
{
// 生成支付流水号(规则"T" + 时间戳 + 用户id + 随机数4位)
String
publishPayNo
=
"T"
+
TDateUtil
.
getDateStr
(
new
Date
(),
TDateUtil
.
TYPE
)
+
publisherWalletFlowVO
.
getUserAccountId
()
+
CodeUtil
.
getRandomNum
(
4
);
payLogWalletDO
.
setPayMethod
(
publisherWalletFlowVO
.
getModeOfPayment
());
payLogWalletDO
.
setPayNo
(
publishPayNo
);
payLogWalletDO
.
setUserAccountId
(
publisherWalletFlowVO
.
getUserAccountId
());
payLogWalletDO
.
setCashAmtPaid
(
publisherWalletFlowVO
.
getCashAmount
());
payLogWalletDO
.
setSalaryAmtPaid
(
publisherWalletFlowVO
.
getSalaryAmount
());
payLogWalletDO
.
setPayTime
(
publisherWalletFlowVO
.
getTimeOfPayment
());
payLogWalletDO
.
setOperateUser
(
publisherWalletFlowVO
.
getOperateUserAccountId
());
return
payLogWalletDO
;
}
if
(
flyerWalletFlowVO
!=
null
)
{
if
(
flyerWalletFlowVO
.
getCashAmount
()
==
null
)
{
flyerWalletFlowVO
.
setCashAmount
(
BigDecimal
.
ZERO
);
}
if
(
flyerWalletFlowVO
.
getSalaryAmount
()
==
null
)
{
flyerWalletFlowVO
.
setSalaryAmount
(
BigDecimal
.
ZERO
);
}
// 生成支付流水号(规则"T" + 时间戳 + 用户id + 随机数4位)
String
flyerPayNo
=
"T"
+
TDateUtil
.
getDateStr
(
new
Date
(),
TDateUtil
.
TYPE
)
+
flyerWalletFlowVO
.
getUserAccountId
()
+
CodeUtil
.
getRandomNum
(
4
);
payLogWalletDO
.
setPayMethod
(
flyerWalletFlowVO
.
getModeOfPayment
());
payLogWalletDO
.
setPayNo
(
flyerPayNo
);
payLogWalletDO
.
setUserAccountId
(
flyerWalletFlowVO
.
getUserAccountId
());
payLogWalletDO
.
setCashAmtPaid
(
flyerWalletFlowVO
.
getCashAmount
());
payLogWalletDO
.
setSalaryAmtPaid
(
flyerWalletFlowVO
.
getSalaryAmount
());
payLogWalletDO
.
setPayTime
(
flyerWalletFlowVO
.
getTimeOfPayment
());
payLogWalletDO
.
setOperateUser
(
flyerWalletFlowVO
.
getOperateUserAccountId
());
return
payLogWalletDO
;
}
return
null
;
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
ResultBody
feignTopUpCash
(
TopUpOrderVO
topUpOrderVO
)
{
// 获取用户openid查询到用户信息
UserAccountDO
userAccountDO
=
userServiceDao
.
getUserAccountInfoByOpenId
(
topUpOrderVO
.
getOpenid
());
// 根据金额转成元
BigDecimal
topUpAmount
=
BigDecimal
.
valueOf
(
topUpOrderVO
.
getAmount
()).
divide
(
new
BigDecimal
(
100
),
2
,
BigDecimal
.
ROUND_HALF_UP
);
// 根据用户id获取钱包金额信息
PayWalletDO
wallet
=
payWalletDao
.
getPayWalletByUser
(
userAccountDO
.
getId
());
// 修改云享金信息
PayWalletDO
payWalletDO
=
new
PayWalletDO
();
payWalletDO
.
setCashAmt
(
wallet
.
getCashAmt
().
add
(
topUpAmount
));
payWalletDO
.
setPid
(
wallet
.
getPid
());
payWalletDO
.
setUserAccountId
(
userAccountDO
.
getId
());
int
i
=
payWalletDao
.
updatePayWallet
(
payWalletDO
);
if
(
i
>
0
)
{
// 记录钱包流水
PayLogDO
payLogDO
=
new
PayLogDO
();
payLogDO
.
setUserAccountId
(
userAccountDO
.
getId
());
payLogDO
.
setPayNo
(
topUpOrderVO
.
getOrderNo
());
payLogDO
.
setPayMethod
(
PayMethodEnums
.
USER_TOP_UP
.
getCode
());
payLogDO
.
setCashAmtPaid
(
topUpAmount
);
payLogDO
.
setOperateUser
(
userAccountDO
.
getId
());
payWalletDao
.
insertPayLogDO
(
payLogDO
);
return
ResultBody
.
success
();
}
else
{
return
ResultBody
.
error
(
"充值时钱包操作错误!"
);
}
}
@Override
public
ResultBody
customerBillingDetail
(
Integer
userAccountId
,
WalletFlowQO
param
)
{
param
.
setUserAccountId
(
userAccountId
);
int
count
=
payWalletDao
.
countPayLog
(
param
);
if
(
count
==
0
)
{
return
ResultBody
.
success
(
PageResult
.
buildPage
(
param
.
getPageNo
(),
param
.
getPageSize
(),
count
));
}
if
(!
StringUtils
.
isBlank
(
param
.
getYearMonth
()))
{
param
.
setEndTime
(
TDateUtil
.
getDateStr
(
TDateUtil
.
getMonthLatestDay
(
TDateUtil
.
getDate
(
param
.
getYearMonth
()
+
"-01"
,
"yyyy-MM-dd"
)),
"yyyy-MM-dd"
)
+
" 23:59:59"
);
}
Integer
pageNo
=
param
.
getPageNo
();
param
.
buildCurrentPage
();
List
<
PayLogDO
>
payLogList
=
payWalletDao
.
getPayLog
(
param
);
return
ResultBody
.
success
(
PageResult
.
buildPage
(
pageNo
,
param
.
getPageSize
(),
count
,
payLogList
.
stream
().
map
(
PayLogDO:
:
buildUserBillingDetailVO
).
collect
(
Collectors
.
toList
())));
}
@Override
public
ResultBody
billingDetails
(
Integer
id
,
String
detailType
)
{
if
(
WithdrawalInfoVO
.
AMT
.
equals
(
detailType
))
{
PayLogDO
payLogDO
=
payWalletDao
.
getPayLogById
(
id
);
return
ResultBody
.
success
(
payLogDO
.
buildUserBillingDetailVO
());
}
else
{
XzWithdrawalApplyDO
apply
=
payWalletDao
.
getWithdrawalApplyByIdOrOuterTradeNo
(
id
,
null
);
UserBillingDetailVO
detail
=
apply
.
buildUserBillingDetailVO
();
List
<
WithdrawalLogDO
>
rebates
=
payWalletDao
.
listPayWithdrawalLog
(
apply
.
getId
());
detail
.
buildSchedules
(
rebates
);
return
ResultBody
.
success
(
detail
);
}
}
}
csm-service/cms-service-user/src/main/java/com/mmc/iuav/user/service/xzsz/WithdrawalService.java
0 → 100644
浏览文件 @
cb5118ae
package
com
.
mmc
.
iuav
.
user
.
service
.
xzsz
;
import
com.mmc.iuav.page.PageResult
;
import
com.mmc.iuav.response.ResultBody
;
import
com.mmc.iuav.user.model.qo.wallet.WalletFlowQO
;
import
com.mmc.iuav.user.model.qo.wallet.WithdrawalApplyQO
;
import
com.mmc.iuav.user.model.vo.wallet.ApplyWithdrawalVO
;
/**
* @author: zj
* @Date: 2023/8/23 16:09
*/
public
interface
WithdrawalService
{
ResultBody
apply
(
ApplyWithdrawalVO
applyWithdrawalVO
,
Integer
userAccountId
);
ResultBody
withdrawalList
(
Integer
userAccountId
,
WalletFlowQO
walletFlowQO
);
PageResult
listPageWithdrawalApply
(
WithdrawalApplyQO
param
);
ResultBody
approveWithdrawalApply
(
Integer
id
,
Integer
applyStatus
,
Integer
userAccountId
,
String
remark
);
}
csm-service/cms-service-user/src/main/java/com/mmc/iuav/user/service/xzsz/XzService.java
0 → 100644
浏览文件 @
cb5118ae
package
com
.
mmc
.
iuav
.
user
.
service
.
xzsz
;
import
cn.hutool.json.JSONObject
;
import
com.mmc.iuav.response.ResultBody
;
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.xzsz.SingleSubmitResp
;
import
com.mmc.iuav.user.xzsz.WithdrawalResp
;
import
java.util.List
;
/**
* @author: zj
* @Date: 2023/8/21 9:52
*/
public
interface
XzService
{
ResultBody
getTaxFundList
();
ResultBody
getCashPooling
();
List
<
UsableCashPoolingDTO
>
getUsableCashPooling
();
String
getContractScope
(
XzAuthVO
xzAuthVO
);
String
hasKeyByUrl
(
LoginSuccessDTO
loginSuccessDTO
);
String
xzAuthNotify
(
JSONObject
notify
);
JSONObject
getSignedResult
(
XzAuthVO
xzAuthVO
);
String
viewContract
(
String
documentId
);
ResultBody
clearTestFace
(
String
name
,
String
idCard
);
SingleSubmitResp
singleSubmit
(
XzWithdrawalVO
xzWithdrawalVO
);
WithdrawalResp
querySingleTrade
(
String
outerTradeNo
);
ResultBody
querySingleReceipt
(
String
frontLogNo
);
String
xzWithdrawNotify
(
JSONObject
notify
);
SingleSubmitResp
singleSubmitLimit
(
XzWithdrawalVO
xzWithdrawalVO
);
}
csm-service/cms-service-user/src/main/java/com/mmc/iuav/user/service/xzsz/impl/WithdrawalServiceImpl.java
0 → 100644
浏览文件 @
cb5118ae
package
com
.
mmc
.
iuav
.
user
.
service
.
xzsz
.
impl
;
import
com.mmc.iuav.general.CodeUtil
;
import
com.mmc.iuav.page.PageResult
;
import
com.mmc.iuav.response.ResultBody
;
import
com.mmc.iuav.response.ResultEnum
;
import
com.mmc.iuav.user.dao.RealNameAuthDao
;
import
com.mmc.iuav.user.dao.wallet.PayWalletDao
;
import
com.mmc.iuav.user.dao.xzsz.WithdrawalDao
;
import
com.mmc.iuav.user.dao.xzsz.XzDao
;
import
com.mmc.iuav.user.entity.RealNameAuthDO
;
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.WithdrawalApplyStatus
;
import
com.mmc.iuav.user.enums.WithdrawalMethod
;
import
com.mmc.iuav.user.enums.XzEnums
;
import
com.mmc.iuav.user.model.dto.wallet.WithdrawalApplyDTO
;
import
com.mmc.iuav.user.model.qo.wallet.WalletFlowQO
;
import
com.mmc.iuav.user.model.qo.wallet.WithdrawalApplyQO
;
import
com.mmc.iuav.user.model.vo.XzWithdrawalVO
;
import
com.mmc.iuav.user.model.vo.wallet.ApplyWithdrawalVO
;
import
com.mmc.iuav.user.service.xzsz.WithdrawalService
;
import
com.mmc.iuav.user.service.xzsz.XzService
;
import
com.mmc.iuav.user.util.TDateUtil
;
import
com.mmc.iuav.user.xzsz.SingleSubmitResp
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.transaction.interceptor.TransactionAspectSupport
;
import
javax.annotation.Resource
;
import
java.math.BigDecimal
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.stream.Collectors
;
/**
* @author: zj
* @Date: 2023/8/23 16:09
*/
@Service
@Slf4j
public
class
WithdrawalServiceImpl
implements
WithdrawalService
{
@Autowired
private
WithdrawalDao
withdrawalDao
;
@Autowired
private
XzDao
xzDao
;
@Resource
private
RealNameAuthDao
realNameAuthDao
;
@Autowired
private
PayWalletDao
payWalletDao
;
@Autowired
private
XzService
xzService
;
@Override
@Transactional
public
ResultBody
apply
(
ApplyWithdrawalVO
applyWithdrawalVO
,
Integer
userAccountId
)
{
// 判断该用户是否实名认证
RealNameAuthDO
realNameAuth
=
realNameAuthDao
.
getRealNameAuthByUId
(
userAccountId
);
if
(
realNameAuth
!=
null
&&
!
realNameAuth
.
getCheckStatus
().
equals
(
1
))
{
return
ResultBody
.
error
(
"实名认证未通过!"
);
}
if
(
realNameAuth
==
null
)
{
return
ResultBody
.
error
(
ResultEnum
.
PLEASE_ERFORM_REAL_NAME_AUTHENTICATION_FIRST
);
}
// 确保已电签
XzAuthDO
xzAuth
=
xzDao
.
getXzAuthByUserAccountId
(
userAccountId
);
if
(
xzAuth
!=
null
&&
!
xzAuth
.
getXzAuthStatus
().
equals
(
1
))
{
return
ResultBody
.
error
(
"电签未通过!"
);
}
if
(
xzAuth
==
null
)
{
return
ResultBody
.
error
(
"请先完成电签操作!"
);
}
// 当前提现金额是否足够
PayWalletDO
payWallet
=
payWalletDao
.
getPayWalletByUser
(
userAccountId
);
BigDecimal
salaryAmt
=
payWallet
.
getSalaryAmt
();
if
(
salaryAmt
.
compareTo
(
applyWithdrawalVO
.
getPayAmount
())
<
0
)
{
return
ResultBody
.
error
(
"当前金额大于可提现金额!"
);
}
applyWithdrawalVO
.
setUserAccountId
(
userAccountId
);
// 生成提现交易编号
String
outerTradeNo
=
"B"
+
TDateUtil
.
getDateStr
(
new
Date
(),
TDateUtil
.
TYPE
)
+
userAccountId
+
CodeUtil
.
getRandomNum
(
4
);
// 记录提现申请记录
XzWithdrawalApplyDO
xzWithdrawalApplyDO
=
new
XzWithdrawalApplyDO
(
applyWithdrawalVO
);
xzWithdrawalApplyDO
.
setOuterTradeNo
(
outerTradeNo
);
xzWithdrawalApplyDO
.
setEmpName
(
applyWithdrawalVO
.
getEmpName
());
xzWithdrawalApplyDO
.
setEmpPhone
(
applyWithdrawalVO
.
getEmpPhone
());
xzWithdrawalApplyDO
.
setLicenseId
(
realNameAuth
.
getIdNumber
());
xzWithdrawalApplyDO
.
setLicenseType
(
"ID_CARD"
);
xzWithdrawalApplyDO
.
setMonth
(
TDateUtil
.
getCurrentDateByType
(
"yyyy-MM"
));
xzWithdrawalApplyDO
.
setTradeStatus
(
"apply"
);
withdrawalDao
.
insertWithdrawalApply
(
xzWithdrawalApplyDO
);
// 生成提现流水编号
String
payNo
=
"T"
+
TDateUtil
.
getDateStr
(
new
Date
(),
TDateUtil
.
TYPE
)
+
userAccountId
+
CodeUtil
.
getRandomNum
(
4
);
// 记录流水记录
WithdrawalLogDO
withdrawalLogDO
=
new
WithdrawalLogDO
();
withdrawalLogDO
.
setPayNo
(
payNo
);
withdrawalLogDO
.
setPayTime
(
new
Date
());
withdrawalLogDO
.
setSalaryFreeze
(
applyWithdrawalVO
.
getPayAmount
());
withdrawalLogDO
.
setSalaryPaid
(
BigDecimal
.
ZERO
);
withdrawalLogDO
.
setXzWithdrawalApplyId
(
xzWithdrawalApplyDO
.
getId
());
withdrawalLogDO
.
setUserAccountId
(
userAccountId
);
withdrawalLogDO
.
setPayMethod
(
WithdrawalMethod
.
TXDJ
.
getCode
());
payWalletDao
.
insertWithdrawalLog
(
withdrawalLogDO
);
// 修改钱包信息,钱包冻结金额
PayWalletDO
payWalletDO
=
new
PayWalletDO
();
payWalletDO
.
setPid
(
payWallet
.
getPid
());
payWalletDO
.
setUserAccountId
(
userAccountId
);
payWalletDO
.
setSalaryAmt
(
payWallet
.
getSalaryAmt
().
subtract
(
applyWithdrawalVO
.
getPayAmount
()));
payWalletDO
.
setWdlFreeze
(
payWallet
.
getWdlFreeze
().
add
(
applyWithdrawalVO
.
getPayAmount
()));
int
updateCount
=
payWalletDao
.
updatePayWallet
(
payWalletDO
);
if
(
updateCount
!=
1
)
{
TransactionAspectSupport
.
currentTransactionStatus
().
setRollbackOnly
();
return
ResultBody
.
error
(
"提现申请失败,请稍后重试!"
);
}
return
ResultBody
.
success
(
xzWithdrawalApplyDO
.
getId
());
}
@Override
public
ResultBody
withdrawalList
(
Integer
userAccountId
,
WalletFlowQO
param
)
{
if
(!
StringUtils
.
isBlank
(
param
.
getYearMonth
()))
{
param
.
setEndTime
(
TDateUtil
.
getDateStr
(
TDateUtil
.
getMonthLatestDay
(
TDateUtil
.
getDate
(
param
.
getYearMonth
()
+
"-01"
,
"yyyy-MM-dd"
)),
"yyyy-MM-dd"
)
+
" 23:59:59"
);
}
param
.
setUserAccountId
(
userAccountId
);
int
count
=
payWalletDao
.
countPayWithdrawalLog
(
param
);
if
(
count
==
0
)
{
return
ResultBody
.
success
(
PageResult
.
buildPage
(
param
.
getPageNo
(),
param
.
getPageSize
(),
count
));
}
Integer
pageNo
=
param
.
getPageNo
();
param
.
buildCurrentPage
();
List
<
XzWithdrawalApplyDO
>
withdrawalLogList
=
payWalletDao
.
getWithdrawalListByUserAccountId
(
param
);
return
ResultBody
.
success
(
PageResult
.
buildPage
(
pageNo
,
param
.
getPageSize
(),
count
,
withdrawalLogList
.
stream
()
.
map
(
XzWithdrawalApplyDO:
:
buildUserBillingDetailVO
).
collect
(
Collectors
.
toList
())));
}
@Override
public
PageResult
listPageWithdrawalApply
(
WithdrawalApplyQO
param
)
{
int
count
=
payWalletDao
.
countWithdrawalApply
(
param
);
if
(
count
==
0
)
{
return
PageResult
.
buildPage
(
param
.
getPageNo
(),
param
.
getPageSize
(),
count
);
}
Integer
pageNo
=
param
.
getPageNo
();
param
.
buildCurrentPage
();
List
<
XzWithdrawalApplyDO
>
list
=
payWalletDao
.
listPageWithdrawalApply
(
param
);
List
<
WithdrawalApplyDTO
>
pageList
=
list
.
stream
().
map
(
XzWithdrawalApplyDO:
:
buildWithdrawalApplyDTO
).
collect
(
Collectors
.
toList
());
return
PageResult
.
buildPage
(
pageNo
,
param
.
getPageSize
(),
count
,
pageList
);
}
@Override
@Transactional
public
ResultBody
approveWithdrawalApply
(
Integer
id
,
Integer
applyStatus
,
Integer
approveUserAccountId
,
String
remark
)
{
if
(!
WithdrawalApplyStatus
.
TXCG
.
getCode
().
toString
().
equals
(
applyStatus
.
toString
())
&&
!
WithdrawalApplyStatus
.
TXSB
.
getCode
().
toString
().
equals
(
applyStatus
.
toString
()))
{
return
ResultBody
.
error
(
ResultEnum
.
WITHDRAWAL_APPLY_STATUS_ERROR
);
}
// 查询申请单信息
XzWithdrawalApplyDO
applyInfo
=
payWalletDao
.
getWithdrawalApplyByIdOrOuterTradeNo
(
id
,
null
);
if
(
applyInfo
==
null
)
{
return
ResultBody
.
error
(
ResultEnum
.
WITHDRAWAL_INFO_NOT_FIND_ERROR
);
}
if
(!(
WithdrawalApplyStatus
.
TXSQ
.
getCode
().
toString
()).
equals
(
applyInfo
.
getApplyStatus
().
toString
()))
{
return
ResultBody
.
error
(
ResultEnum
.
WITHDRAWAL_REPEAT_CHECK_ERROR
);
}
// 获取当前用户钱包信息
PayWalletDO
wallet
=
payWalletDao
.
getPayWalletByUser
(
applyInfo
.
getUserAccountId
());
// 修改申请单的操作人信息
XzWithdrawalApplyDO
apply
=
new
XzWithdrawalApplyDO
();
apply
.
setId
(
id
);
apply
.
setApplyStatus
(
applyStatus
);
apply
.
setRemark
(
remark
);
apply
.
setApproveUser
(
approveUserAccountId
);
apply
.
setApproveTime
(
new
Date
());
payWalletDao
.
updateWithdrawalApply
(
apply
);
if
(
WithdrawalApplyStatus
.
TXCG
.
getCode
().
toString
().
equals
(
applyStatus
.
toString
()))
{
// 如果判断审批状态是成功,那么就调用小猪结算提现接口
XzWithdrawalVO
xzWithdrawalVO
=
new
XzWithdrawalVO
();
xzWithdrawalVO
.
setUserAccountId
(
applyInfo
.
getUserAccountId
());
xzWithdrawalVO
.
setMonth
(
applyInfo
.
getMonth
());
xzWithdrawalVO
.
setOuterTradeNo
(
applyInfo
.
getOuterTradeNo
());
xzWithdrawalVO
.
setEmpName
(
applyInfo
.
getEmpName
());
xzWithdrawalVO
.
setEmpPhone
(
applyInfo
.
getEmpPhone
());
xzWithdrawalVO
.
setLicenseType
(
applyInfo
.
getLicenseType
());
xzWithdrawalVO
.
setLicenseId
(
applyInfo
.
getLicenseId
());
xzWithdrawalVO
.
setSettleType
(
applyInfo
.
getSettleType
());
xzWithdrawalVO
.
setPayAccount
(
applyInfo
.
getPayAccount
());
xzWithdrawalVO
.
setBankName
(
applyInfo
.
getBankName
());
xzWithdrawalVO
.
setPositionName
(
applyInfo
.
getPositionName
());
xzWithdrawalVO
.
setPayAmount
(
applyInfo
.
getPayAmount
());
SingleSubmitResp
singleSubmitResp
=
xzService
.
singleSubmit
(
xzWithdrawalVO
);
if
(
XzEnums
.
F
.
getCode
().
equals
(
singleSubmitResp
.
getIsSuccess
()))
{
// 更新提现申请记录
XzWithdrawalApplyDO
xzWithdrawalApplyDO
=
new
XzWithdrawalApplyDO
();
xzWithdrawalApplyDO
.
setOuterTradeNo
(
applyInfo
.
getOuterTradeNo
());
xzWithdrawalApplyDO
.
setTradeResult
(
XzEnums
.
failure
.
getName
());
xzWithdrawalApplyDO
.
setTradeStatus
(
XzEnums
.
failure
.
getCode
());
xzWithdrawalApplyDO
.
setErrorCode
(
singleSubmitResp
.
getErrorCode
());
xzWithdrawalApplyDO
.
setErrorMessage
(
singleSubmitResp
.
getErrorMessage
());
payWalletDao
.
updateWithdrawalApply
(
xzWithdrawalApplyDO
);
// 回滚用户钱包金额
rollbackPayWallet
(
applyInfo
,
wallet
);
}
}
else
{
// 审批未通过 退回金额 解除冻结
// 更新提现申请记录
XzWithdrawalApplyDO
xzWithdrawalApplyDO
=
new
XzWithdrawalApplyDO
();
xzWithdrawalApplyDO
.
setOuterTradeNo
(
applyInfo
.
getOuterTradeNo
());
xzWithdrawalApplyDO
.
setTradeResult
(
"审批未通过"
);
xzWithdrawalApplyDO
.
setTradeStatus
(
"approve"
);
payWalletDao
.
updateWithdrawalApply
(
xzWithdrawalApplyDO
);
int
updateCount
=
rollbackPayWallet
(
applyInfo
,
wallet
);
if
(
updateCount
!=
1
)
{
TransactionAspectSupport
.
currentTransactionStatus
().
setRollbackOnly
();
return
ResultBody
.
error
(
"操作失败,请稍后重试!"
);
}
}
return
ResultBody
.
success
();
}
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
int
rollbackPayWallet
(
XzWithdrawalApplyDO
applyInfo
,
PayWalletDO
wallet
)
{
// 生成提现流水编号
String
payNo
=
"T"
+
TDateUtil
.
getDateStr
(
new
Date
(),
TDateUtil
.
TYPE
)
+
applyInfo
.
getUserAccountId
()
+
CodeUtil
.
getRandomNum
(
4
);
// 记录流水记录
WithdrawalLogDO
withdrawalLogDO
=
new
WithdrawalLogDO
();
withdrawalLogDO
.
setPayNo
(
payNo
);
withdrawalLogDO
.
setPayTime
(
new
Date
());
withdrawalLogDO
.
setSalaryPaid
(
BigDecimal
.
valueOf
(
applyInfo
.
getPayAmount
()));
withdrawalLogDO
.
setXzWithdrawalApplyId
(
applyInfo
.
getId
());
withdrawalLogDO
.
setUserAccountId
(
applyInfo
.
getUserAccountId
());
withdrawalLogDO
.
setPayMethod
(
WithdrawalMethod
.
TXSB
.
getCode
());
withdrawalLogDO
.
setSalaryFreeze
(
new
BigDecimal
(
0
));
payWalletDao
.
insertWithdrawalLog
(
withdrawalLogDO
);
// 修改钱包信息,钱包冻结金额
PayWalletDO
payWalletDO
=
new
PayWalletDO
();
payWalletDO
.
setPid
(
wallet
.
getPid
());
payWalletDO
.
setUserAccountId
(
applyInfo
.
getUserAccountId
());
payWalletDO
.
setSalaryAmt
(
wallet
.
getSalaryAmt
().
add
(
BigDecimal
.
valueOf
(
applyInfo
.
getPayAmount
())));
payWalletDO
.
setWdlFreeze
(
wallet
.
getWdlFreeze
().
subtract
(
BigDecimal
.
valueOf
(
applyInfo
.
getPayAmount
())));
return
payWalletDao
.
updatePayWallet
(
payWalletDO
);
}
}
csm-service/cms-service-user/src/main/java/com/mmc/iuav/user/service/xzsz/impl/XzServiceImpl.java
0 → 100644
浏览文件 @
cb5118ae
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.alibaba.fastjson2.JSONArray
;
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
;
import
com.mmc.iuav.user.dao.RealNameAuthDao
;
import
com.mmc.iuav.user.dao.wallet.PayWalletDao
;
import
com.mmc.iuav.user.dao.xzsz.XzDao
;
import
com.mmc.iuav.user.entity.RealNameAuthDO
;
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
;
import
com.piggy.settlement.sdk.client.v2.bankreceipt.PiggyBankReceiptClient
;
import
com.piggy.settlement.sdk.client.v2.basics.PiggyOpenBasicsClient
;
import
com.piggy.settlement.sdk.client.v2.singlewithdraw.PiggySingleWithdrawalApiV2Client
;
import
com.piggy.settlement.sdk.util.v2.PiggyOpenBasicsAesUtil
;
import
com.piggy.settlement.sdk.vo.sign.PiggySignResultVo
;
import
com.piggy.settlement.sdk.vo.sign.PiggySignVo
;
import
com.piggy.settlement.sdk.vo.v2.bankreceipt.PiggyBankReceiptVo
;
import
com.piggy.settlement.sdk.vo.v2.basics.PiggyBasicsVo
;
import
com.piggy.settlement.sdk.vo.v2.singlewithdraw.PiggySingleWithdrawV2Vo
;
import
com.piggy.settlement.sdk.vo.v2.singlewithdraw.PiggySingleWithdrawalQueryV2Vo
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.transaction.interceptor.TransactionAspectSupport
;
import
org.springframework.util.CollectionUtils
;
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.List
;
import
java.util.Map
;
/**
* @author: zj
* @Date: 2023/8/21 9:52
*/
@Service
@Slf4j
public
class
XzServiceImpl
implements
XzService
{
@Autowired
private
UserSystemConstant
userSystemConstant
;
@Autowired
private
XzDao
xzDao
;
@Resource
private
PayWalletDao
payWalletDao
;
@Autowired
private
RealNameAuthDao
realNameAuthDao
;
@Override
public
ResultBody
getTaxFundList
()
{
PiggyOpenBasicsClient
piggyOpenBasicsClient
=
PiggyOpenBasicsClient
.
getInstanse
(
userSystemConstant
.
getXzAppSecret
(),
userSystemConstant
.
getXzDomain
());
JSONObject
jsonObject
=
piggyOpenBasicsClient
.
getTaxFundList
(
PiggyBasicsVo
.
builder
()
.
appKey
(
userSystemConstant
.
getXzAppKey
())
.
build
());
return
ResultBody
.
success
(
jsonObject
.
get
(
"data"
));
}
@Override
public
ResultBody
getCashPooling
()
{
PiggyOpenBasicsClient
piggyOpenBasicsClient
=
PiggyOpenBasicsClient
.
getInstanse
(
userSystemConstant
.
getXzAppSecret
(),
userSystemConstant
.
getXzDomain
());
JSONObject
jsonObject
=
piggyOpenBasicsClient
.
getCashPooling
(
PiggyBasicsVo
.
builder
()
.
appKey
(
userSystemConstant
.
getXzAppKey
())
.
build
());
System
.
out
.
println
(
jsonObject
.
toString
());
return
ResultBody
.
success
(
jsonObject
.
get
(
"data"
));
}
@Override
public
List
<
UsableCashPoolingDTO
>
getUsableCashPooling
()
{
PiggyOpenBasicsClient
piggyOpenBasicsClient
=
PiggyOpenBasicsClient
.
getInstanse
(
userSystemConstant
.
getXzAppSecret
(),
userSystemConstant
.
getXzDomain
());
JSONObject
jsonObject
=
piggyOpenBasicsClient
.
getTaxFundCashPooling
(
PiggyBasicsVo
.
builder
()
.
appKey
(
userSystemConstant
.
getXzAppKey
())
.
taxFundID
(
userSystemConstant
.
getTaxFundId
())
.
build
());
System
.
out
.
println
(
jsonObject
.
toString
());
List
<
UsableCashPoolingDTO
>
data
=
JSONArray
.
parseArray
(
jsonObject
.
get
(
"data"
).
toString
(),
UsableCashPoolingDTO
.
class
);
return
data
;
}
@Override
public
String
getContractScope
(
XzAuthVO
xzAuthVO
)
{
PiggySignApiClient
piggySignApiClient
=
PiggySignApiClient
.
getInstanse
(
userSystemConstant
.
getXzAppSecret
(),
userSystemConstant
.
getXzDomain
());
JSONObject
jsonObject
=
piggySignApiClient
.
getSignStatus
(
PiggySignResultVo
.
builder
()
.
appKey
(
userSystemConstant
.
getXzAppKey
())
.
idCardNo
(
xzAuthVO
.
getIdCardNo
())
.
userName
(
xzAuthVO
.
getUsername
())
.
position
(
userSystemConstant
.
getXzPosition
())
.
build
());
System
.
out
.
println
(
jsonObject
.
toString
());
return
jsonObject
.
toString
();
}
@Override
public
String
hasKeyByUrl
(
LoginSuccessDTO
loginSuccessDTO
)
{
// 获取实名认证信息
RealNameAuthDO
realNameAuthDO
=
realNameAuthDao
.
getRealNameAuthByUId
(
loginSuccessDTO
.
getUserAccountId
());
if
(
realNameAuthDO
==
null
)
{
return
"先完成实名认证再签署!"
;
}
XzAuthVO
xzAuthVO
=
new
XzAuthVO
(
realNameAuthDO
.
getUserName
(),
realNameAuthDO
.
getIdNumber
(),
loginSuccessDTO
.
getPhoneNum
(),
null
,
realNameAuthDO
.
getFrontIdImg
(),
realNameAuthDO
.
getBackIdImg
());
// 查询是否已电子签约
String
contractScope
=
this
.
getContractScope
(
xzAuthVO
);
com
.
alibaba
.
fastjson2
.
JSONObject
jsonObject1
=
com
.
alibaba
.
fastjson2
.
JSONObject
.
parseObject
(
contractScope
);
if
(
jsonObject1
.
get
(
"data"
)
!=
null
)
{
// 添加认证签约结果
JSONObject
signedResult
=
this
.
getSignedResult
(
xzAuthVO
);
if
(
signedResult
.
get
(
"msg"
).
equals
(
"success"
))
{
// log.info("Signed result: {}", signedResult);
List
<
JSONObject
>
jsonObjects
=
JSONArray
.
parseArray
(
signedResult
.
get
(
"data"
).
toString
(),
JSONObject
.
class
);
// log.info("jsonObjects : {}", com.alibaba.fastjson2.JSONObject.toJSONString(jsonObjects));
XzAuthDO
xzAuthDO
=
xzDao
.
getXzAuthByUserAccountId
(
loginSuccessDTO
.
getUserAccountId
());
if
(
xzAuthDO
==
null
&&
!
CollectionUtils
.
isEmpty
(
jsonObjects
))
{
xzAuthDO
=
buildXzAuthDO
(
loginSuccessDTO
,
jsonObjects
.
get
(
0
));
xzDao
.
addAuth
(
xzAuthDO
);
}
}
return
"success"
;
}
else
{
Map
<
String
,
Integer
>
userInfo
=
new
HashMap
<
String
,
Integer
>();
userInfo
.
put
(
"userAccountId"
,
loginSuccessDTO
.
getUserAccountId
());
PiggySignApiClient
piggySignApiClient
=
PiggySignApiClient
.
getInstanse
(
userSystemConstant
.
getXzAppSecret
(),
userSystemConstant
.
getXzDomain
());
JSONObject
jsonObject
=
piggySignApiClient
.
getSignUrl
(
PiggySignVo
.
builder
()
.
appKey
(
userSystemConstant
.
getXzAppKey
())
.
customParams
(
com
.
alibaba
.
fastjson2
.
JSONObject
.
toJSONString
(
userInfo
))
.
idCardNo
(
realNameAuthDO
.
getIdNumber
())
.
infoSource
(
"1"
)
.
jumpPage
(
"https://test.iuav.shop/network/#/pages/electronic-contracting/index"
)
.
mobile
(
loginSuccessDTO
.
getPhoneNum
())
.
notifyUrl
(
userSystemConstant
.
getAuthNotify
())
.
position
(
userSystemConstant
.
getXzPosition
())
.
userName
(
realNameAuthDO
.
getUserName
())
.
idCardImageFront
(
realNameAuthDO
.
getFrontIdImg
())
.
idCardImageBack
(
realNameAuthDO
.
getBackIdImg
())
.
build
());
// TODO 发送模板消息
return
jsonObject
.
get
(
"data"
).
toString
();
}
}
private
XzAuthDO
buildXzAuthDO
(
LoginSuccessDTO
loginSuccessDTO
,
JSONObject
jsonObject
)
{
XzAuthDO
xzAuthDO
=
new
XzAuthDO
();
xzAuthDO
.
setUserAccountId
(
loginSuccessDTO
.
getUserAccountId
());
xzAuthDO
.
setName
(
jsonObject
.
get
(
"name"
).
toString
());
xzAuthDO
.
setIdCardNo
(
jsonObject
.
get
(
"idCardNo"
).
toString
());
xzAuthDO
.
setMobile
(
jsonObject
.
get
(
"mobile"
).
toString
());
xzAuthDO
.
setBankAccount
(
jsonObject
.
get
(
"bankAccount"
).
toString
());
xzAuthDO
.
setSubsidiary_name
(
jsonObject
.
get
(
"subsidiary_name"
).
toString
());
xzAuthDO
.
setDocument_id
(
jsonObject
.
get
(
"document_id"
).
toString
());
xzAuthDO
.
setXzAuthStatus
(
1
);
return
xzAuthDO
;
}
@Transactional
@Override
public
String
xzAuthNotify
(
JSONObject
notify
)
{
log
.
info
(
"xzAuthNotify获取到的推送结果:{}"
,
notify
.
toString
());
// 认证成功,修改认证状态
if
(
notify
.
get
(
"code"
).
toString
().
equals
(
"0"
))
{
XzAuthDO
authDO
=
notify
.
get
(
"data"
,
XzAuthDO
.
class
);
Integer
userAccountId
=
(
Integer
)
com
.
alibaba
.
fastjson2
.
JSONObject
.
parseObject
(
authDO
.
getCustomParams
()).
get
(
"userAccountId"
);
if
(
userAccountId
!=
null
)
{
XzAuthDO
xzAuthDO
=
xzDao
.
getXzAuthByUserAccountId
(
userAccountId
);
if
(
xzAuthDO
==
null
)
{
authDO
.
setUserAccountId
(
userAccountId
);
authDO
.
setXzAuthStatus
(
1
);
xzDao
.
addAuth
(
authDO
);
return
"success"
;
}
}
}
return
null
;
}
@Override
public
JSONObject
getSignedResult
(
XzAuthVO
xzAuthVO
)
{
PiggySignApiClient
piggySignApiClient
=
PiggySignApiClient
.
getInstanse
(
userSystemConstant
.
getXzAppSecret
(),
userSystemConstant
.
getXzDomain
());
JSONObject
jsonObject
=
piggySignApiClient
.
getSignResult
(
PiggySignResultVo
.
builder
()
.
appKey
(
userSystemConstant
.
getXzAppKey
())
.
idCardNo
(
xzAuthVO
.
getIdCardNo
())
.
userName
(
xzAuthVO
.
getUsername
())
.
build
());
System
.
out
.
println
(
jsonObject
.
toString
());
return
jsonObject
;
}
@Override
public
String
viewContract
(
String
documentId
)
{
PiggySignApiClient
piggySignApiClient
=
PiggySignApiClient
.
getInstanse
(
userSystemConstant
.
getXzAppSecret
(),
userSystemConstant
.
getXzDomain
());
JSONObject
jsonObject
=
piggySignApiClient
.
viewContract
(
documentId
);
System
.
out
.
println
(
jsonObject
.
toString
());
return
jsonObject
.
toString
();
}
@Override
public
ResultBody
clearTestFace
(
String
name
,
String
idCard
)
{
String
s
=
HttpsRequestUtil
.
httpsGet
(
"https://uat.xzsz.ltd/contract/sign/clearTestPerson"
+
"name="
+
name
+
"&idCard="
+
idCard
,
null
);
return
ResultBody
.
success
(
s
);
}
@Override
public
SingleSubmitResp
singleSubmit
(
XzWithdrawalVO
xzWithdrawalVO
)
{
log
.
info
(
"singleSubmit param: {}"
,
com
.
alibaba
.
fastjson2
.
JSONObject
.
toJSONString
(
xzWithdrawalVO
));
PiggySingleWithdrawalApiV2Client
v2Client
=
PiggySingleWithdrawalApiV2Client
.
getInstanse
(
userSystemConstant
.
getXzAppSecret
(),
userSystemConstant
.
getXzDomain
());
JSONObject
jsonObject
=
v2Client
.
singleSubmit
(
PiggySingleWithdrawV2Vo
.
builder
()
.
appKey
(
userSystemConstant
.
getXzAppKey
())
.
bizAESContent
(
PiggyOpenBasicsAesUtil
.
produceAesData
(
userSystemConstant
.
getXzAppSecret
(),
userSystemConstant
.
getXzAes
(),
PiggySingleWithdrawV2Vo
.
SingleWithdrawV2Vo
.
builder
()
.
notifyUrl
(
userSystemConstant
.
getWithdrawNotify
())
.
taxFundId
(
userSystemConstant
.
getTaxFundId
())
.
month
(
xzWithdrawalVO
.
getMonth
())
.
outerTradeNo
(
xzWithdrawalVO
.
getOuterTradeNo
())
.
empNum
(
xzWithdrawalVO
.
getEmpNum
())
.
empName
(
xzWithdrawalVO
.
getEmpName
())
.
empPhone
(
xzWithdrawalVO
.
getEmpPhone
())
.
licenseType
(
xzWithdrawalVO
.
getLicenseType
())
.
licenseId
(
xzWithdrawalVO
.
getLicenseId
())
.
settleType
(
xzWithdrawalVO
.
getSettleType
())
.
payAccount
(
xzWithdrawalVO
.
getPayAccount
())
.
positionName
(
userSystemConstant
.
getXzPosition
())
.
payAmount
(
xzWithdrawalVO
.
getPayAmount
())
.
bankRemo
(
xzWithdrawalVO
.
getBankRemo
())
.
build
()))
.
build
());
log
.
info
(
"singleSubmit res: {}"
,
com
.
alibaba
.
fastjson2
.
JSONObject
.
toJSONString
(
jsonObject
));
SingleSubmitResp
singleSubmitResp
=
com
.
alibaba
.
fastjson2
.
JSONObject
.
parseObject
(
jsonObject
.
toString
(),
SingleSubmitResp
.
class
);
return
singleSubmitResp
;
}
@Override
public
SingleSubmitResp
singleSubmitLimit
(
XzWithdrawalVO
xzWithdrawalVO
)
{
PiggySingleWithdrawalApiV2Client
v2Client
=
PiggySingleWithdrawalApiV2Client
.
getInstanse
(
userSystemConstant
.
getXzAppSecret
(),
userSystemConstant
.
getXzDomain
());
JSONObject
jsonObject
=
v2Client
.
singleSubmitLimit
(
PiggySingleWithdrawV2Vo
.
builder
()
.
appKey
(
userSystemConstant
.
getXzAppKey
())
.
bizAESContent
(
PiggyOpenBasicsAesUtil
.
produceAesData
(
userSystemConstant
.
getXzAppKey
(),
userSystemConstant
.
getXzAes
(),
PiggySingleWithdrawV2Vo
.
SingleWithdrawV2Vo
.
builder
()
.
notifyUrl
(
xzWithdrawalVO
.
getNotifyUrl
())
.
taxFundId
(
xzWithdrawalVO
.
getTaxFundId
())
.
month
(
xzWithdrawalVO
.
getMonth
())
.
outerTradeNo
(
xzWithdrawalVO
.
getOuterTradeNo
())
.
empNum
(
xzWithdrawalVO
.
getEmpNum
())
.
empName
(
xzWithdrawalVO
.
getEmpName
())
.
empPhone
(
xzWithdrawalVO
.
getEmpPhone
())
.
licenseType
(
xzWithdrawalVO
.
getLicenseType
())
.
licenseId
(
xzWithdrawalVO
.
getLicenseId
())
.
settleType
(
xzWithdrawalVO
.
getSettleType
())
.
payAccount
(
xzWithdrawalVO
.
getPayAccount
())
.
positionName
(
xzWithdrawalVO
.
getPositionName
())
.
payAmount
(
xzWithdrawalVO
.
getPayAmount
())
.
bankRemo
(
xzWithdrawalVO
.
getBankRemo
())
.
build
()))
.
build
());
System
.
out
.
println
(
jsonObject
.
toString
());
SingleSubmitResp
singleSubmitResp
=
com
.
alibaba
.
fastjson2
.
JSONObject
.
parseObject
(
jsonObject
.
toString
(),
SingleSubmitResp
.
class
);
return
singleSubmitResp
;
}
@Override
public
WithdrawalResp
querySingleTrade
(
String
outerTradeNo
)
{
PiggySingleWithdrawalApiV2Client
v2Client
=
PiggySingleWithdrawalApiV2Client
.
getInstanse
(
userSystemConstant
.
getXzAppSecret
(),
userSystemConstant
.
getXzDomain
());
JSONObject
jsonObject
=
v2Client
.
querySingleTrade
(
PiggySingleWithdrawalQueryV2Vo
.
builder
()
.
appKey
(
userSystemConstant
.
getXzAppKey
())
.
outerTradeNo
(
outerTradeNo
)
.
build
());
WithdrawalResp
withdrawalResp
=
com
.
alibaba
.
fastjson2
.
JSONObject
.
parseObject
(
jsonObject
.
toString
(),
WithdrawalResp
.
class
);
return
withdrawalResp
;
}
@Override
public
ResultBody
querySingleReceipt
(
String
frontLogNo
)
{
PiggyBankReceiptClient
piggyBankReceiptClient
=
PiggyBankReceiptClient
.
getInstanse
(
userSystemConstant
.
getXzAppSecret
(),
userSystemConstant
.
getXzDomain
());
JSONObject
jsonObject
=
piggyBankReceiptClient
.
getSingleReceipt
(
PiggyBankReceiptVo
.
builder
()
.
appKey
(
userSystemConstant
.
getXzAppKey
())
.
frontLogNo
(
frontLogNo
)
.
build
());
System
.
out
.
println
(
jsonObject
.
toString
());
if
(
jsonObject
.
get
(
"isSuccess"
).
toString
().
equals
(
"T"
))
{
return
ResultBody
.
success
(
jsonObject
.
get
(
"data"
));
}
else
{
return
ResultBody
.
error
(
jsonObject
.
get
(
"errorMessage"
).
toString
());
}
}
@Override
@Transactional
public
String
xzWithdrawNotify
(
JSONObject
notify
)
{
log
.
info
(
"xzWithdrawNotify获取到的推送结果:{}"
,
notify
.
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
());
// 获取用户钱包信息
PayWalletDO
wallet
=
payWalletDao
.
getPayWalletByUser
(
withdrawCashApplyDetails
.
getUserAccountId
());
if
(
XzEnums
.
submit_result
.
getCode
().
equals
(
data
.
getNotifyType
()))
{
// 对上报的数据进行业务校验,例如:是否超限、是否有余额、是否有电签、参数是否准确等等前置校验。如果校验成功,订单进入待发队列等待发放
log
.
info
(
"deal submitResult"
);
// 判断返回的状态时否是成功
if
(
XzEnums
.
success
.
getCode
().
equals
(
data
.
getTradeStatus
()))
{
// 更新提现申请记录
XzWithdrawalApplyDO
xzWithdrawalApplyDO
=
new
XzWithdrawalApplyDO
();
xzWithdrawalApplyDO
.
setOuterTradeNo
(
data
.
getOuterTradeNo
());
xzWithdrawalApplyDO
.
setSubmitStatus
(
data
.
getTradeStatus
());
xzWithdrawalApplyDO
.
setTradeResult
(
data
.
getTradeResult
());
xzWithdrawalApplyDO
.
setTradeStatus
(
"await"
);
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
);
// 提现失败回滚用户金额
callbackUserPayWallet
(
data
,
withdrawCashApplyDetails
,
wallet
,
0
);
}
}
else
if
(
XzEnums
.
trade_result
.
getCode
().
equals
(
data
.
getNotifyType
()))
{
// 根据回调信息返回数据更新提现申请
if
(
withdrawCashApplyDetails
.
getTradeStatus
()
!=
null
&&
withdrawCashApplyDetails
.
getTradeStatus
().
equals
(
XzEnums
.
success
.
getCode
()))
{
return
"success"
;
}
XzWithdrawalApplyDO
xzWithdrawalApplyDO
=
new
XzWithdrawalApplyDO
();
int
updateCount
;
// 判断返回的是成功还是失败
if
(
XzEnums
.
success
.
getCode
().
equals
(
data
.
getTradeStatus
()))
{
// 修改提现申请状态
xzWithdrawalApplyDO
.
setTradeStatus
(
XzEnums
.
success
.
getCode
());
xzWithdrawalApplyDO
.
setTradeTime
(
data
.
getTradeTime
());
xzWithdrawalApplyDO
.
setOuterTradeNo
(
data
.
getOuterTradeNo
());
xzWithdrawalApplyDO
.
setFrontLogNo
(
data
.
getFrontLogNo
());
xzWithdrawalApplyDO
.
setTradeResult
(
data
.
getTradeResult
());
updateCount
=
payWalletDao
.
updateWithdrawalApply
(
xzWithdrawalApplyDO
);
if
(
updateCount
!=
1
)
{
log
.
error
(
"回调返回提现成功时,修改提现申请信息失败,信息是:{}"
,
JSON
.
toJSONString
(
xzWithdrawalApplyDO
));
TransactionAspectSupport
.
currentTransactionStatus
().
setRollbackOnly
();
return
"error"
;
}
// 解冻冻结金,记录流水
callbackUserPayWallet
(
data
,
withdrawCashApplyDetails
,
wallet
,
1
);
return
"success"
;
}
else
if
(
XzEnums
.
handle
.
getCode
().
equals
(
data
.
getTradeStatus
()))
{
// 修改提现申请状态
xzWithdrawalApplyDO
.
setTradeStatus
(
XzEnums
.
handle
.
getCode
());
xzWithdrawalApplyDO
.
setTradeTime
(
data
.
getTradeTime
());
xzWithdrawalApplyDO
.
setOuterTradeNo
(
data
.
getOuterTradeNo
());
xzWithdrawalApplyDO
.
setFrontLogNo
(
data
.
getFrontLogNo
());
xzWithdrawalApplyDO
.
setTradeResult
(
data
.
getTradeResult
());
updateCount
=
payWalletDao
.
updateWithdrawalApply
(
xzWithdrawalApplyDO
);
if
(
updateCount
!=
1
)
{
log
.
error
(
"回调返回提现交易中时,修改提现申请信息失败,信息是:{}"
,
JSON
.
toJSONString
(
xzWithdrawalApplyDO
));
TransactionAspectSupport
.
currentTransactionStatus
().
setRollbackOnly
();
return
"error"
;
}
}
else
{
// 修改提现申请状态
xzWithdrawalApplyDO
.
setTradeStatus
(
XzEnums
.
failure
.
getCode
());
xzWithdrawalApplyDO
.
setErrorMessage
(
data
.
getTradeFailCode
());
xzWithdrawalApplyDO
.
setTradeTime
(
data
.
getTradeTime
());
xzWithdrawalApplyDO
.
setOuterTradeNo
(
data
.
getOuterTradeNo
());
xzWithdrawalApplyDO
.
setTradeResult
(
data
.
getTradeResult
());
updateCount
=
payWalletDao
.
updateWithdrawalApply
(
xzWithdrawalApplyDO
);
if
(
updateCount
!=
1
)
{
log
.
error
(
"回调返回提现交易中时,修改提现申请信息失败,信息是:{}"
,
JSON
.
toJSONString
(
xzWithdrawalApplyDO
));
TransactionAspectSupport
.
currentTransactionStatus
().
setRollbackOnly
();
return
"error"
;
}
// 提现失败回滚用户金额
callbackUserPayWallet
(
data
,
withdrawCashApplyDetails
,
wallet
,
0
);
}
}
}
else
{
log
.
info
(
"xzWithdrawNotify fail:{}"
,
notify
);
}
return
"success"
;
}
/**
* @param data 回调返回的数据
* @param withdrawCashApplyDetails 提现申请信息
* @param wallet 用户钱包信息
* @param flag 0:失败 1:成功
*/
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
callbackUserPayWallet
(
WithdrawalResp
.
Data
data
,
XzWithdrawalApplyDO
withdrawCashApplyDetails
,
PayWalletDO
wallet
,
Integer
flag
)
{
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
());
if
(
flag
==
0
)
{
withdrawalLogDO
.
setPayMethod
(
WithdrawalMethod
.
TXSB
.
getCode
());
}
else
{
withdrawalLogDO
.
setPayMethod
(
WithdrawalMethod
.
TXCG
.
getCode
());
}
withdrawalLogDO
.
setSalaryFreeze
(
BigDecimal
.
ZERO
);
payWalletDao
.
insertWithdrawalLog
(
withdrawalLogDO
);
// 修改钱包信息,钱包冻结金额
PayWalletDO
payWalletDO
=
new
PayWalletDO
();
payWalletDO
.
setPid
(
wallet
.
getPid
());
payWalletDO
.
setUserAccountId
(
withdrawCashApplyDetails
.
getUserAccountId
());
if
(
flag
==
0
)
{
payWalletDO
.
setSalaryAmt
(
wallet
.
getSalaryAmt
().
add
(
data
.
getPayAmount
()));
}
else
{
payWalletDO
.
setSalaryWdl
(
wallet
.
getSalaryWdl
().
add
(
data
.
getPayAmount
()));
}
payWalletDO
.
setWdlFreeze
(
wallet
.
getWdlFreeze
().
subtract
(
data
.
getPayAmount
()));
int
updatePayWalletCount
=
payWalletDao
.
updatePayWallet
(
payWalletDO
);
if
(
updatePayWalletCount
!=
1
)
{
log
.
error
(
"回调返回提现时,修改钱包信息失败,信息是:{}"
,
JSON
.
toJSONString
(
payWalletDO
));
TransactionAspectSupport
.
currentTransactionStatus
().
setRollbackOnly
();
}
}
public
String
decrypt
(
String
aesData
)
{
try
{
byte
[]
raw
=
userSystemConstant
.
getXzAppSecret
().
getBytes
(
"ASCII"
);
SecretKeySpec
skeySpec
=
new
SecretKeySpec
(
raw
,
"AES"
);
Cipher
cipher
=
Cipher
.
getInstance
(
"AES/CBC/PKCS5Padding"
);
IvParameterSpec
iv
=
new
IvParameterSpec
(
userSystemConstant
.
getXzAes
().
getBytes
());
cipher
.
init
(
Cipher
.
DECRYPT_MODE
,
skeySpec
,
iv
);
Charset
charset
=
Charset
.
forName
(
"UTF-8"
);
String
tempStr
=
URLDecoder
.
decode
(
aesData
,
charset
);
byte
[]
encrypted1
=
Base64
.
decode
(
tempStr
);
byte
[]
original
=
cipher
.
doFinal
(
encrypted1
);
String
jsonParam
=
new
String
(
original
,
"UTF-8"
);
return
jsonParam
;
}
catch
(
Exception
e
)
{
System
.
out
.
println
(
"AES解密异常"
+
e
);
}
return
""
;
}
}
csm-service/cms-service-user/src/main/java/com/mmc/iuav/user/util/PatternUtil.java
0 → 100644
浏览文件 @
cb5118ae
package
com
.
mmc
.
iuav
.
user
.
util
;
/**
* 正则表达式匹配
*
* @author tyg
* @date 2018年9月21日下午4:32:27
*/
public
class
PatternUtil
{
/**
* 手机号码匹配
*/
public
static
final
String
PHONE_REG
=
"^((13[0-9])|(14[5,7])|(15[0-3,5-9])|(17[0,3,5-8])|(18[0-9])|166|198|199|(147))\\d{8}$"
;
/**
* 座机号码匹配
*/
public
static
final
String
MOBILE_REG
=
"^\\d{3}-\\d{8}|\\d{4}-\\d{7}$"
;
/**
* 汉字匹配
*/
public
static
final
String
CHIINESE_REG
=
"^[\\u4e00-\\u9fa5]{0,}$"
;
/**
* 英文和数字匹配(不区分大小写)
*/
public
static
final
String
LETTER_NUMBER_REG
=
"^[A-Za-z0-9]+$"
;
/**
* 非零开头的最多带两位小数的数字
*/
public
static
final
String
DECIMAL_REG
=
"^([1-9][0-9]*)+(.[0-9]{1,2})?$"
;
/**
* 纯数字
*/
public
static
final
String
ONLY_NUMBER_REG
=
"^[0-9]{1,}$"
;
/**
* 纯字母
*/
public
static
final
String
ONLY_LETTER_REG
=
"^[a-zA-Z]{1,}$"
;
/**
* 邮箱email
*/
public
static
final
String
EMAIL_REG
=
"^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$"
;
/**
* 日期规则
*/
public
static
final
String
DATE_YMD
=
"^(\\d{4}-\\d{2}-\\d{2})$"
;
/**
* 时间规则
*/
public
static
final
String
DATE_YMDHDS
=
"^(\\d{4}-\\d{2}-\\d{2}\\s\\d{2}:\\d{2}:\\d{2})$"
;
/**
* 银行卡卡号位数
*/
public
final
static
String
BANK_CARD_NUMBER
=
"^\\d{16}|\\d{19}$"
;
/**
* 身份证号码位数限制
*/
public
final
static
String
ID_CARD
=
"^\\d{15}|(\\d{17}[0-9,x,X])$"
;
/**
* 是否为手机号码
*
* @param phone
* @return
* @return boolean
* @author tyg
* @date 2018年9月25日上午9:44:38
*/
public
static
boolean
isPhone
(
String
phone
)
{
return
phone
.
matches
(
PHONE_REG
);
}
/**
* 是否为座机号码
*
* @param mobile
* @return
* @return boolean
* @author tyg
* @date 2018年9月25日上午9:44:38
*/
public
static
boolean
isMobile
(
String
mobile
)
{
return
mobile
.
matches
(
MOBILE_REG
);
}
public
static
void
main
(
String
[]
args
)
{
System
.
out
.
println
(
isPhone
(
"13228116626"
));
System
.
out
.
println
(
isMobile
(
"028-63358547"
));
}
}
csm-service/cms-service-user/src/main/java/com/mmc/iuav/user/util/PrivacyUtil.java
0 → 100644
浏览文件 @
cb5118ae
package
com
.
mmc
.
iuav
.
user
.
util
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.builder.ReflectionToStringBuilder
;
import
java.lang.reflect.Field
;
import
java.util.Arrays
;
import
java.util.HashSet
;
import
java.util.Set
;
import
java.util.regex.Pattern
;
/**
* 日志辅助类,用来处理敏感信息,进行脱敏
*
* @author tyg
* @date 2018年5月5日下午4:01:22
*/
public
class
PrivacyUtil
{
//银行账户:显示前六后四,范例:622848******4568
public
static
String
encryptBankAcct
(
String
bankAcct
)
{
if
(
bankAcct
==
null
)
{
return
""
;
}
return
replaceBetween
(
bankAcct
,
6
,
bankAcct
.
length
()
-
4
,
null
);
}
//身份证号码:显示前六后四,范例:110601********2015
public
static
String
encryptIdCard
(
String
idCard
)
{
if
(
idCard
==
null
)
{
return
""
;
}
return
replaceBetween
(
idCard
,
6
,
idCard
.
length
()
-
4
,
null
);
}
//客户email:显示前二后四,范例:abxx@xxx.com
public
static
String
encryptEmail
(
String
email
)
{
//判断是否为邮箱地址
if
(
email
==
null
||
!
Pattern
.
matches
(
PatternUtil
.
EMAIL_REG
,
email
))
{
return
""
;
}
StringBuilder
sb
=
new
StringBuilder
(
email
);
//邮箱账号名只显示前两位
int
at_position
=
sb
.
indexOf
(
"@"
);
if
(
at_position
>
2
)
{
sb
.
replace
(
2
,
at_position
,
StringUtils
.
repeat
(
"x"
,
at_position
-
2
));
}
//邮箱域名隐藏
int
period_position
=
sb
.
lastIndexOf
(
"."
);
sb
.
replace
(
at_position
+
1
,
period_position
,
StringUtils
.
repeat
(
"x"
,
period_position
-
at_position
-
1
));
return
sb
.
toString
();
}
//手机:显示前三后四,范例:189****3684
public
static
String
encryptPhoneNo
(
String
phoneNo
)
{
if
(
phoneNo
==
null
)
{
return
""
;
}
return
replaceBetween
(
phoneNo
,
3
,
phoneNo
.
length
()
-
4
,
null
);
}
/**
* @param object 待处理对象
* @param fieldNames 需要处理的属性
* @return 将对象转换为字符串,并对敏感信息进行处理
*/
public
static
String
encryptSensitiveInfo
(
Object
object
,
String
[]
fieldNames
)
{
return
encryptSensitiveInfo
(
object
,
fieldNames
,
null
);
}
/**
* @param object 待处理对象
* @param fieldNames 需要处理的属性
* @param excludes 不需要显示的属性
* @return 将对象转换为字符串,并对敏感信息进行处理
*/
public
static
String
encryptSensitiveInfo
(
Object
object
,
String
[]
fieldNames
,
String
[]
excludes
)
{
if
(
fieldNames
==
null
)
{
fieldNames
=
new
String
[
0
];
}
//合并数组
Set
<
String
>
set
=
new
HashSet
<
String
>(
Arrays
.
asList
(
fieldNames
));
if
(
excludes
!=
null
)
{
for
(
int
i
=
0
;
i
<
excludes
.
length
;
i
++)
{
set
.
add
(
excludes
[
i
]);
}
}
//将对象转换为字符串
String
str
=
ReflectionToStringBuilder
.
toStringExclude
(
object
,
set
.
toArray
(
new
String
[
0
]));
//处理敏感信息
StringBuilder
sb
=
new
StringBuilder
(
str
);
sb
.
deleteCharAt
(
sb
.
length
()
-
1
);
for
(
int
i
=
0
;
i
<
fieldNames
.
length
;
i
++)
{
String
fieldName
=
fieldNames
[
i
];
try
{
Field
f
=
object
.
getClass
().
getDeclaredField
(
fieldName
);
f
.
setAccessible
(
true
);
String
value
=
encryptSensitiveInfo
(
String
.
valueOf
(
f
.
get
(
object
)));
if
(
i
!=
0
||
sb
.
charAt
(
sb
.
length
()
-
1
)
!=
'['
)
{
sb
.
append
(
","
);
}
sb
.
append
(
fieldName
).
append
(
"="
).
append
(
value
);
}
catch
(
Exception
e
)
{
}
}
sb
.
append
(
"]"
);
str
=
sb
.
toString
();
return
str
;
}
/**
* 对敏感信息进行处理。使用正则表达式判断使用哪种规则
*
* @param sourceStr 需要处理的敏感信息
* @return
* @return String
* @author tyg
* @date 2018年5月5日下午3:59:28
*/
public
static
String
encryptSensitiveInfo
(
String
sourceStr
)
{
if
(
sourceStr
==
null
)
{
return
""
;
}
if
(
Pattern
.
matches
(
PatternUtil
.
PHONE_REG
,
sourceStr
))
{
return
encryptPhoneNo
(
sourceStr
);
}
else
if
(
Pattern
.
matches
(
PatternUtil
.
EMAIL_REG
,
sourceStr
))
{
return
encryptEmail
(
sourceStr
);
}
else
if
(
Pattern
.
matches
(
PatternUtil
.
BANK_CARD_NUMBER
,
sourceStr
))
{
return
encryptBankAcct
(
sourceStr
);
}
else
if
(
Pattern
.
matches
(
PatternUtil
.
ID_CARD
,
sourceStr
))
{
return
encryptIdCard
(
sourceStr
);
}
else
{
return
sourceStr
;
}
}
/**
* 将字符串开始位置到结束位置之间的字符用指定字符替换
*
* @param sourceStr 待处理字符串
* @param begin 开始位置
* @param end 结束位置
* @param replacement 替换字符
* @return
*/
private
static
String
replaceBetween
(
String
sourceStr
,
int
begin
,
int
end
,
String
replacement
)
{
if
(
sourceStr
==
null
)
{
return
""
;
}
if
(
replacement
==
null
)
{
replacement
=
"*"
;
}
int
replaceLength
=
end
-
begin
;
if
(
StringUtils
.
isNotBlank
(
sourceStr
)
&&
replaceLength
>
0
)
{
StringBuilder
sb
=
new
StringBuilder
(
sourceStr
);
sb
.
replace
(
begin
,
end
,
StringUtils
.
repeat
(
replacement
,
replaceLength
));
return
sb
.
toString
();
}
else
{
return
sourceStr
;
}
}
}
\ No newline at end of file
csm-service/cms-service-user/src/main/java/com/mmc/iuav/user/util/TDateUtil.java
0 → 100644
浏览文件 @
cb5118ae
package
com
.
mmc
.
iuav
.
user
.
util
;
import
java.text.ParseException
;
import
java.text.SimpleDateFormat
;
import
java.util.*
;
/**
* @author 作者 geDuo
* @version 创建时间:2021年7月17日 下午5:28:19
* @explain 日期时间工具类
*/
public
class
TDateUtil
{
public
static
final
String
ONE_WEEK
=
"oneweek"
;
public
static
final
String
ONE_MONTH
=
"onemonth"
;
public
static
final
String
THREE_MONTH
=
"threemonth"
;
public
static
final
String
SIX_MONTH
=
"sixmonth"
;
public
static
final
String
ONE_YEAR
=
"oneyear"
;
public
static
final
String
TYPE
=
"yyyyMMddHHmmss"
;
public
static
String
getCurrentDate
()
{
SimpleDateFormat
df
=
new
SimpleDateFormat
(
"yyyy/MM/dd HH:mm"
);
// 设置日期格式
String
date
=
df
.
format
(
new
Date
());
// new Date()为获取当前系统时间
return
date
;
}
public
static
String
getCurrentDateByType
(
String
format
)
{
SimpleDateFormat
df
=
new
SimpleDateFormat
(
format
);
// 设置日期格式
String
date
=
df
.
format
(
new
Date
());
// new Date()为获取当前系统时间
return
date
;
}
public
static
String
getCurrentDateMidd
()
{
SimpleDateFormat
df
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
);
// 设置日期格式
String
date
=
df
.
format
(
new
Date
());
// new Date()为获取当前系统时间
return
date
;
}
public
static
Date
getDate
(
String
str
,
String
format
)
{
Date
date
=
null
;
try
{
SimpleDateFormat
df
=
new
SimpleDateFormat
(
format
);
// 设置日期格式
// String dates=df.format(new Date());// new Date()为获取当前系统时间
date
=
df
.
parse
(
str
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
date
;
}
/**
* date类型转字符串
*/
public
static
String
getDateStr
(
Date
date
,
String
type
)
{
SimpleDateFormat
format
=
new
SimpleDateFormat
(
type
);
String
s
=
format
.
format
(
date
);
return
s
;
}
/**
* 根据日期获得随机数
*/
public
static
Integer
getDateRandom
(
Date
date
,
String
format
,
int
count
)
{
String
code
=
""
;
for
(
int
i
=
0
;
i
<
count
;
i
++)
{
code
=
code
+
(
int
)
(
Math
.
random
()
*
9
);
}
code
=
TDateUtil
.
getDateStr
(
date
,
format
)
+
code
;
return
Integer
.
parseInt
(
code
);
}
/**
* 10位数的秒转日期字符
*
* @param mss
* @return
*/
public
static
Date
dateFromSecond
(
long
sceondTime
)
{
return
new
Date
(
sceondTime
*
1000
);
}
/**
* 10位数的秒转日期字符
*
* @param mss
* @return
*/
public
static
String
dateFromSecondStr
(
long
sceondTime
)
{
return
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
).
format
(
new
Date
(
sceondTime
*
1000
));
}
/**
* 秒转时分秒
*
* @param secondTime
* @return
*/
public
static
String
hmsFromSecond
(
Integer
secondTime
)
{
Integer
hour
=
secondTime
/
60
/
60
;
Integer
minutes
=
secondTime
/
60
%
60
;
Integer
remainingSeconds
=
secondTime
%
60
;
return
(
hour
+
"h"
+
minutes
+
"min"
+
remainingSeconds
+
"s"
);
}
public
static
String
hmsFromSecondFormat
(
long
secondTime
)
{
long
day
=
secondTime
/
60
/
60
/
24
;
long
hour
=
secondTime
/
60
/
60
%
24
;
long
minutes
=
secondTime
/
60
%
60
;
long
remainingSeconds
=
secondTime
%
60
;
if
(
day
>
0
)
{
return
(
day
+
"天"
+
hour
+
"小时"
+
minutes
+
"分"
+
remainingSeconds
+
"秒"
);
}
return
(
hour
+
"小时"
+
minutes
+
"分"
+
remainingSeconds
+
"秒"
);
}
/**
* 两个日期的相差秒数
*
* @param maxDate
* @param minDate
* @return
*/
public
static
long
calLastedTime
(
Date
maxDate
,
Date
minDate
)
{
long
a
=
maxDate
.
getTime
();
long
b
=
minDate
.
getTime
();
long
c
=
(
a
-
b
)
/
1000
;
return
c
;
}
/**
* 获取某个月的月底最后一天的时间
*/
public
static
Date
getMonthLatestDay
(
Date
date
)
{
SimpleDateFormat
format
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
);
// 获取当前月最后一天
Calendar
ca
=
Calendar
.
getInstance
();
ca
.
setTime
(
date
);
ca
.
set
(
Calendar
.
DAY_OF_MONTH
,
ca
.
getActualMaximum
(
Calendar
.
DAY_OF_MONTH
));
String
last
=
format
.
format
(
ca
.
getTime
());
Date
dates
=
getDate
(
last
,
"yyyy-MM-dd"
);
return
dates
;
}
/**
* 某个时间 加N天
*/
public
static
Date
nextNumDay
(
Date
d
,
int
num
)
{
SimpleDateFormat
format
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
);
Date
date
=
null
;
try
{
Date
now
=
d
;
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
setTime
(
now
);
calendar
.
add
(
Calendar
.
DAY_OF_MONTH
,
num
);
String
last
=
format
.
format
(
calendar
.
getTime
());
date
=
getDate
(
last
,
"yyyy-MM-dd"
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
date
;
}
/**
* 某天个时间加 N 小时
*
* @param now
* @param num
* @return
*/
public
static
Date
addHourTime
(
Date
now
,
int
num
)
{
SimpleDateFormat
format
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
);
Date
date
=
null
;
try
{
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
setTime
(
now
);
calendar
.
add
(
Calendar
.
HOUR
,
num
);
String
last
=
format
.
format
(
calendar
.
getTime
());
date
=
getDate
(
last
,
"yyyy-MM-dd HH:mm:ss"
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
date
;
}
/**
* 某个时间加n个月加n天(负数为减)
*/
@SuppressWarnings
(
"static-access"
)
public
static
Date
getMonthNDayN
(
Date
date
,
int
month
,
int
day
)
{
SimpleDateFormat
format
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
);
Date
news
=
null
;
try
{
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
setTime
(
date
);
calendar
.
add
(
Calendar
.
MONTH
,
month
);
calendar
.
add
(
calendar
.
DATE
,
day
);
String
last
=
format
.
format
(
calendar
.
getTime
());
news
=
getDate
(
last
,
"yyyy-MM-dd"
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
news
;
}
/**
* 时间戳-计算小时
*/
public
static
long
getDistanceTime
(
long
time1
,
long
time2
)
{
long
diff
=
0
;
long
day
=
0
;
long
hour
=
0
;
if
(
time1
<
time2
)
{
diff
=
time2
-
time1
;
}
else
{
diff
=
time1
-
time2
;
}
day
=
diff
/
(
24
*
60
*
60
*
1000
);
hour
=
(
diff
/
(
60
*
60
*
1000
)
-
day
*
24
);
return
hour
;
}
/**
* 两个时间之间相差距离多少天
*
* @param one 时间参数 1:
* @param two 时间参数 2:
* @return 相差天数
*/
public
static
int
distanceDays
(
Date
one
,
Date
two
)
{
int
days
=
0
;
long
time1
=
one
.
getTime
();
long
time2
=
two
.
getTime
();
long
diff
;
if
(
time1
<
time2
)
{
diff
=
time2
-
time1
;
}
else
{
diff
=
time1
-
time2
;
}
days
=
new
Long
(
diff
/
(
1000
*
60
*
60
*
24
)).
intValue
();
return
days
;
}
public
static
Date
nextNumDateTime
(
Date
d
,
int
num
)
{
SimpleDateFormat
format
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
);
Date
date
=
null
;
try
{
Date
now
=
d
;
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
setTime
(
now
);
calendar
.
add
(
Calendar
.
DAY_OF_MONTH
,
num
);
String
last
=
format
.
format
(
calendar
.
getTime
());
date
=
getDate
(
last
,
"yyyy-MM-dd HH:mm:ss"
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
date
;
}
public
static
String
createYearWeek
(
String
startStr
,
String
endStr
)
{
if
(
startStr
==
null
||
""
.
equals
(
startStr
)
||
endStr
==
null
||
""
.
equals
(
endStr
))
{
return
"起止日期不能为空"
;
}
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
);
Date
start
=
null
;
Date
end
=
null
;
Date
startDate
;
Date
endDate
;
int
dayOfWeek
;
boolean
goOn
=
true
;
int
no
=
0
;
try
{
start
=
sdf
.
parse
(
startStr
);
end
=
sdf
.
parse
(
endStr
);
}
catch
(
ParseException
e
)
{
SimpleDateFormat
simpleDateFormat
=
new
SimpleDateFormat
(
"yyyyMMdd"
);
try
{
start
=
simpleDateFormat
.
parse
(
startStr
);
end
=
simpleDateFormat
.
parse
(
endStr
);
}
catch
(
ParseException
pe
)
{
pe
.
printStackTrace
();
}
}
if
(
start
.
compareTo
(
end
)
>
-
1
)
{
return
"结束日期必须大于开始日期"
;
}
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
setTime
(
start
);
dayOfWeek
=
calendar
.
get
(
Calendar
.
DAY_OF_WEEK
);
List
<
Map
<
String
,
String
>>
weekList
=
new
ArrayList
<>();
if
(
dayOfWeek
>
1
&&
dayOfWeek
<
7
)
{
do
{
startDate
=
start
;
calendar
.
add
(
Calendar
.
DATE
,
(
8
-
dayOfWeek
));
endDate
=
calendar
.
getTime
();
no
+=
1
;
Map
<
String
,
String
>
map
=
new
HashMap
<>();
map
.
put
(
"startOfWeek"
,
sdf
.
format
(
startDate
));
map
.
put
(
"weekNo"
,
no
+
""
);
if
(
endDate
.
compareTo
(
end
)
<
0
)
{
map
.
put
(
"endOfWeek"
,
sdf
.
format
(
endDate
));
weekList
.
add
(
map
);
calendar
.
add
(
Calendar
.
DATE
,
1
);
start
=
calendar
.
getTime
();
dayOfWeek
=
2
;
}
else
{
map
.
put
(
"endOfWeek"
,
sdf
.
format
(
end
));
weekList
.
add
(
map
);
goOn
=
false
;
}
}
while
(
goOn
);
}
else
{
no
+=
1
;
startDate
=
start
;
if
(
dayOfWeek
==
1
)
{
endDate
=
start
;
}
else
{
calendar
.
add
(
Calendar
.
DATE
,
1
);
endDate
=
calendar
.
getTime
();
}
Map
<
String
,
String
>
map
=
new
HashMap
<>();
map
.
put
(
"startOfWeek"
,
sdf
.
format
(
startDate
));
map
.
put
(
"endOfWeek"
,
sdf
.
format
(
endDate
));
map
.
put
(
"weekNo"
,
no
+
""
);
weekList
.
add
(
map
);
calendar
.
add
(
Calendar
.
DATE
,
1
);
start
=
calendar
.
getTime
();
do
{
startDate
=
start
;
calendar
.
add
(
Calendar
.
DATE
,
6
);
endDate
=
calendar
.
getTime
();
no
+=
1
;
map
=
new
HashMap
<>();
map
.
put
(
"startOfWeek"
,
sdf
.
format
(
startDate
));
map
.
put
(
"weekNo"
,
no
+
""
);
if
(
endDate
.
compareTo
(
end
)
<
0
)
{
map
.
put
(
"endOfWeek"
,
sdf
.
format
(
endDate
));
weekList
.
add
(
map
);
calendar
.
add
(
Calendar
.
DATE
,
1
);
start
=
calendar
.
getTime
();
}
else
{
map
.
put
(
"endOfWeek"
,
sdf
.
format
(
end
));
weekList
.
add
(
map
);
goOn
=
false
;
}
}
while
(
goOn
);
}
return
weekList
.
toString
();
}
/**
* 获取起止日期
*
* @param sdf 需要显示的日期格式
* @param date 需要参照的日期
* @param n 最近n周
* @param option 0 开始日期;1 结束日期
* @param k 0 包含本周 1 不包含本周
* @return
*/
public
static
String
getFromToDate
(
SimpleDateFormat
sdf
,
Date
date
,
int
n
,
int
option
,
int
k
)
{
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
setTime
(
date
);
int
dayOfWeek
=
calendar
.
get
(
Calendar
.
DAY_OF_WEEK
)
-
1
;
int
offset
=
0
==
option
?
1
-
dayOfWeek
:
7
-
dayOfWeek
;
int
amount
=
0
==
option
?
offset
-
(
n
-
1
+
k
)
*
7
:
offset
-
k
*
7
;
calendar
.
add
(
Calendar
.
DATE
,
amount
);
return
sdf
.
format
(
calendar
.
getTime
());
}
/**
* 根据当前日期获得最近n周的日期区间(包含本周)
*
* @param n
* @param sdf
* @return
*/
public
static
String
getNWeekTimeInterval
(
int
n
,
String
format
)
{
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
format
);
// 设置日期格式
String
beginDate
=
getFromToDate
(
sdf
,
new
Date
(),
n
,
0
,
0
);
String
endDate
=
getFromToDate
(
sdf
,
new
Date
(),
n
,
1
,
0
);
return
beginDate
+
","
+
endDate
;
}
/**
* 根据当前日期获得最近n周的日期区间(不包含本周)
*
* @param n
* @param sdf
* @return
*/
public
static
String
getNWeekTimeIntervalTwo
(
int
n
,
String
format
)
{
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
format
);
// 设置日期格式
String
beginDate
=
getFromToDate
(
sdf
,
new
Date
(),
n
,
0
,
1
);
String
endDate
=
getFromToDate
(
sdf
,
new
Date
(),
n
,
1
,
1
);
return
beginDate
+
","
+
endDate
;
}
/**
* 根据当前日期获得本周的日期区间(本周周一和周日日期)
*
* @param sdf
* @return
*/
public
static
String
getThisWeekTimeInterval
(
String
format
)
{
return
getNWeekTimeInterval
(
1
,
format
);
}
/**
* 根据当前日期获得上周的日期区间(上周周一和周日日期)
*
* @param sdf
* @return
*/
public
static
String
getLastWeekTimeInterval
(
String
format
)
{
return
getNWeekTimeIntervalTwo
(
1
,
format
);
}
/**
* 获取某个日期最近一个的星期日
*
* @return
*/
public
static
Date
getLatestWeekend
(
Date
date
)
{
Calendar
cal
=
Calendar
.
getInstance
();
cal
.
setTime
(
date
);
int
w
=
cal
.
get
(
Calendar
.
DAY_OF_WEEK
)
-
1
;
Date
endDate
=
TDateUtil
.
nextNumDay
(
date
,
w
*
-
1
);
return
endDate
;
}
/**
* 获取N周的星期一的日期(正加负减)
*
* @param date
* @return
*/
public
static
Date
getMinMonday
(
Date
date
,
int
weekNum
)
{
Calendar
cal
=
Calendar
.
getInstance
();
cal
.
setTime
(
date
);
int
w
=
cal
.
get
(
Calendar
.
DAY_OF_WEEK
)
-
1
;
Date
endDate
=
TDateUtil
.
nextNumDay
(
date
,
w
*
-
1
);
Date
startDate
=
TDateUtil
.
nextNumDay
(
endDate
,
(
weekNum
*
7
)
+
1
);
return
startDate
;
}
/**
* 获取某个月加几个月后一号的日期
*/
@SuppressWarnings
(
"static-access"
)
public
static
Date
getAddMonThDay
(
Date
date
,
int
i
)
{
SimpleDateFormat
format
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
);
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
setTime
(
date
);
calendar
.
add
(
calendar
.
MONTH
,
i
);
calendar
.
set
(
Calendar
.
DAY_OF_MONTH
,
1
);
String
last
=
format
.
format
(
calendar
.
getTime
());
date
=
getDate
(
last
,
"yyyy-MM-dd"
);
return
date
;
}
/**
* 某个月最后一天
*/
public
static
Date
getAnyMonthLastDay
(
Date
date
)
{
SimpleDateFormat
format
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
);
// 获取当前月最后一天
Calendar
ca
=
Calendar
.
getInstance
();
ca
.
setTime
(
date
);
ca
.
set
(
Calendar
.
DAY_OF_MONTH
,
ca
.
getActualMaximum
(
Calendar
.
DAY_OF_MONTH
));
String
last
=
format
.
format
(
ca
.
getTime
());
date
=
getDate
(
last
,
"yyyy-MM-dd"
);
return
date
;
}
public
static
Date
getDate
(
Date
date
,
String
type
)
{
SimpleDateFormat
format
=
new
SimpleDateFormat
(
type
);
String
s
=
format
.
format
(
date
);
return
getDate
(
s
,
type
);
}
/**
* 获取去年今天的日期
*/
public
static
Date
getLastYearTodayDate
()
{
Calendar
instance
=
Calendar
.
getInstance
();
instance
.
add
(
Calendar
.
YEAR
,
-
1
);
SimpleDateFormat
format
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
);
String
s
=
format
.
format
(
instance
.
getTime
());
return
getDate
(
s
,
"yyyy-MM-dd"
);
}
/**
* 获取昨天的日期
*
* @param type
* @return
*/
public
static
String
getYesterdayDateByType
(
String
type
)
{
Calendar
instance
=
Calendar
.
getInstance
();
instance
.
add
(
Calendar
.
DAY_OF_MONTH
,
-
1
);
Date
time
=
instance
.
getTime
();
SimpleDateFormat
format
=
new
SimpleDateFormat
(
type
);
return
format
.
format
(
time
);
}
/**
* 判断两个时间是不是在同一个月
*/
public
static
boolean
isSameMonth
(
Date
date1
,
Date
date2
)
{
Calendar
c
=
Calendar
.
getInstance
();
c
.
setTime
(
date1
);
int
month1
=
c
.
get
(
Calendar
.
MONTH
);
c
.
setTime
(
date2
);
int
month2
=
c
.
get
(
Calendar
.
MONTH
);
if
(
month1
==
month2
)
{
return
true
;
}
return
false
;
}
/**
* 间隔天数
*
* @param startTime
* @param endTime
* @return
*/
public
static
int
isolateDayNum
(
String
startTime
,
String
endTime
)
{
Date
startDate
=
getDate
(
startTime
,
"yyyy-MM-dd"
);
Date
endDate
=
getDate
(
endTime
,
"yyyy-MM-dd"
);
long
differentMillis
=
endDate
.
getTime
()
-
startDate
.
getTime
();
long
dayNum
=
differentMillis
/
(
1000
*
60
*
60
*
24
);
return
(
int
)
dayNum
;
}
/**
* 获取某月最后一天的时间
*
* @param yearMonth
* @return
*/
public
static
String
getLastDateTimeOfMonth
(
String
yearMonth
)
{
SimpleDateFormat
format0
=
new
SimpleDateFormat
(
"yyyy-MM"
);
SimpleDateFormat
format1
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
);
Calendar
instance
=
Calendar
.
getInstance
();
try
{
Date
parse
=
format0
.
parse
(
yearMonth
);
instance
.
setTime
(
parse
);
instance
.
set
(
Calendar
.
DAY_OF_MONTH
,
instance
.
getActualMaximum
(
Calendar
.
DAY_OF_MONTH
));
instance
.
set
(
Calendar
.
HOUR_OF_DAY
,
23
);
instance
.
set
(
Calendar
.
MINUTE
,
59
);
instance
.
set
(
Calendar
.
SECOND
,
59
);
String
format
=
format1
.
format
(
instance
.
getTime
());
return
format
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
null
;
}
public
static
Date
getStrToDate
(
String
str
)
{
SimpleDateFormat
dateFormat
=
new
SimpleDateFormat
(
"yyyy年MM月dd日"
);
Date
date
=
null
;
try
{
if
(
str
==
null
)
{
date
=
null
;
}
else
{
date
=
dateFormat
.
parse
(
str
);
}
}
catch
(
ParseException
e
)
{
e
.
printStackTrace
();
}
return
date
;
}
public
static
int
getStageByDate
(
Date
date
)
{
Calendar
instance
=
Calendar
.
getInstance
();
instance
.
setTime
(
date
);
//当前时间
SimpleDateFormat
dateFormat
=
new
SimpleDateFormat
(
"HH:mm:ss"
);
String
format
=
dateFormat
.
format
(
date
);
try
{
Date
currentTime
=
dateFormat
.
parse
(
format
);
Date
parse1
=
dateFormat
.
parse
(
"05:00:00"
);
Date
parse2
=
dateFormat
.
parse
(
"11:00:00"
);
Date
parse3
=
dateFormat
.
parse
(
"17:00:00"
);
Date
parse4
=
dateFormat
.
parse
(
"00:00:00"
);
//A:05:00-11:00 | B:11:00-17:00 | C:00:00-05:00,17:00-00:00
if
(
currentTime
.
after
(
parse4
)
&&
currentTime
.
before
(
parse1
))
{
return
3
;
}
else
if
(
currentTime
.
after
(
parse1
)
&&
currentTime
.
before
(
parse2
))
{
return
1
;
}
else
if
(
currentTime
.
after
(
parse2
)
&&
currentTime
.
before
(
parse3
))
{
return
2
;
}
else
if
(
currentTime
.
after
(
parse3
)
&&
currentTime
.
after
(
parse4
))
{
return
4
;
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
0
;
}
public
static
String
getCurrentYear
()
{
Calendar
date
=
Calendar
.
getInstance
();
String
year
=
String
.
valueOf
(
date
.
get
(
Calendar
.
YEAR
));
return
year
;
}
}
csm-service/cms-service-user/src/main/java/com/mmc/iuav/user/xzsz/SingleSubmitResp.java
0 → 100644
浏览文件 @
cb5118ae
package
com
.
mmc
.
iuav
.
user
.
xzsz
;
import
java.io.Serializable
;
/**
* @author: zj
* @Date: 2023/8/22 14:26
*/
public
class
SingleSubmitResp
{
private
String
isSuccess
;
private
String
charset
;
private
String
errorCode
;
private
String
errorMessage
;
private
Data
data
;
public
String
getIsSuccess
()
{
return
isSuccess
;
}
public
void
setIsSuccess
(
String
isSuccess
)
{
this
.
isSuccess
=
isSuccess
;
}
public
String
getCharset
()
{
return
charset
;
}
public
void
setCharset
(
String
charset
)
{
this
.
charset
=
charset
;
}
public
String
getErrorCode
()
{
return
errorCode
;
}
public
void
setErrorCode
(
String
errorCode
)
{
this
.
errorCode
=
errorCode
;
}
public
String
getErrorMessage
()
{
return
errorMessage
;
}
public
void
setErrorMessage
(
String
errorMessage
)
{
this
.
errorMessage
=
errorMessage
;
}
public
Data
getData
()
{
return
data
;
}
public
void
setData
(
Data
data
)
{
this
.
data
=
data
;
}
public
static
class
Data
implements
Serializable
{
private
static
final
long
serialVersionUID
=
887647888669372371L
;
private
String
outerTradeNo
;
public
Data
()
{
}
public
String
getOuterTradeNo
()
{
return
outerTradeNo
;
}
public
void
setOuterTradeNo
(
String
outerTradeNo
)
{
this
.
outerTradeNo
=
outerTradeNo
;
}
}
}
csm-service/cms-service-user/src/main/java/com/mmc/iuav/user/xzsz/WithdrawalResp.java
0 → 100644
浏览文件 @
cb5118ae
package
com
.
mmc
.
iuav
.
user
.
xzsz
;
import
java.math.BigDecimal
;
/**
* @author: zj
* @Date: 2023/8/22 14:43
*/
public
class
WithdrawalResp
{
private
String
isSuccess
;
private
String
charset
;
private
Data
data
;
public
String
getIsSuccess
()
{
return
isSuccess
;
}
public
void
setIsSuccess
(
String
isSuccess
)
{
this
.
isSuccess
=
isSuccess
;
}
public
String
getCharset
()
{
return
charset
;
}
public
void
setCharset
(
String
charset
)
{
this
.
charset
=
charset
;
}
public
Data
getData
()
{
return
data
;
}
public
void
setData
(
Data
data
)
{
this
.
data
=
data
;
}
public
static
class
Data
{
private
String
outerTradeNo
;
private
String
notifyType
;
private
String
empName
;
private
String
empPhone
;
private
String
licenseType
;
private
String
licenseId
;
private
String
settleType
;
private
String
payAccount
;
private
String
positionName
;
private
BigDecimal
payAmount
;
private
String
tradeStatus
;
private
String
tradeTime
;
private
String
frontLogNo
;
private
String
tradeResult
;
private
String
tradeFailCode
;
public
Data
()
{
}
public
String
getOuterTradeNo
()
{
return
outerTradeNo
;
}
public
void
setOuterTradeNo
(
String
outerTradeNo
)
{
this
.
outerTradeNo
=
outerTradeNo
;
}
public
String
getNotifyType
()
{
return
notifyType
;
}
public
void
setNotifyType
(
String
notifyType
)
{
this
.
notifyType
=
notifyType
;
}
public
String
getEmpName
()
{
return
empName
;
}
public
void
setEmpName
(
String
empName
)
{
this
.
empName
=
empName
;
}
public
String
getEmpPhone
()
{
return
empPhone
;
}
public
void
setEmpPhone
(
String
empPhone
)
{
this
.
empPhone
=
empPhone
;
}
public
String
getLicenseType
()
{
return
licenseType
;
}
public
void
setLicenseType
(
String
licenseType
)
{
this
.
licenseType
=
licenseType
;
}
public
String
getLicenseId
()
{
return
licenseId
;
}
public
void
setLicenseId
(
String
licenseId
)
{
this
.
licenseId
=
licenseId
;
}
public
String
getSettleType
()
{
return
settleType
;
}
public
void
setSettleType
(
String
settleType
)
{
this
.
settleType
=
settleType
;
}
public
String
getPayAccount
()
{
return
payAccount
;
}
public
void
setPayAccount
(
String
payAccount
)
{
this
.
payAccount
=
payAccount
;
}
public
String
getPositionName
()
{
return
positionName
;
}
public
void
setPositionName
(
String
positionName
)
{
this
.
positionName
=
positionName
;
}
public
BigDecimal
getPayAmount
()
{
return
payAmount
;
}
public
void
setPayAmount
(
BigDecimal
payAmount
)
{
this
.
payAmount
=
payAmount
;
}
public
String
getTradeStatus
()
{
return
tradeStatus
;
}
public
void
setTradeStatus
(
String
tradeStatus
)
{
this
.
tradeStatus
=
tradeStatus
;
}
public
String
getTradeTime
()
{
return
tradeTime
;
}
public
void
setTradeTime
(
String
tradeTime
)
{
this
.
tradeTime
=
tradeTime
;
}
public
String
getFrontLogNo
()
{
return
frontLogNo
;
}
public
void
setFrontLogNo
(
String
frontLogNo
)
{
this
.
frontLogNo
=
frontLogNo
;
}
public
String
getTradeResult
()
{
return
tradeResult
;
}
public
void
setTradeResult
(
String
tradeResult
)
{
this
.
tradeResult
=
tradeResult
;
}
public
String
getTradeFailCode
()
{
return
tradeFailCode
;
}
public
void
setTradeFailCode
(
String
tradeFailCode
)
{
this
.
tradeFailCode
=
tradeFailCode
;
}
}
}
csm-service/cms-service-user/src/main/resources/application-dev.yml
浏览文件 @
cb5118ae
...
...
@@ -69,6 +69,28 @@ third-party:
qcc
:
app-key
:
5015e664848d406ab1ca4b505c3da803
secret-key
:
7C4DB8CCECC148175E46392CC0A1B410
xzsz
:
# appKey: 1e8e59e056be41f8a05c090964d7ce37
# appSecret: ceshihuanjingyanshizhanghao00000
# aes: 0000000000000000
# domain: https://uat.xzsz.ltd/
# position: 销售推广
# taxFundId: xxxxxxxxxxxxxxxxxxxxxxx
appKey
:
37f76305f1864339adc8d6d03fbf918d
appSecret
:
hangzhouyunxiangfeikeji000000000
aes
:
'
0000000000000000'
domain
:
https://saas.xzsz.ltd
position
:
市场推广
taxFundId
:
0b0376083af4435885bd5d5cd3d63053
authNotify
:
https://test.iuav.shop/userapp/xz/xzAuthNotify
withdrawNotify
:
https://test.iuav.shop/userapp/xz/xzWithdrawNotify
fdd
:
appid
:
407664
appkey
:
q146q3Cjmi7Y6BVl8jtZK9pH
version
:
2
host
:
https://testapi.fadada.com:8443/api/
mmc-url
:
https://test.iuav.shop/userapp/
iuav
:
pay
:
...
...
csm-service/cms-service-user/src/main/resources/application-local.yml
浏览文件 @
cb5118ae
...
...
@@ -18,7 +18,7 @@ spring:
port
:
5672
username
:
MjphbXFwLWNuLXp2cDJvemhuajAwMTpMVEFJNEZ6Q3B5ckEzM1BlZ254V1M2WFY=
password
:
RTg3OUMxQzk4NzU0NDQ4RkQ1RDg4MkEzQjY4M0M3MkQxOTM2QkEyNDoxNjUyNDA4NDk0NDg4
virtual-host
:
/
virtual-host
:
dev
wx
:
sub
:
...
...
@@ -38,9 +38,25 @@ third-party:
qcc
:
app-key
:
5015e664848d406ab1ca4b505c3da803
secret-key
:
7C4DB8CCECC148175E46392CC0A1B410
xzsz
:
appKey
:
1e8e59e056be41f8a05c090964d7ce37
appSecret
:
ceshihuanjingyanshizhanghao00000
aes
:
'
0000000000000000'
domain
:
https://uat.xzsz.ltd/
position
:
销售推广
taxFundId
:
8ae605f565884a1f9a5e91d5a661ce58
authNotify
:
https://test.iuav.shop/userapp/xz/xzAuthNotify
withdrawNotify
:
https://test.iuav.shop/userapp/xz/xzWithdrawNotify
fdd
:
appid
:
407664
appkey
:
q146q3Cjmi7Y6BVl8jtZK9pH
version
:
2
host
:
https://testapi.fadada.com:8443/api/
mmc-url
:
https://test.iuav.shop/userapp/
iuav
:
pay
:
uri
:
http://127.0.0.1:8088
pms
:
uri
:
http://127.0.0.1:8099
\ No newline at end of file
uri
:
http://127.0.0.1:8099
csm-service/cms-service-user/src/main/resources/application-prod.yml
浏览文件 @
cb5118ae
...
...
@@ -67,6 +67,15 @@ third-party:
qcc
:
app-key
:
5015e664848d406ab1ca4b505c3da803
secret-key
:
7C4DB8CCECC148175E46392CC0A1B410
xzsz
:
appKey
:
37f76305f1864339adc8d6d03fbf918d
appSecret
:
hangzhouyunxiangfeikeji000000000
aes
:
'
0000000000000000'
domain
:
https://saas.xzsz.ltd
position
:
市场推广
taxFundId
:
0b0376083af4435885bd5d5cd3d63053
authNotify
:
https://www.iuav.shop/userapp/xz/xzAuthNotify
withdrawNotify
:
https://www.iuav.shop/userapp/xz/xzWithdrawNotify
iuav
:
pay
:
...
...
csm-service/cms-service-user/src/main/resources/lib/fdd-verify-process-1.8.5.jar
0 → 100644
浏览文件 @
cb5118ae
File added
csm-service/cms-service-user/src/main/resources/lib/piggy-settlement-sdk-1.7.0.jar
0 → 100644
浏览文件 @
cb5118ae
File added
csm-service/cms-service-user/src/main/resources/mapper/BackUserAccountDao.xml
浏览文件 @
cb5118ae
...
...
@@ -76,12 +76,22 @@
</where>
</update>
<update
id=
"disableBackUserAccountDO"
>
update back_user_account
set disable = 1, account_no = #{accountNo}
where disable = 0
and id = #{id}
</update>
<!--
<update id="disableBackUserAccountDO">
update back_user_account
set disable = 1,
account_no = #{accountNo}
where disable = 0
and id = #{id}
</update>
-->
<delete
id=
"disableBackUserAccountDO"
>
delete
from back_user_account
where id =
#{id}
</delete>
<update
id=
"updatePassword"
>
update back_user_account
...
...
csm-service/cms-service-user/src/main/resources/mapper/UserServiceDao.xml
浏览文件 @
cb5118ae
...
...
@@ -440,5 +440,26 @@
where phone_num = #{phoneNum}
and disable = 0
</select>
<select
id=
"getUserAccountInfoByOpenId"
resultType=
"com.mmc.iuav.user.entity.UserAccountDO"
>
select id,
phone_num,
user_name,
nick_name,
user_img,
open_id,
union_id,
user_sex,
email,
`source`,
account_status,
remark,
port_type,
disable,
create_time,
update_time
from user_account
where open_id = #{openid}
and disable = 0
</select>
</mapper>
csm-service/cms-service-user/src/main/resources/mapper/UserSubInfoDao.xml
浏览文件 @
cb5118ae
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.mmc.iuav.user.dao.UserSubInfoDao"
>
<resultMap
id=
"userSubInfoResultMap"
type=
"com.mmc.iuav.user.entity.UserSubInfoDO"
>
<id
property=
"id"
column=
"id"
/>
<result
property=
"openId"
column=
"open_id"
/>
<result
property=
"unionId"
column=
"union_id"
/>
<result
property=
"nickName"
column=
"nick_name"
/>
<result
property=
"regStatus"
column=
"reg_status"
/>
<result
property=
"deleted"
column=
"is_deleted"
/>
<result
property=
"createTime"
column=
"create_time"
/>
<result
property=
"updateTime"
column=
"update_time"
/>
</resultMap>
<resultMap
id=
"userSubInfoResultMap"
type=
"com.mmc.iuav.user.entity.UserSubInfoDO"
>
<id
property=
"id"
column=
"id"
/>
<result
property=
"openId"
column=
"open_id"
/>
<result
property=
"unionId"
column=
"union_id"
/>
<result
property=
"nickName"
column=
"nick_name"
/>
<result
property=
"regStatus"
column=
"reg_status"
/>
<result
property=
"deleted"
column=
"is_deleted"
/>
<result
property=
"createTime"
column=
"create_time"
/>
<result
property=
"updateTime"
column=
"update_time"
/>
</resultMap>
<select
id=
"getUserSubInfo"
resultMap=
"userSubInfoResultMap"
parameterType=
"String"
>
<select
id=
"getUserSubInfo"
resultMap=
"userSubInfoResultMap"
parameterType=
"String"
>
select u.id,u.open_id,u.union_id,u.nick_name,u.reg_status,
u.is_deleted,u.create_time,u.update_time
from user_sub_info u
where u.open_id = #{openId}
</select>
<select
id=
"getUserSubInfoById"
resultMap=
"userSubInfoResultMap"
parameterType=
"Integer"
>
<select
id=
"getUserSubInfoById"
resultMap=
"userSubInfoResultMap"
parameterType=
"Integer"
>
select usi.id,usi.open_id,usi.union_id,usi.nick_name,usi.is_deleted
from user_account ua
inner join user_sub_info usi on usi.union_id=ua.union_id
where usi.is_deleted=0 and ua.is_deleted=0
and ua.user_account_id = #{userAccountId}
</select>
<select
id=
"getUserSubInfoByUnionId"
resultMap=
"userSubInfoResultMap"
parameterType=
"String"
>
select usi.id,usi.open_id,usi.union_id,usi.nick_name,usi.is_deleted
<select
id=
"getUserSubInfoByUnionId"
resultMap=
"userSubInfoResultMap"
parameterType=
"String"
>
select usi.id,usi.open_id,usi.union_id,usi.nick_name,usi.is_deleted
,usi.reg_status
from user_sub_info usi
where usi.union_id = #{unionId} and usi.is_deleted=0
</select>
<select
id=
"countUserSubInfo"
resultType=
"Integer"
parameterType=
"String"
>
<select
id=
"countUserSubInfo"
resultType=
"Integer"
parameterType=
"String"
>
select count(*)
from user_sub_info u
where u.open_id = #{openId} and is_deleted = 0
</select>
<insert
id=
"insertUserSubInfo"
useGeneratedKeys=
"true"
keyProperty=
"id"
parameterType=
"com.mmc.iuav.user.entity.UserSubInfoDO"
>
<insert
id=
"insertUserSubInfo"
useGeneratedKeys=
"true"
keyProperty=
"id"
parameterType=
"com.mmc.iuav.user.entity.UserSubInfoDO"
>
insert into user_sub_info
(
open_id,union_id,nick_name,reg_status,is_deleted,create_time,update_time
...
...
@@ -53,28 +53,28 @@
#{openId},#{unionId},#{nickName},#{regStatus},#{deleted},#{createTime},#{updateTime}
)
</insert>
<update
id=
"removeUserSubInfo"
parameterType=
"String"
>
<update
id=
"removeUserSubInfo"
parameterType=
"String"
>
update user_sub_info
set is_deleted = 1
where open_id = #{openId}
</update>
<update
id=
"updateUserSubInfo"
parameterType=
"com.mmc.iuav.user.entity.UserSubInfoDO"
>
update user_sub_info
<set>
<if
test=
"unionId != null and unionId != '' "
>
union_id = #{unionId},
</if>
<if
test=
"nickName != null"
>
nick_name = #{nickName},
</if>
<if
test=
"regStatus != null"
>
reg_status = #{regStatus},
</if>
</set>
where open_id = #{openId}
</update>
<update
id=
"updateUserSubInfo"
parameterType=
"com.mmc.iuav.user.entity.UserSubInfoDO"
>
update user_sub_info
<set>
<if
test=
"unionId != null and unionId != '' "
>
union_id = #{unionId},
</if>
<if
test=
"nickName != null"
>
nick_name = #{nickName},
</if>
<if
test=
"regStatus != null"
>
reg_status = #{regStatus},
</if>
</set>
where open_id = #{openId}
</update>
</mapper>
\ No newline at end of file
csm-service/cms-service-user/src/main/resources/mapper/fdd/UserFddAuthDao.xml
0 → 100644
浏览文件 @
cb5118ae
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.mmc.iuav.user.dao.fdd.UserFddAuthDao"
>
<resultMap
id=
"appUserFddResultMap"
type=
"com.mmc.iuav.user.entity.fdd.UserFddDO"
>
<id
property=
"id"
column=
"id"
/>
<result
property=
"unionId"
column=
"union_id"
/>
<result
property=
"customerId"
column=
"customer_id"
/>
<result
property=
"personVerifyStatus"
column=
"person_verify_status"
/>
<result
property=
"entVerifyStatus"
column=
"ent_verify_status"
/>
<result
property=
"accountType"
column=
"account_type"
/>
<result
property=
"updateTime"
column=
"update_time"
/>
<result
property=
"createTime"
column=
"create_time"
/>
</resultMap>
<insert
id=
"insertAppUserFdd"
parameterType=
"com.mmc.iuav.user.entity.fdd.UserFddDO"
keyProperty=
"id"
useGeneratedKeys=
"true"
>
insert into user_fdd
(union_id, customer_id, person_verify_status, ent_verify_status, account_type, create_time)
values (#{unionId}, #{customerId}, #{personVerifyStatus}, #{entVerifyStatus}, #{accountType}, NOW())
</insert>
<insert
id=
"insertVerifyInfo"
useGeneratedKeys=
"true"
keyProperty=
"id"
parameterType=
"com.mmc.iuav.user.entity.fdd.FddVerifyInfoDO"
>
insert into fdd_verify_info
(user_fdd_id, customer_id, transaction_no, url, create_time)
values (#{userFddId}, #{customerId}, #{transactionNo}, #{url}, NOW())
</insert>
<update
id=
"updateCompanyCertStatus"
>
update user_fdd
set ent_verify_status = #{status}
where customer_id = #{customerId}
</update>
<select
id=
"checkRegisterFdd"
resultType=
"com.mmc.iuav.user.entity.fdd.UserFddDO"
>
select id,
union_id,
customer_id,
person_verify_status,
ent_verify_status,
account_type,
create_time,
update_time
from user_fdd
where union_id = #{unionId}
and account_type = #{flag}
and is_deleted = 0
</select>
<select
id=
"getVerifyUrl"
resultType=
"com.mmc.iuav.user.entity.fdd.FddVerifyInfoDO"
>
select id, user_fdd_id, customer_id, transaction_no, url, create_time, update_time
from fdd_verify_info
where customer_id = #{customerId}
</select>
<select
id=
"getAppUserFddInfo"
resultType=
"com.mmc.iuav.user.entity.fdd.UserFddDO"
>
select id, customer_id, person_verify_status, ent_verify_status, account_type, create_time, update_time
from user_fdd
where union_id = #{unionId}
</select>
</mapper>
\ No newline at end of file
csm-service/cms-service-user/src/main/resources/mapper/wallet/PayWalletDao.xml
浏览文件 @
cb5118ae
...
...
@@ -10,6 +10,117 @@
values (#{userAccountId}, #{cashAmt}, #{cashPaid}, #{cashFreeze}, #{salaryAmt}, #{salaryPaid}, #{salaryFreeze},
#{salaryWdl})
</insert>
<insert
id=
"insertPayLogDO"
>
insert into pay_log (user_account_id,
pay_no,
pay_method,
cash_amt_paid,
salary_amt_paid,
pay_time,
remark,
operate_user)
values (#{userAccountId}, #{payNo}, #{payMethod}, #{cashAmtPaid}, #{salaryAmtPaid}, NOW(), #{remark},
#{operateUser})
</insert>
<insert
id=
"insertWithdrawalLog"
>
insert into withdrawal_log(user_account_id,
xz_withdrawal_apply_id,
pay_no,
pay_method,
pay_time,
salary_freeze,
salary_paid)
values (#{userAccountId}, #{xzWithdrawalApplyId}, #{payNo}, #{payMethod}, #{payTime}, #{salaryFreeze},
#{salaryPaid})
</insert>
<update
id=
"updatePayWallet"
>
update pay_wallet
<set>
<if
test=
"pid != null"
>
pid = #{pid} + 1,
</if>
<if
test=
"cashAmt != null"
>
cash_amt = #{cashAmt},
</if>
<if
test=
"cashFreeze != null"
>
cash_freeze = #{cashFreeze},
</if>
<if
test=
"salaryAmt != null"
>
salary_amt = #{salaryAmt},
</if>
<if
test=
"salaryFreeze != null"
>
salary_freeze = #{salaryFreeze},
</if>
<if
test=
"wdlFreeze != null"
>
wdl_freeze = #{wdlFreeze},
</if>
<if
test=
"salaryWdl != null"
>
salary_wdl =#{salaryWdl}
</if>
</set>
where user_account_id = #{userAccountId} and pid = #{pid}
</update>
<update
id=
"updateWithdrawalApply"
>
update xz_withdrawal_apply
<set>
<if
test=
"applyStatus != null"
>
apply_status = #{applyStatus},
</if>
<if
test=
"approveUser != null"
>
approve_user = #{approveUser},
</if>
<if
test=
"approveTime != null"
>
approve_time = #{approveTime},
</if>
<if
test=
"remark != null and remark != ''"
>
remark = #{remark},
</if>
<if
test=
"chargeAmount != null"
>
charge_amount = #{chargeAmount},
</if>
<if
test=
"tradeStatus != null"
>
trade_status = #{tradeStatus},
</if>
<if
test=
"tradeResult != null"
>
trade_result = #{tradeResult},
</if>
<if
test=
"remarks != null"
>
remarks = #{remarks},
</if>
<if
test=
"taxFundId != null"
>
tax_fund_id = #{taxFundId},
</if>
<if
test=
"wechatAppId !=null"
>
wechat_app_id = #{wechatAppId},
</if>
<if
test=
"tradeTime !=null"
>
trade_time = #{tradeTime},
</if>
<if
test=
"frontLogNo !=null"
>
front_log_no = #{frontLogNo},
</if>
<if
test=
"tradeFailCode !=null"
>
trade_fail_code = #{tradeFailCode},
</if>
<if
test=
"submitStatus !=null"
>
submit_status = #{submitStatus},
</if>
<if
test=
"errorCode != null"
>
error_code = #{errorCode},
</if>
<if
test=
"errorMessage != null"
>
error_message =#{errorMessage}
</if>
</set>
<where>
<if
test=
"id != null"
>
id = #{id}
</if>
<if
test=
"outerTradeNo != null"
>
outer_trade_no = #{outerTradeNo}
</if>
</where>
</update>
<select
id=
"getPayWalletByUser"
resultType=
"com.mmc.iuav.user.entity.wallet.PayWalletDO"
>
select id,
...
...
@@ -21,9 +132,283 @@
salary_amt,
salary_paid,
salary_freeze,
wdl_freeze,
salary_wdl,
create_time
from pay_wallet
where user_account_id = #{userAccountId}
</select>
</mapper>
\ No newline at end of file
<select
id=
"getPayLog"
resultType=
"com.mmc.iuav.user.entity.wallet.PayLogDO"
>
SELECT pl.id,
pl.user_account_id,
pl.pay_no,
pl.pay_method,
pl.cash_amt_paid,
pl.salary_amt_paid,
pl.pay_time,
pl.remark,
pl.operate_user,
pl.create_time,
wd.`name`
FROM pay_log pl
INNER JOIN wallet_dictionary wd ON pl.pay_method = wd.`code`
<where>
pl.user_account_id = #{userAccountId}
<if
test=
"startTime != null and startTime != '' "
>
and pl.pay_time
>
= STR_TO_DATE(#{startTime},'%Y-%m-%d
%H:%i:%s')
</if>
<if
test=
"endTime != null and endTime != '' "
>
and pl.pay_time
<
= STR_TO_DATE(#{endTime},'%Y-%m-%d
%H:%i:%s')
</if>
</where>
ORDER BY pl.create_time DESC
limit #{pageNo}
, #{pageSize}
</select>
<select
id=
"countPayLog"
resultType=
"java.lang.Integer"
>
select count(*)
from pay_log pl
<where>
pl.user_account_id = #{userAccountId}
<if
test=
"startTime != null and startTime != '' "
>
and pl.pay_time
>
= STR_TO_DATE(#{startTime},'%Y-%m-%d
%H:%i:%s')
</if>
<if
test=
"endTime != null and endTime != '' "
>
and pl.pay_time
<
= STR_TO_DATE(#{endTime},'%Y-%m-%d
%H:%i:%s')
</if>
</where>
</select>
<select
id=
"getPayLogById"
resultType=
"com.mmc.iuav.user.entity.wallet.PayLogDO"
>
SELECT pl.id,
pl.user_account_id,
pl.pay_no,
pl.pay_method,
pl.cash_amt_paid,
pl.salary_amt_paid,
pl.pay_time,
pl.remark,
pl.operate_user,
pl.create_time,
wd.`name`
FROM pay_log pl
INNER JOIN wallet_dictionary wd ON pl.pay_method = wd.`code`
WHERE pl.id = #{id}
</select>
<select
id=
"getWithdrawalListByUserAccountId"
resultType=
"com.mmc.iuav.user.entity.XzWithdrawalApplyDO"
>
select id,
apply_status,
user_account_id,
bank_name,
bank_remo,
emp_num,
emp_name,
emp_phone,
license_id,
license_type,
`month`,
notify_url,
outer_trade_no,
pay_account,
pay_amount,
position_name,
remarks,
settle_type,
tax_fund_id,
wechat_app_id,
trade_status,
trade_time,
front_log_no,
trade_fail_code,
trade_result,
submit_status,
error_code,
error_message,
charge_amount,
pay_time,
create_time
from xz_withdrawal_apply
<where>
user_account_id = #{userAccountId}
<if
test=
"startTime != null and startTime != '' "
>
and create_time
>
= STR_TO_DATE(#{startTime},'%Y-%m-%d %H:%i:%s')
</if>
<if
test=
"endTime != null and endTime != '' "
>
and create_time
<
= STR_TO_DATE(#{endTime},'%Y-%m-%d %H:%i:%s')
</if>
</where>
order by create_time DESC
limit #{pageNo},#{pageSize}
</select>
<select
id=
"getWithdrawalApplyByIdOrOuterTradeNo"
resultType=
"com.mmc.iuav.user.entity.XzWithdrawalApplyDO"
>
select id,
apply_status,
user_account_id,
bank_name,
bank_remo,
emp_num,
emp_name,
emp_phone,
license_id,
license_type,
`month`,
notify_url,
outer_trade_no,
pay_account,
pay_amount,
position_name,
remarks,
settle_type,
tax_fund_id,
wechat_app_id,
trade_status,
trade_time,
front_log_no,
trade_fail_code,
trade_result,
submit_status,
error_code,
error_message,
charge_amount,
pay_time,
create_time
from xz_withdrawal_apply
<where>
<if
test=
"id != null"
>
id = #{id}
</if>
<if
test=
"outerTradeNo != null and outerTradeNo != ''"
>
outer_trade_no = #{outerTradeNo}
</if>
</where>
</select>
<select
id=
"listPayWithdrawalLog"
resultType=
"com.mmc.iuav.user.entity.wallet.WithdrawalLogDO"
>
select id,
user_account_id,
xz_withdrawal_apply_id,
pay_no,
pay_method,
pay_time,
salary_freeze,
create_time
from withdrawal_log
where xz_withdrawal_apply_id = #{id}
order by pay_time asc
</select>
<select
id=
"countPayWithdrawalLog"
resultType=
"java.lang.Integer"
>
select count(*)
from xz_withdrawal_apply
<where>
user_account_id = #{userAccountId}
<if
test=
"startTime != null and startTime != '' "
>
and create_time
>
= STR_TO_DATE(#{startTime},'%Y-%m-%d
%H:%i:%s')
</if>
<if
test=
"endTime != null and endTime != '' "
>
and create_time
<
= STR_TO_DATE(#{endTime},'%Y-%m-%d
%H:%i:%s')
</if>
</where>
</select>
<select
id=
"countWithdrawalApply"
resultType=
"java.lang.Integer"
>
select count(*)
from xz_withdrawal_apply
<where>
1 = 1
<if
test=
"tradeStatus != null"
>
and trade_status = #{tradeStatus}
</if>
<if
test=
"startTime != null and startTime != '' "
>
and create_time
>
=
STR_TO_DATE(#{startTime},'%Y-%m-%d %H:%i:%s')
</if>
<if
test=
"endTime != null and endTime != '' "
>
and create_time
<
= STR_TO_DATE(#{endTime},'%Y-%m-%d
%H:%i:%s')
</if>
<if
test=
"settleType != null and settleType != '' "
>
and settle_type = #{settleType}
</if>
<if
test=
"keyword != null and keyword != '' "
>
and (
emp_name like CONCAT('%',#{keyword},'%')
or
emp_phone like CONCAT('%',#{keyword},'%')
or pay_account like
CONCAT('%',#{keyword},'%')
or outer_trade_no like
CONCAT('%',#{keyword},'%')
)
</if>
</where>
</select>
<select
id=
"listPageWithdrawalApply"
resultType=
"com.mmc.iuav.user.entity.XzWithdrawalApplyDO"
>
select id,
user_account_id,
apply_status,
bank_name,
bank_remo,
emp_num,
emp_name,
emp_phone,
license_id,
license_type,
`month`,
notify_url,
outer_trade_no,
pay_account,
pay_amount,
position_name,
remarks,
settle_type,
tax_fund_id,
wechat_app_id,
trade_status,
trade_time,
front_log_no,
trade_fail_code,
trade_result,
submit_status,
error_code,
error_message,
charge_amount,
create_time,
pay_time,
remark
from xz_withdrawal_apply
<where>
1 = 1
<if
test=
"tradeStatus != null"
>
and trade_status = #{tradeStatus}
</if>
<if
test=
"startTime != null and startTime != '' "
>
and create_time
>
=
STR_TO_DATE(#{startTime},'%Y-%m-%d %H:%i:%s')
</if>
<if
test=
"endTime != null and endTime != '' "
>
and create_time
<
= STR_TO_DATE(#{endTime},'%Y-%m-%d
%H:%i:%s')
</if>
<if
test=
"settleType != null and settleType != '' "
>
and settle_type = #{settleType}
</if>
<if
test=
"keyword != null and keyword != '' "
>
and (
emp_name like CONCAT('%',#{keyword},'%')
or
emp_phone like CONCAT('%',#{keyword},'%')
or pay_account like
CONCAT('%',#{keyword},'%')
or outer_trade_no like
CONCAT('%',#{keyword},'%')
)
</if>
</where>
order by create_time desc
limit #{pageNo},#{pageSize}
</select>
</mapper>
csm-service/cms-service-user/src/main/resources/mapper/xzsz/WithdrawalDao.xml
0 → 100644
浏览文件 @
cb5118ae
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.mmc.iuav.user.dao.xzsz.WithdrawalDao"
>
<insert
id=
"insertWithdrawalApply"
useGeneratedKeys=
"true"
keyProperty=
"id"
parameterType=
"com.mmc.iuav.user.entity.XzWithdrawalApplyDO"
>
insert into xz_withdrawal_apply (user_account_id,
bank_name,
emp_name,
emp_phone,
license_id,
license_type,
`month`,
outer_trade_no,
pay_account,
pay_amount,
position_name,
settle_type,
trade_status)
values (#{userAccountId}, #{bankName}, #{empName}, #{empPhone}, #{licenseId}, #{licenseType}, #{month},
#{outerTradeNo}, #{payAccount}, #{payAmount}, #{positionName}, #{settleType}, #{tradeStatus})
</insert>
</mapper>
\ No newline at end of file
csm-service/cms-service-user/src/main/resources/mapper/xzsz/XzDao.xml
0 → 100644
浏览文件 @
cb5118ae
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.mmc.iuav.user.dao.xzsz.XzDao"
>
<insert
id=
"addAuth"
parameterType=
"com.mmc.iuav.user.entity.XzAuthDO"
useGeneratedKeys=
"true"
keyProperty=
"id"
>
insert into xz_auth(user_account_id, `name`, id_card_no, mobile, bank_account, subsidiary_name, document_id,
custom_params, contract_url, xz_auth_status, create_time)
values (#{userAccountId}, #{name}, #{idCardNo}, #{mobile}, #{bankAccount}, #{subsidiary_name}, #{document_id},
#{customParams}, #{contract_url}, #{xzAuthStatus}, NOW())
</insert>
<select
id=
"getXzAuthByUserAccountId"
resultType=
"com.mmc.iuav.user.entity.XzAuthDO"
>
select id,
user_account_id,
`name`,
id_card_no,
mobile,
bank_account,
subsidiary_name,
document_id,
custom_params,
contract_url,
create_time,
xz_auth_status
from xz_auth
where user_account_id = #{userAccountId}
and is_deleted = 0
</select>
</mapper>
csm-service/cms-service-user/src/main/resources/not-check.yml
浏览文件 @
cb5118ae
...
...
@@ -29,4 +29,8 @@ data-filter:
-
/userapp/cooperation/appBrandMessage
-
/userapp/pilot/detailPilot
-
/userapp/pilot/appListPilot
-
/userapp/xz/xzAuthNotify
-
/userapp/xz/xzWithdrawNotify
-
/userapp/pay/feignTopUpCash
-
/userapp/pay/feignWalletFlowNO
kustomization/overlays/dev/kustomization.yaml
浏览文件 @
cb5118ae
...
...
@@ -18,4 +18,4 @@ patches:
images
:
-
name
:
REGISTRY/NAMESPACE/IMAGE:TAG
newName
:
mmc-registry.cn-shenzhen.cr.aliyuncs.com/sharefly-dev/cms
newTag
:
af55c66e9935fdc316c1f338ca46fe45bc16a77f
newTag
:
902a215520b53a526b6a1c467371e1a4b02f89bd
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论