|
|
@@ -65,9 +65,8 @@ public class TransferService {
|
|
|
@Autowired
|
|
|
OrganizationFeignService organizationFeignService;
|
|
|
|
|
|
- /** 发起提现 */
|
|
|
@Transactional
|
|
|
- public Object create(RechargeParam param){
|
|
|
+ public Object transfer(RechargeParam param){
|
|
|
String userId = authHelper.getCurrentUser().getUserId();
|
|
|
Wallet userWallet = walletDao.findTop1ById(param.getWalletId());
|
|
|
//判断钱包是否初始化
|
|
|
@@ -75,6 +74,23 @@ public class TransferService {
|
|
|
return ResultContent.buildFail("用户钱包未开通");
|
|
|
}
|
|
|
|
|
|
+ //判断微信支付配置
|
|
|
+ ProjectWxPayParam wxPayParam = new ProjectWxPayParam();
|
|
|
+ wxPayParam.setAppId(param.getAppid());
|
|
|
+ com.zhongshu.card.client.ret.ResultContent<WxPayConfigModel> paySetResult = paySettingFeignService.getProjectWxPayConfig(wxPayParam);
|
|
|
+ if (paySetResult.isFailed()){
|
|
|
+ return ResultContent.buildFail("获取微信支付配置失败");
|
|
|
+ }
|
|
|
+
|
|
|
+ //设置人员信息
|
|
|
+ OrgUserDetailParam orgUserDetailParam = new OrgUserDetailParam();
|
|
|
+ orgUserDetailParam.setOid(userWallet.getOid());
|
|
|
+ orgUserDetailParam.setUserId(userWallet.getUserId());
|
|
|
+ com.zhongshu.card.client.ret.ResultContent<OrganizationUserModel> orgUserDetail = organizationFeignService.getOrgUserDetail(orgUserDetailParam);
|
|
|
+ if (orgUserDetail.isFailed()){
|
|
|
+ return ResultContent.buildFail("获取用户信息失败");
|
|
|
+ }
|
|
|
+
|
|
|
RechargeRecord rechargeRecord = new RechargeRecord();
|
|
|
org.springframework.beans.BeanUtils.copyProperties(param, rechargeRecord, "total");
|
|
|
String outTradeNo = CommonUtil.UUID();
|
|
|
@@ -82,9 +98,85 @@ public class TransferService {
|
|
|
rechargeRecord.setTotal(BigDecimal.valueOf(param.getTotal()));
|
|
|
rechargeRecord.setOid(userWallet.getOid());
|
|
|
rechargeRecord.setTradeType(TradeType.Take);
|
|
|
- rechargeRecord.setRechargeState(RechargeState.TakeReview);
|
|
|
+ rechargeRecord.setRechargeState(RechargeState.Taking);
|
|
|
rechargeRecord.setWallet(userWallet);
|
|
|
rechargeRecord.setUserId(userId);
|
|
|
+ rechargeRecord.setId(CommonUtil.UUID());
|
|
|
+ rechargeRecord.setUserInfo(orgUserDetail.getContent());
|
|
|
+
|
|
|
+ //构建转账请求参数
|
|
|
+ InitiateBatchTransferRequest request = new InitiateBatchTransferRequest();
|
|
|
+ request.setAppid(rechargeRecord.getAppid());
|
|
|
+ request.setOutBatchNo(rechargeRecord.getId());
|
|
|
+ request.setBatchRemark("余额提现");
|
|
|
+ request.setTotalAmount(rechargeRecord.getTotal().longValue());
|
|
|
+ request.setTotalNum(1);
|
|
|
+
|
|
|
+ TransferDetailInput transferDetailInput = new TransferDetailInput();
|
|
|
+ //todo openid
|
|
|
+ transferDetailInput.setOpenid(userWallet.getOpenid());
|
|
|
+ transferDetailInput.setOutDetailNo(rechargeRecord.getOutTradeNo());
|
|
|
+ transferDetailInput.setTransferAmount(rechargeRecord.getTotal().longValue());
|
|
|
+ transferDetailInput.setTransferRemark("余额提现");
|
|
|
+ if(rechargeRecord.getTotal().compareTo(BigDecimal.valueOf(2000L))>=0){
|
|
|
+ //todo 获取用户信息
|
|
|
+ transferDetailInput.setUserName("用户名");
|
|
|
+ }
|
|
|
+ if (rechargeRecord.getTotal().compareTo(BigDecimal.valueOf(0.3))<0){
|
|
|
+ transferDetailInput.setUserName(null);
|
|
|
+ }
|
|
|
+ request.setTransferDetailList(List.of(transferDetailInput));
|
|
|
+ //todo 设置转账场景id
|
|
|
+ request.setTransferSceneId("");
|
|
|
+
|
|
|
+ InitiateBatchTransferResponse initiateBatchTransferResponse = wxTransferBatchService.InitiateBatchTransferResponse(request, paySetResult.getContent());
|
|
|
+ TransferModel transferModel = new TransferModel();
|
|
|
+ BeanUtils.copyProperties(initiateBatchTransferResponse, transferModel);
|
|
|
+ rechargeRecord.setTransferModel(transferModel);
|
|
|
+ if (initiateBatchTransferResponse.getBatchStatus().equals("ACCEPTED")){
|
|
|
+ rechargeRecord.setRechargeState(RechargeState.Taking);
|
|
|
+ }
|
|
|
+ if (initiateBatchTransferResponse.getBatchStatus().equals("PROCESSING")){
|
|
|
+ rechargeRecord.setRechargeState(RechargeState.Taking);
|
|
|
+ }
|
|
|
+ if (initiateBatchTransferResponse.getBatchStatus().equals("FINISHED")){
|
|
|
+ rechargeRecord.setRechargeState(RechargeState.TakeSuccess);
|
|
|
+ }
|
|
|
+ if (initiateBatchTransferResponse.getBatchStatus().equals("CLOSED")){
|
|
|
+ rechargeRecord.setRechargeState(RechargeState.CLOSED);
|
|
|
+ return ResultContent.buildFail("该订单已关闭");
|
|
|
+ }
|
|
|
+
|
|
|
+ AmountUpdateParam amountUpdateParam = new AmountUpdateParam();
|
|
|
+ amountUpdateParam.setOutTradeNo(rechargeRecord.getOutTradeNo());
|
|
|
+ amountUpdateParam.setOid(rechargeRecord.getOid());
|
|
|
+ amountUpdateParam.setUserId(userId);
|
|
|
+ amountUpdateParam.setTotal(rechargeRecord.getTotal());
|
|
|
+ amountUpdateParam.setSchoolId(rechargeRecord.getSchoolId());
|
|
|
+ walletFeignService.commitTake(amountUpdateParam);
|
|
|
+
|
|
|
+ RechargeRecord record = rechargeRecordDao.save(rechargeRecord);
|
|
|
+ return ResultContent.buildSuccess(toModel(record));
|
|
|
+ }
|
|
|
+
|
|
|
+ /** 发起提现 */
|
|
|
+ @Transactional
|
|
|
+ public Object create(RechargeParam param){
|
|
|
+ String userId = authHelper.getCurrentUser().getUserId();
|
|
|
+ Wallet userWallet = walletDao.findTop1ById(param.getWalletId());
|
|
|
+ //判断钱包是否初始化
|
|
|
+ if (userWallet==null){
|
|
|
+ return ResultContent.buildFail("用户钱包未开通");
|
|
|
+ }
|
|
|
+
|
|
|
+ //判断微信支付配置
|
|
|
+ ProjectWxPayParam wxPayParam = new ProjectWxPayParam();
|
|
|
+ wxPayParam.setAppId(param.getAppid());
|
|
|
+ com.zhongshu.card.client.ret.ResultContent<WxPayConfigModel> paySetResult = paySettingFeignService.getProjectWxPayConfig(wxPayParam);
|
|
|
+ if (paySetResult.isFailed()){
|
|
|
+ return ResultContent.buildFail("获取微信支付配置失败");
|
|
|
+ }
|
|
|
+
|
|
|
//设置人员信息
|
|
|
OrgUserDetailParam orgUserDetailParam = new OrgUserDetailParam();
|
|
|
orgUserDetailParam.setOid(userWallet.getOid());
|
|
|
@@ -93,6 +185,18 @@ public class TransferService {
|
|
|
if (orgUserDetail.isFailed()){
|
|
|
return ResultContent.buildFail("获取用户信息失败");
|
|
|
}
|
|
|
+
|
|
|
+ RechargeRecord rechargeRecord = new RechargeRecord();
|
|
|
+ org.springframework.beans.BeanUtils.copyProperties(param, rechargeRecord, "total");
|
|
|
+ String outTradeNo = CommonUtil.UUID();
|
|
|
+ rechargeRecord.setOutTradeNo(outTradeNo);
|
|
|
+ rechargeRecord.setTotal(BigDecimal.valueOf(param.getTotal()));
|
|
|
+ rechargeRecord.setOid(userWallet.getOid());
|
|
|
+ rechargeRecord.setTradeType(TradeType.Take);
|
|
|
+ rechargeRecord.setRechargeState(RechargeState.TakeReview);
|
|
|
+ rechargeRecord.setWallet(userWallet);
|
|
|
+ rechargeRecord.setUserId(userId);
|
|
|
+
|
|
|
rechargeRecord.setUserInfo(orgUserDetail.getContent());
|
|
|
|
|
|
AmountUpdateParam amountUpdateParam = new AmountUpdateParam();
|