|
|
@@ -4,20 +4,24 @@ import cn.hutool.extra.spring.SpringUtil;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
+import com.ipaynow.jiaxin.domain.QueryPresignResultModel;
|
|
|
import com.ipaynow.jiaxin.response.BillDownloadResponse;
|
|
|
import com.ipaynow.jiaxin.response.ReceiptlDownloadResponse;
|
|
|
import com.ydtech.core.page.HttpResult;
|
|
|
+import com.ydtech.exception.SystemException;
|
|
|
import com.ydtech.modules.admin.constants.ManagementSource;
|
|
|
import com.ydtech.modules.admin.dao.SysAmountAuditingMapper;
|
|
|
import com.ydtech.modules.admin.dao.SysUserAccountHistoryMapper;
|
|
|
import com.ydtech.modules.admin.dao.SysUserBankCardMapper;
|
|
|
-import com.ydtech.modules.admin.model.po.*;
|
|
|
+import com.ydtech.modules.admin.model.SysUser;
|
|
|
+import com.ydtech.modules.admin.model.po.SysAmountAuditingEntity;
|
|
|
+import com.ydtech.modules.admin.model.po.SysAmountAuditingHistory;
|
|
|
+import com.ydtech.modules.admin.model.po.SysUserAccount;
|
|
|
+import com.ydtech.modules.admin.model.po.SysUserAccountHistory;
|
|
|
import com.ydtech.modules.admin.model.vo.SysAmountAuditingVo;
|
|
|
-import com.ydtech.modules.admin.service.SysAmountAuditingHistoryService;
|
|
|
-import com.ydtech.modules.admin.service.SysAmountAuditingService;
|
|
|
-import com.ydtech.modules.admin.service.SysSwitchConfigService;
|
|
|
-import com.ydtech.modules.admin.service.SysUserAccountService;
|
|
|
+import com.ydtech.modules.admin.service.*;
|
|
|
import com.ydtech.modules.lg.model.PushLgEntity;
|
|
|
+import com.ydtech.modules.lg.service.PushLgEntityService;
|
|
|
import com.ydtech.modules.ttqf.LgInformationPush;
|
|
|
import com.ydtech.modules.ttqf.PayConstantStatus;
|
|
|
import com.ydtech.modules.ttqf.RetrieveTTQFApi;
|
|
|
@@ -84,6 +88,12 @@ public class TtqfServiceImpl implements TtqfService {
|
|
|
@Autowired
|
|
|
private SysAmountAuditingMapper amountAuditingMapper;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private PushLgEntityService pushLgEntityService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private SysUserService userService;
|
|
|
+
|
|
|
@Override
|
|
|
public Object getUserPay(String userId) {
|
|
|
|
|
|
@@ -127,22 +137,29 @@ public class TtqfServiceImpl implements TtqfService {
|
|
|
String parse = TtqfDecrypt.parse(obj);
|
|
|
if (!StringUtils.isEmpty(parse)){
|
|
|
PaymentNoticeEntity noticeEntity = JSONObject.parseObject(parse, PaymentNoticeEntity.class);
|
|
|
- noticeEntity.setCreateTime(new Date());
|
|
|
- noticeMapper.insert(noticeEntity);
|
|
|
+ if (null != noticeEntity){
|
|
|
+ LambdaQueryWrapper<PaymentNoticeEntity> paymentNoticeEntityLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ paymentNoticeEntityLambdaQueryWrapper.eq(PaymentNoticeEntity::getMchOrderNo, noticeEntity.getMchOrderNo());
|
|
|
+ PaymentNoticeEntity notice = noticeMapper.selectOne(paymentNoticeEntityLambdaQueryWrapper);
|
|
|
+ if (null == notice){
|
|
|
+ noticeEntity.setCreateTime(new Date());
|
|
|
+ noticeMapper.insert(noticeEntity);
|
|
|
+ }
|
|
|
+ }
|
|
|
LambdaQueryWrapper<PayTtqfLog> wrapper = new LambdaQueryWrapper<>();
|
|
|
wrapper.eq(PayTtqfLog::getMchOrderNo, noticeEntity.getMchOrderNo());
|
|
|
PayTtqfLog ttqfLog = logMapper.selectOne(wrapper);
|
|
|
SysAmountAuditingVo amountAuditingVo = new SysAmountAuditingVo();
|
|
|
amountAuditingVo.setAmount(noticeEntity.getAmount());
|
|
|
amountAuditingVo.setUserId(ttqfLog.getUserId());
|
|
|
- writeRecord(amountAuditingVo,ttqfLog.getSysAmountAuditingId());
|
|
|
+ writeRecord(amountAuditingVo,ttqfLog.getSysAmountAuditingId(),noticeEntity.getFeeAmount());
|
|
|
}
|
|
|
log.info("接收打款通知回调 + paymentNotice ================={}", parse);
|
|
|
return TtqfResponse.ok();
|
|
|
}
|
|
|
|
|
|
|
|
|
- public void writeRecord(SysAmountAuditingVo sysAmountAuditingVo,String id){
|
|
|
+ public void writeRecord(SysAmountAuditingVo sysAmountAuditingVo,String id,BigDecimal feeAmount){
|
|
|
SysAmountAuditingEntity sysAmountAuditingEntity = sysAmountAuditingService.getById(id);
|
|
|
if (ObjectUtils.isEmpty(sysAmountAuditingEntity)){
|
|
|
return;
|
|
|
@@ -152,43 +169,22 @@ public class TtqfServiceImpl implements TtqfService {
|
|
|
BigDecimal amount = sysAmountAuditingVo.getAmount();
|
|
|
//提现人
|
|
|
String userId = sysAmountAuditingVo.getUserId();
|
|
|
-// SysUserAccount sysUserAccountEntity = new SysUserAccount();
|
|
|
-// 用户扣减金额
|
|
|
+ // 用户扣减金额
|
|
|
if (StringUtils.isNotEmpty(userId)) {
|
|
|
-// sysUserAccountEntity.setUserId(userId);
|
|
|
//提现人账户
|
|
|
SysUserAccount sysUserAccount = sysUserAccountService.getById(userId);
|
|
|
if (ObjectUtils.isNotEmpty(sysUserAccount)) {
|
|
|
- //注释掉原先按类型提现的逻辑 ,改为不区分类型 add by hxl 2024-06-18
|
|
|
- /**
|
|
|
- String amountStatus = sysAmountAuditingVo.getAmountStatus();
|
|
|
- if (StringUtils.isNotEmpty(amountStatus)) {
|
|
|
- if ("1".equals(amountStatus)) {
|
|
|
- sysUserAccount.setHandlingAmountAccount(amount);
|
|
|
- sysUserAccount.setHandlingAmountPayment(sysUserAccount.getHandlingAmountPayment().subtract(amount));
|
|
|
- // sysUserAccountEntity.setHandlingFee(afterAmount);
|
|
|
- } else if ("2".equals(amountStatus)) {
|
|
|
- sysUserAccount.setDocumentaryAmountAccount(amount);
|
|
|
- sysUserAccount.setDocumentaryAmountpayment(sysUserAccount.getDocumentaryAmountpayment().subtract(amount));
|
|
|
- // sysUserAccountEntity.setDocumentary(afterAmount);
|
|
|
- } else {
|
|
|
- sysUserAccount.setPromotionAmountAccount(amount);
|
|
|
- sysUserAccount.setPromotionAmountPayment(sysUserAccount.getPromotionAmountPayment().subtract(amount));
|
|
|
- // sysUserAccountEntity.setPromotion(afterAmount);
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
- **/
|
|
|
//已到账金额 = 原先的到账金额+ 已到账的金额
|
|
|
sysUserAccount.setSumAmountAccount((sysUserAccount.getSumAmountAccount() == null ? BigDecimal.ZERO : sysUserAccount.getSumAmountAccount()).add(amount));
|
|
|
//支付中的金额 = 原先的支付金额 -去提现的金额
|
|
|
sysUserAccount.setSumAmountPayment((sysUserAccount.getSumAmountPayment() == null ? BigDecimal.ZERO : sysUserAccount.getSumAmountPayment()).subtract(amount));
|
|
|
-
|
|
|
sysUserAccountService.updateById(sysUserAccount);
|
|
|
}
|
|
|
sysAmountAuditingVo.setAuditingStatus("3");
|
|
|
- //sysAmountAuditingVo.setAuditingUserId(BaseController.getUser().getId());
|
|
|
sysAmountAuditingVo.setAuditingTime(new Date());
|
|
|
+ sysAmountAuditingVo.setBankNumber(sysAmountAuditingEntity.getBankNumber());
|
|
|
+ sysAmountAuditingVo.setUserName(userService.getByUserId(sysAmountAuditingEntity.getUserId()).getName());
|
|
|
+ sysAmountAuditingVo.setUserId(sysAmountAuditingEntity.getUserId());
|
|
|
BeanUtils.copyProperties(sysAmountAuditingVo, sysAmountAuditingEntity);
|
|
|
sysAmountAuditingEntity.setCreateTime(null);
|
|
|
amountAuditingMapper.updateById(sysAmountAuditingEntity);
|
|
|
@@ -201,6 +197,7 @@ public class TtqfServiceImpl implements TtqfService {
|
|
|
//插入轨迹表
|
|
|
SysAmountAuditingHistory sysAmountAuditingHistory = new SysAmountAuditingHistory(null, sysAmountAuditingEntity.getId(), amount, userId, new Date(), "4", "1", sysUserAccountHistory.getId());
|
|
|
sysAmountAuditingHistoryService.save(sysAmountAuditingHistory);
|
|
|
+ sendCollect(sysAmountAuditingEntity,sysAmountAuditingHistory.getAuditingStatus(),feeAmount);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -228,19 +225,19 @@ public class TtqfServiceImpl implements TtqfService {
|
|
|
if (!sysSwitchConfigService.getBalanceExtractStatus()){
|
|
|
return HttpResult.ok(WithdrawalFRes.builder().bizCode("0").msg("").url("").build());
|
|
|
}
|
|
|
- SysUserBankCard bankCard = SpringUtil.getBean(SysUserBankCardMapper.class).selectByIdPay(withdrawal.getUserId());
|
|
|
- if (Objects.isNull(bankCard)){
|
|
|
+ SysUser sysUser = SpringUtil.getBean(SysUserBankCardMapper.class).selectByIdPay(withdrawal.getUserId());
|
|
|
+ if (Objects.isNull(sysUser)){
|
|
|
return HttpResult.error("用户不存在,请检查");
|
|
|
}
|
|
|
- if (StringUtils.isEmpty(bankCard.getIdentity())){
|
|
|
+ if (StringUtils.isEmpty(sysUser.getIdentity())){
|
|
|
return HttpResult.error("用户身份证号不存在,请检查");
|
|
|
}
|
|
|
- if (!ManagementSource.MS_02.getCode().equals(bankCard.getManagementSource())){
|
|
|
+ if (!ManagementSource.MS_02.getCode().equals(sysUser.getManagementSource())){
|
|
|
return HttpResult.ok(WithdrawalFRes.builder().bizCode("0").msg("").url("").build());
|
|
|
}
|
|
|
- PayUserSign payUserSign = signService.selectOne(bankCard.getIdentity(),bankCard.getUserId());
|
|
|
+ PayUserSign payUserSign = signService.selectOne(sysUser.getIdentity(),sysUser.getId());
|
|
|
if (!Objects.isNull(payUserSign)){
|
|
|
- String signUrl = RetrieveTTQFApi.contractH5(bankCard.getIdentity());
|
|
|
+ String signUrl = RetrieveTTQFApi.contractH5(sysUser.getIdentity());
|
|
|
if (Objects.equals(PayConstantStatus.SIGN_STATUS,payUserSign.getSign()) &&
|
|
|
Objects.equals(PayConstantStatus.AUTH_STATUS,payUserSign.getAuthStatus())){
|
|
|
|
|
|
@@ -249,7 +246,12 @@ public class TtqfServiceImpl implements TtqfService {
|
|
|
return HttpResult.ok(WithdrawalFRes.builder().bizCode("2").msg("签约中").url(signUrl).build());
|
|
|
}
|
|
|
try {
|
|
|
- boolean sign = RetrieveTTQFApi.queryPressing(bankCard.getIdentity());
|
|
|
+ boolean sign = false;
|
|
|
+ QueryPresignResultModel resultModel = RetrieveTTQFApi.queryPressing(sysUser.getIdentity());
|
|
|
+ if (Objects.equals(PayConstantStatus.SIGN_STATUS,resultModel.getSignStatus()) &&
|
|
|
+ Objects.equals(PayConstantStatus.AUTH_STATUS,resultModel.getAuthStatus())){
|
|
|
+ sign = true;
|
|
|
+ }
|
|
|
return HttpResult.ok(WithdrawalFRes.builder().bizCode(sign ? "3" : "1").url("").msg(sign ? "已签约" : "未签约").build());
|
|
|
}catch (Exception e){
|
|
|
log.info("查询签约状态异常:{}", e.getMessage());
|
|
|
@@ -259,55 +261,59 @@ public class TtqfServiceImpl implements TtqfService {
|
|
|
|
|
|
@Override
|
|
|
public HttpResult signingAddress(UserWithdrawal withdrawal) {
|
|
|
- SysUserBankCard bankCard = SpringUtil.getBean(SysUserBankCardMapper.class).selectByIdPay(withdrawal.getUserId());
|
|
|
- if (Objects.isNull(bankCard)){
|
|
|
- return HttpResult.error("用户不存在,请检查");
|
|
|
- }
|
|
|
- if (StringUtils.isEmpty(bankCard.getIdentity())){
|
|
|
- return HttpResult.error("用户身份证号不存在,请检查");
|
|
|
- }
|
|
|
- String pres = RetrieveTTQFApi.pres(bankCard);
|
|
|
- if (!StringUtils.isEmpty(pres)){
|
|
|
- signService.saveUserSign(bankCard.getIdentity(),bankCard.getUserId());
|
|
|
+ try {
|
|
|
+ SysUser sysUser = SpringUtil.getBean(SysUserBankCardMapper.class).selectByIdPay(withdrawal.getUserId());
|
|
|
+ if (Objects.isNull(sysUser)){
|
|
|
+ return HttpResult.error("用户不存在,请检查");
|
|
|
+ }
|
|
|
+ if (StringUtils.isEmpty(sysUser.getIdentity())){
|
|
|
+ return HttpResult.error("用户身份证号不存在,请检查");
|
|
|
+ }
|
|
|
+ String pres = RetrieveTTQFApi.pres(sysUser, withdrawal);
|
|
|
+ if (!StringUtils.isEmpty(pres)){
|
|
|
+ signService.saveUserSign(sysUser.getIdentity(),sysUser.getId());
|
|
|
+ }
|
|
|
+ return HttpResult.ok(WithdrawalFRes.builder().bizCode("").url(pres).msg("").build());
|
|
|
+ }catch (Exception e){
|
|
|
+ log.error("获取用户签约信息异常{}",e.getMessage());
|
|
|
+ throw new SystemException("提现申请提交失败");
|
|
|
}
|
|
|
- return HttpResult.ok(WithdrawalFRes.builder().bizCode("").url(pres).msg("").build());
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public HttpResult userCashOut(UserWithdrawal withdrawal) {
|
|
|
- SysUserBankCard bankCard = SpringUtil.getBean(SysUserBankCardMapper.class).selectByIdPay(withdrawal.getUserId());
|
|
|
- if (Objects.isNull(bankCard)){
|
|
|
- return HttpResult.error("用户不存在,请检查");
|
|
|
- }
|
|
|
- if (StringUtils.isEmpty(bankCard.getIdentity())){
|
|
|
- return HttpResult.error("用户身份证号不存在,请检查");
|
|
|
- }
|
|
|
- if (!ManagementSource.MS_02.getCode().equals(bankCard.getManagementSource())){
|
|
|
- return HttpResult.error("用户不是个代,请线下申请提现");
|
|
|
- }
|
|
|
- boolean balance = RetrieveTTQFApi.extractBalance(bankCard, withdrawal);
|
|
|
- if (balance){
|
|
|
- //推送提现记录
|
|
|
- sendCollect( bankCard, withdrawal);
|
|
|
+ try {
|
|
|
+ SysUser sysUser = SpringUtil.getBean(SysUserBankCardMapper.class).selectByIdPay(withdrawal.getUserId());
|
|
|
+ if (Objects.isNull(sysUser)){
|
|
|
+ return HttpResult.error("用户不存在,请检查");
|
|
|
+ }
|
|
|
+ if (StringUtils.isEmpty(sysUser.getIdentity())){
|
|
|
+ return HttpResult.error("用户身份证号不存在,请检查");
|
|
|
+ }
|
|
|
+ if (!ManagementSource.MS_02.getCode().equals(sysUser.getManagementSource())){
|
|
|
+ return HttpResult.error("用户不是个代,请线下申请提现");
|
|
|
+ }
|
|
|
+ boolean balance = RetrieveTTQFApi.extractBalance(sysUser, withdrawal);
|
|
|
+ return HttpResult.ok(balance);
|
|
|
+ }catch (Exception e){
|
|
|
+ log.error("提现申请提交失败{}",e.getMessage());
|
|
|
+ throw new RuntimeException("提现申请提交失败");
|
|
|
}
|
|
|
- return HttpResult.ok(balance);
|
|
|
}
|
|
|
|
|
|
|
|
|
- public void sendCollect(SysUserBankCard bankCard,UserWithdrawal withdrawal){
|
|
|
+ public void sendCollect(SysAmountAuditingEntity sysAmountAuditingEntity,String auditingStatus,BigDecimal feeAmount ){
|
|
|
PushLgEntity lgEntity = new PushLgEntity();
|
|
|
-
|
|
|
- SysAmountAuditingVo sysAmountAuditingVo = new SysAmountAuditingVo();
|
|
|
- sysAmountAuditingVo.setId("");
|
|
|
- sysAmountAuditingVo.setUserId(bankCard.getUserId());
|
|
|
- sysAmountAuditingVo.setBankNumber(bankCard.getBankNumber());
|
|
|
- sysAmountAuditingVo.setAmount(withdrawal.getAmount());
|
|
|
- sysAmountAuditingVo.setCreateTime(new Date());
|
|
|
- sysAmountAuditingVo.setAuditingStatus("");
|
|
|
- sysAmountAuditingVo.setUserName(bankCard.getUserName());
|
|
|
- sysAmountAuditingVo.setMobile(bankCard.getMobile());
|
|
|
- //sendCollectUtils.sendCollect(sysAmountAuditingVo);
|
|
|
+ lgEntity.setApplicationTime(new Date());
|
|
|
+ lgEntity.setBusinessUmber(sysAmountAuditingEntity.getId());
|
|
|
+ lgEntity.setPayee(sysAmountAuditingEntity.getUserName());
|
|
|
+ lgEntity.setPayeeId(sysAmountAuditingEntity.getUserId());
|
|
|
+ lgEntity.setReceivingAccount(sysAmountAuditingEntity.getBankNumber());
|
|
|
+ lgEntity.setExtractMoney(sysAmountAuditingEntity.getAmount());
|
|
|
+ lgEntity.setServiceCharge(feeAmount);
|
|
|
+ lgEntity.setExtractStatus(auditingStatus);
|
|
|
+ pushLgEntityService.sendLgData(lgEntity);
|
|
|
}
|
|
|
|
|
|
|