|
|
@@ -14,6 +14,7 @@ import com.jzg.commons.entity.dto.*;
|
|
|
import com.jzg.commons.entity.po.SysAmountAuditing;
|
|
|
import com.jzg.commons.entity.po.SysUserAccount;
|
|
|
import com.jzg.commons.entity.po.SysUserJzgInfo;
|
|
|
+import com.jzg.commons.entity.po.SysUserJzgInfoBankCard;
|
|
|
import com.jzg.commons.entity.vo.AmountAuditVo;
|
|
|
import com.jzg.commons.exception.SystemException;
|
|
|
import com.jzg.commons.util.AssertionUtils;
|
|
|
@@ -38,6 +39,7 @@ import java.math.BigDecimal;
|
|
|
import java.time.Instant;
|
|
|
import java.time.LocalDateTime;
|
|
|
import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
import java.util.Objects;
|
|
|
import java.util.concurrent.TimeUnit;
|
|
|
|
|
|
@@ -77,6 +79,14 @@ public class SysAmountAuditingServiceImpl extends ServiceImpl<SysAmountAuditingM
|
|
|
@Override
|
|
|
public Page<AmountAuditVo> queryPage(AmountAuditParam param) {
|
|
|
Page<AmountAuditVo> page = baseMapper.queryPage(param.getPage(), param);
|
|
|
+ List<AmountAuditVo> records = page.getRecords();
|
|
|
+ if(CollUtil.isNotEmpty(records)){
|
|
|
+ Map<String, SysUserJzgInfoBankCard> bankCards = sysUserJzgInfoBankCardService.queryAllBankCardMap();
|
|
|
+ for (AmountAuditVo record : records) {
|
|
|
+ SysUserJzgInfoBankCard bankCard = bankCards.getOrDefault(record.getBankCardNum(), new SysUserJzgInfoBankCard());
|
|
|
+ record.setCardHolderName(bankCard.getCardHolderName());
|
|
|
+ }
|
|
|
+ }
|
|
|
return page;
|
|
|
}
|
|
|
|
|
|
@@ -163,10 +173,16 @@ public class SysAmountAuditingServiceImpl extends ServiceImpl<SysAmountAuditingM
|
|
|
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 提现付款
|
|
|
+ *
|
|
|
+ * @param param
|
|
|
+ */
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public HttpResult<String> verifyAmount(AmountAuditEditParam param) {
|
|
|
String userName = baseController.getUserName();
|
|
|
+ String userId = baseController.getUserId();
|
|
|
log.info("用户开始进行付款操作。userName=[{}],param=[{}]",userName,JSONUtil.toJsonStr(param));
|
|
|
if(StrUtil.isEmpty(param.getAccountId())){
|
|
|
return HttpResult.error("付款账户不能为空");
|
|
|
@@ -188,7 +204,7 @@ public class SysAmountAuditingServiceImpl extends ServiceImpl<SysAmountAuditingM
|
|
|
}
|
|
|
if(StringUtils.isNotBlank(audit.getReceiveUser())){
|
|
|
if(userName.equals(audit.getReceiveUser())){
|
|
|
- StateResult stateFailResult = auditStateListener.statusChange(AuditState.AuditStateEnum.SUCCESS_AUDIT,audit.getAuditingStatus()+"");
|
|
|
+ StateResult stateFailResult = auditStateListener.statusChange(AuditState.AuditStateEnum.SUCCESS_AUDIT,audit.getAuditingStatus()+"", userName,userId);
|
|
|
audit.setAuditingStatus(stateFailResult.getCurrentState());
|
|
|
audit.setPicId(param.getPicId());
|
|
|
audit.setVoucherId(param.getVoucherId());
|
|
|
@@ -203,7 +219,9 @@ public class SysAmountAuditingServiceImpl extends ServiceImpl<SysAmountAuditingM
|
|
|
log.info("账户金额少于提现金额,请审核账户。 userId=[{}}], userAccount.getSumAmount()=[{}],audit.getAmount()=[{}]",userAccount.getUserId(), userAccount.getSumAmount(), audit.getAmount());
|
|
|
throw new SystemException("账户金额少于提现金额,请审核账户");
|
|
|
}
|
|
|
- userAccount.setSumAmount(userAccount.getSumAmount().subtract(audit.getAmount()));
|
|
|
+ // 应付总计: 只添加,不减。 modify by lipf ,2026年6月3日14:30:33
|
|
|
+ // sumAmount = sumAmountPaid + SumAmountUnpaid
|
|
|
+ //userAccount.setSumAmount(userAccount.getSumAmount().subtract(audit.getAmount()));
|
|
|
userAccount.setSumAmountPaid(userAccount.getSumAmountPaid().add(audit.getAmount()));
|
|
|
userAccount.setSumAmountUnpaid(userAccount.getSumAmountUnpaid().subtract(audit.getAmount()));
|
|
|
|
|
|
@@ -220,7 +238,8 @@ public class SysAmountAuditingServiceImpl extends ServiceImpl<SysAmountAuditingM
|
|
|
@Override
|
|
|
public void rejectAmount(AmountAuditRejectParam param) {
|
|
|
String userName = baseController.getUserName();
|
|
|
- log.info("用户[{}]驳回体现申请. param=[{}]",userName,JSONUtil.toJsonStr(param));
|
|
|
+ String userId = baseController.getUserId();
|
|
|
+ log.info("用户[{}][{}]驳回体现申请. param=[{}]",userName,userId, JSONUtil.toJsonStr(param));
|
|
|
SysAmountAuditing audit = this.getById(param.getId());
|
|
|
if(audit.getAuditingStatus() > 0){
|
|
|
if(audit.getAuditingStatus() == 1){
|
|
|
@@ -237,7 +256,7 @@ public class SysAmountAuditingServiceImpl extends ServiceImpl<SysAmountAuditingM
|
|
|
AssertionUtils.isFail(true, "申请已被"+audit.getReceiveUser()+"领取返回待付款提现申请列表!");
|
|
|
}
|
|
|
|
|
|
- StateResult stateFailResult = auditStateListener.statusChange(AuditState.AuditStateEnum.FAIL_AUDIT,audit.getAuditingStatus()+"");
|
|
|
+ StateResult stateFailResult = auditStateListener.statusChange(AuditState.AuditStateEnum.FAIL_AUDIT,audit.getAuditingStatus()+"",userName , userId );
|
|
|
audit.setAuditingStatus(stateFailResult.getCurrentState());
|
|
|
audit.setRejectReason(param.getRejectReason());
|
|
|
audit.setRejectPerson(userName);
|
|
|
@@ -255,6 +274,14 @@ public class SysAmountAuditingServiceImpl extends ServiceImpl<SysAmountAuditingM
|
|
|
public Page<AmountAuditVo> myPayment(AmountAuditParam param) {
|
|
|
log.info("应付账款-我的付款。param=[{}]", JSONUtil.toJsonStr(param));
|
|
|
Page<AmountAuditVo> amountAuditVoPage = baseMapper.queryPaymentPage(param.getPage(), param, baseController.getUserName());
|
|
|
+ List<AmountAuditVo> records = amountAuditVoPage.getRecords();
|
|
|
+ if(CollUtil.isNotEmpty(records)){
|
|
|
+ Map<String, SysUserJzgInfoBankCard> bankCards = sysUserJzgInfoBankCardService.queryAllBankCardMap();
|
|
|
+ for (AmountAuditVo record : records) {
|
|
|
+ SysUserJzgInfoBankCard bankCard = bankCards.getOrDefault(record.getBankCardNum(), new SysUserJzgInfoBankCard());
|
|
|
+ record.setCardHolderName(bankCard.getCardHolderName());
|
|
|
+ }
|
|
|
+ }
|
|
|
return amountAuditVoPage;
|
|
|
}
|
|
|
|
|
|
@@ -265,16 +292,22 @@ public class SysAmountAuditingServiceImpl extends ServiceImpl<SysAmountAuditingM
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public Boolean applyWithdraw(ApplyWithdrawParam applyWithdrawParam) {
|
|
|
+ public HttpResult<String> applyWithdraw(ApplyWithdrawParam applyWithdrawParam) {
|
|
|
String userName = baseController.getUserName();
|
|
|
String userId = baseController.getUserId();
|
|
|
log.info("业务员提交提现申请:userName=[{}],userId=[{}],applyWithdrawParam=[{}]",userId, userName, JSONUtil.toJsonStr(applyWithdrawParam));
|
|
|
+ // 当前有处于待审核状态的提现申请的时候,不能再次提交提现申请 add by lipf, 2026年6月3日14:09:07
|
|
|
+ List<SysAmountAuditing> auditings = baseMapper.queryPaymentByUserId(userId, 0);
|
|
|
+ if(CollUtil.isNotEmpty(auditings)){
|
|
|
+ log.info("用户[{}][{}]存在未审核的提现申请,请审核通过后再继续提现",userId,userName);
|
|
|
+ return HttpResult.error("用户存在未审核的提现申请。请审核通过后再继续提现");
|
|
|
+ }
|
|
|
if(applyWithdrawParam.getWithdrawAmount().compareTo(BigDecimal.ZERO) <= 0){
|
|
|
log.info("业务员[{}]提现提现金额不能为负值[{}]",userName, applyWithdrawParam.getWithdrawAmount());
|
|
|
throw new SystemException("提现金额错误,请重新输入");
|
|
|
}
|
|
|
SysUserAccount sysUserAccount = userAccountService.queryByUserId(userId);
|
|
|
- AssertionUtils.isFail(Objects.isNull(sysUserAccount),"找不到用户");
|
|
|
+ AssertionUtils.isFail(Objects.isNull(sysUserAccount),"找不到用户账号");
|
|
|
|
|
|
// sys_amount_auditing 表中的 balance_amount 字段,表示冻结的金额, 避免重复提现
|
|
|
// 查询处于提现进程中的申请记录。 汇总其中的冻结金额
|
|
|
@@ -300,7 +333,7 @@ public class SysAmountAuditingServiceImpl extends ServiceImpl<SysAmountAuditingM
|
|
|
// 构造提现对象
|
|
|
SysAmountAuditing sysAmountAuditing = new SysAmountAuditing(applyWithdrawParam,sysUserAccount,sysUserJzgInfoBankCardDto,baseController.getUserId());
|
|
|
baseMapper.insert(sysAmountAuditing);
|
|
|
- return true;
|
|
|
+ return HttpResult.ok("提现申请完成");
|
|
|
}
|
|
|
|
|
|
/**
|