提交 0b26b3d2 authored 作者: huyufan's avatar huyufan

货主借款审批

上级 ec2fd7f3
...@@ -16,7 +16,8 @@ public enum OwnerAccountEnum { ...@@ -16,7 +16,8 @@ public enum OwnerAccountEnum {
@AllArgsConstructor @AllArgsConstructor
public enum AccountTypeStatus { public enum AccountTypeStatus {
MARGIN_ACCOUNT(1, "保证金账户"), MARGIN_ACCOUNT(1, "保证金账户"),
PREPAID_FREIGHT_ACCOUNT(2, "预付运费账户") PREPAID_FREIGHT_ACCOUNT(2, "预付运费账户"),
LOAN_ACCOUNT(3, "借款账户")
; ;
private final Integer code; private final Integer code;
private final String msg; private final String msg;
......
package com.clx.performance.param.pc.loan.carrier;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class CarrierOwnerLoanRecordApproveParam {
@ApiModelProperty("借款单号")
private Long loanNo;
@ApiModelProperty("1:同意 0:拒绝")
private Boolean status;
@ApiModelProperty("拒绝原因")
private String rejectReason;
@ApiModelProperty("1:虚拟货币 2:资金")
private Integer loanType;
}
package com.clx.performance.controller.pc.loan.carrier; package com.clx.performance.controller.pc.loan.carrier;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.param.pc.loan.carrier.CarrierOwnerLoanRecordApproveParam;
import com.clx.performance.param.pc.loan.carrier.PageCarrierOwnerLoanRecordParam; import com.clx.performance.param.pc.loan.carrier.PageCarrierOwnerLoanRecordParam;
import com.clx.performance.service.loan.OwnerLoanRecordService; import com.clx.performance.service.loan.OwnerLoanRecordService;
import com.clx.performance.vo.pc.loan.carrier.OwnerLoanRecordVO; import com.clx.performance.vo.pc.loan.carrier.OwnerLoanRecordVO;
...@@ -34,5 +35,10 @@ public class CarrierOwnerLoanRecordController { ...@@ -34,5 +35,10 @@ public class CarrierOwnerLoanRecordController {
return Result.page(page.getRecords(),page.getTotal(),page.getPages()); return Result.page(page.getRecords(),page.getTotal(),page.getPages());
} }
@ApiOperation(value = "借款列表",notes = "<br>By:刘海泉")
@PostMapping("/ownerLoanRecordApprove")
public Result<Object> ownerLoanRecordApprove(@RequestBody @Validated CarrierOwnerLoanRecordApproveParam param) {
ownerLoanRecordService.ownerLoanRecordApprove(param);
return Result.ok();
}
} }
...@@ -2,10 +2,14 @@ package com.clx.performance.dao.impl.loan; ...@@ -2,10 +2,14 @@ package com.clx.performance.dao.impl.loan;
import com.clx.performance.dao.loan.OwnerLoanAccountDao; import com.clx.performance.dao.loan.OwnerLoanAccountDao;
import com.clx.performance.mapper.loan.OwnerLoanAccountMapper; import com.clx.performance.mapper.loan.OwnerLoanAccountMapper;
import com.clx.performance.model.OwnerAccount;
import com.clx.performance.model.loan.OwnerLoanAccount; import com.clx.performance.model.loan.OwnerLoanAccount;
import com.msl.common.dao.impl.BaseDaoImpl; import com.msl.common.dao.impl.BaseDaoImpl;
import com.msl.common.utils.DateUtils;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.time.LocalDateTime;
/** /**
* @author kavin * @author kavin
* Date 2024-01-20 * Date 2024-01-20
...@@ -13,4 +17,15 @@ import org.springframework.stereotype.Repository; ...@@ -13,4 +17,15 @@ import org.springframework.stereotype.Repository;
*/ */
@Repository @Repository
public class OwnerLoanAccountDaoImpl extends BaseDaoImpl<OwnerLoanAccountMapper, OwnerLoanAccount, Integer> implements OwnerLoanAccountDao { public class OwnerLoanAccountDaoImpl extends BaseDaoImpl<OwnerLoanAccountMapper, OwnerLoanAccount, Integer> implements OwnerLoanAccountDao {
@Override
public Integer updateAccountCAS(OwnerLoanAccount account, LocalDateTime now, boolean flag) {
String nowStr = DateUtils.formatDateTime(now).get();
if (flag) {
return baseMapper.addAccount(account, nowStr);
} else {
return null;
// return baseMapper.subAccount(account, nowStr);
}
}
} }
package com.clx.performance.dao.loan; package com.clx.performance.dao.loan;
import com.clx.performance.mapper.loan.OwnerLoanAccountMapper; import com.clx.performance.mapper.loan.OwnerLoanAccountMapper;
import com.clx.performance.model.OwnerAccount;
import com.clx.performance.model.loan.OwnerLoanAccount; import com.clx.performance.model.loan.OwnerLoanAccount;
import com.msl.common.dao.BaseDao; import com.msl.common.dao.BaseDao;
import java.time.LocalDateTime;
/** /**
* @author kavin * @author kavin
* Date 2024-01-20 * Date 2024-01-20
* Time 13:31 * Time 13:31
*/ */
public interface OwnerLoanAccountDao extends BaseDao<OwnerLoanAccountMapper, OwnerLoanAccount, Integer> { public interface OwnerLoanAccountDao extends BaseDao<OwnerLoanAccountMapper, OwnerLoanAccount, Integer> {
Integer updateAccountCAS(OwnerLoanAccount account, LocalDateTime now, boolean flag);
} }
package com.clx.performance.mapper.loan; package com.clx.performance.mapper.loan;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.clx.performance.model.OwnerAccount;
import com.clx.performance.model.loan.OwnerLoanAccount; import com.clx.performance.model.loan.OwnerLoanAccount;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;
/** /**
* @author kavin * @author kavin
...@@ -9,4 +12,18 @@ import com.clx.performance.model.loan.OwnerLoanAccount; ...@@ -9,4 +12,18 @@ import com.clx.performance.model.loan.OwnerLoanAccount;
* Time 13:31 * Time 13:31
*/ */
public interface OwnerLoanAccountMapper extends BaseMapper<OwnerLoanAccount> { public interface OwnerLoanAccountMapper extends BaseMapper<OwnerLoanAccount> {
@Update("update owner_loan_account set funding_amount = funding_amount + #{account.fundingAmount}"
+ ",virtually_amount = virtually_amount + #{account.virtuallyAmount}"
+ ",modified_time= #{now}"
+ "where id = #{account.id} and modified_time = #{account.modifiedTime}"
)
Integer addAccount(@Param("account") OwnerLoanAccount account, @Param("now") String nowStr);
// @Update("update owner_account set funding_amount = funding_amount - #{account.fundingAmount}," +
// "frozen_balance = frozen_balance + #{account.frozenBalance},account_balance = account_balance - #{account.accountBalance}," +
// "modified_time=#{now}"
// + "where id = #{account.id} and modified_time = #{account.modifiedTime}"
// )
// Integer subAccount(@Param("account") OwnerAccount account, @Param("now") String now);
} }
...@@ -2,21 +2,26 @@ package com.clx.performance.service.impl.loan; ...@@ -2,21 +2,26 @@ package com.clx.performance.service.impl.loan;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.component.IdGenerateSnowFlake;
import com.clx.performance.dao.loan.OwnerLoanAccountDao;
import com.clx.performance.dao.loan.OwnerLoanRecordDao; import com.clx.performance.dao.loan.OwnerLoanRecordDao;
import com.clx.performance.enums.loan.OwnerLoanRecordEnum;
import com.clx.performance.model.loan.OwnerLoanAccount;
import com.clx.performance.model.loan.OwnerLoanRecord; import com.clx.performance.model.loan.OwnerLoanRecord;
import com.clx.performance.param.pc.loan.carrier.CarrierOwnerLoanRecordApproveParam;
import com.clx.performance.param.pc.loan.carrier.PageCarrierOwnerLoanRecordParam; import com.clx.performance.param.pc.loan.carrier.PageCarrierOwnerLoanRecordParam;
import com.clx.performance.param.pc.loan.owner.OwnerLoanRecordParam; import com.clx.performance.param.pc.loan.owner.OwnerLoanRecordParam;
import com.clx.performance.service.loan.OwnerLoanRecordService; import com.clx.performance.service.loan.OwnerLoanRecordService;
import com.clx.performance.struct.loan.OwnerLoanRecordStruct; import com.clx.performance.struct.loan.OwnerLoanRecordStruct;
import com.clx.performance.vo.pc.loan.carrier.OwnerLoanRecordVO; import com.clx.performance.vo.pc.loan.carrier.OwnerLoanRecordVO;
import com.msl.common.utils.LocalDateTimeUtils;
import com.msl.user.data.UserSessionData; import com.msl.user.data.UserSessionData;
import com.msl.user.utils.TokenUtil; import com.msl.user.utils.TokenUtil;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDate; import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List; import java.util.List;
...@@ -34,6 +39,10 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService { ...@@ -34,6 +39,10 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService {
private final OwnerLoanRecordStruct ownerLoanRecordStruct; private final OwnerLoanRecordStruct ownerLoanRecordStruct;
private final IdGenerateSnowFlake idGenerateSnowFlake;
private final OwnerLoanAccountDao ownerLoanAccountDao;
@Override @Override
public IPage<OwnerLoanRecordVO> pageOwnerLoanRecord(PageCarrierOwnerLoanRecordParam param) { public IPage<OwnerLoanRecordVO> pageOwnerLoanRecord(PageCarrierOwnerLoanRecordParam param) {
IPage<OwnerLoanRecord> page = ownerLoanRecordDao.pageOwnerLoanRecord(param); IPage<OwnerLoanRecord> page = ownerLoanRecordDao.pageOwnerLoanRecord(param);
...@@ -52,6 +61,7 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService { ...@@ -52,6 +61,7 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService {
LocalDateTime createTime = LocalDateTime.now(); LocalDateTime createTime = LocalDateTime.now();
LocalDateTime loanRepaymentTime = createTime.plusDays(param.getExpireDay()); LocalDateTime loanRepaymentTime = createTime.plusDays(param.getExpireDay());
entity.setLoanRepaymentTime(loanRepaymentTime); entity.setLoanRepaymentTime(loanRepaymentTime);
entity.setLoanNo(idGenerateSnowFlake.nextId(1L));
entity.setCreateTime(createTime); entity.setCreateTime(createTime);
entity.setOwnerUserNo(loginUserInfo.getUserNo()); entity.setOwnerUserNo(loginUserInfo.getUserNo());
entity.setOwnerUserName(loginUserInfo.getUserName()); entity.setOwnerUserName(loginUserInfo.getUserName());
...@@ -62,7 +72,49 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService { ...@@ -62,7 +72,49 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService {
entity.setPayee("收款方写死"); entity.setPayee("收款方写死");
entity.setPayeeAccount("收款方账户写死"); entity.setPayeeAccount("收款方账户写死");
entity.setCreateBy(loginUserInfo.getUserName()); entity.setCreateBy(loginUserInfo.getUserName());
entity.setStatus(10); entity.setStatus(OwnerLoanRecordEnum.Status.APPROVE_WAIT.getCode());
ownerLoanRecordDao.saveEntity(entity); ownerLoanRecordDao.saveEntity(entity);
} }
@Override
@Transactional(rollbackFor = Exception.class)
public void ownerLoanRecordApprove(CarrierOwnerLoanRecordApproveParam param) {
OwnerLoanRecord ownerLoanRecord = ownerLoanRecordDao.getOneByField(OwnerLoanRecord::getLoanNo, param.getLoanNo()).get();
if (param.getStatus()) {
//同意
ownerLoanRecord.setLoanType(param.getLoanType());
if (OwnerLoanRecordEnum.LoanType.FUND.getCode().equals(param.getLoanType())) {
//资金 TODO 调中信银企直连的产品,从诚联信账户中给鑫祥和执行转账
ownerLoanRecord.setStatus(OwnerLoanRecordEnum.Status.PAYING.getCode());
} else {
ownerLoanRecord.setStatus(OwnerLoanRecordEnum.Status.APPROVE_PASS.getCode());
// 虚拟币 直接增加
Long ownerUserNo = ownerLoanRecord.getOwnerUserNo();
BigDecimal loanBalance = ownerLoanRecord.getLoanBalance();
while (true) {
OwnerLoanAccount ownerLoanAccount = ownerLoanAccountDao.getOneByField(OwnerLoanAccount::getOwnerUserNo, ownerUserNo).get();
OwnerLoanAccount entity = new OwnerLoanAccount();
entity.setId(ownerLoanAccount.getId());
entity.setVirtuallyAmount(loanBalance);
entity.setFundingAmount(BigDecimal.ZERO);
entity.setModifiedTime(ownerLoanAccount.getModifiedTime());
Integer flag = ownerLoanAccountDao.updateAccountCAS(entity, LocalDateTime.now(), true);
if (flag == 1) {
ownerLoanRecordDao.updateEntityByKey(ownerLoanRecord);
return;
}
}
}
} else {
//拒绝
}
}
} }
package com.clx.performance.service.loan; package com.clx.performance.service.loan;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.param.pc.loan.carrier.CarrierOwnerLoanRecordApproveParam;
import com.clx.performance.param.pc.loan.carrier.PageCarrierOwnerLoanRecordParam; import com.clx.performance.param.pc.loan.carrier.PageCarrierOwnerLoanRecordParam;
import com.clx.performance.param.pc.loan.owner.OwnerLoanRecordParam; import com.clx.performance.param.pc.loan.owner.OwnerLoanRecordParam;
import com.clx.performance.vo.pc.loan.carrier.OwnerLoanRecordVO; import com.clx.performance.vo.pc.loan.carrier.OwnerLoanRecordVO;
...@@ -14,4 +15,6 @@ public interface OwnerLoanRecordService { ...@@ -14,4 +15,6 @@ public interface OwnerLoanRecordService {
IPage<OwnerLoanRecordVO> pageOwnerLoanRecord(PageCarrierOwnerLoanRecordParam param); IPage<OwnerLoanRecordVO> pageOwnerLoanRecord(PageCarrierOwnerLoanRecordParam param);
void ownerLoanRecordSubmit(OwnerLoanRecordParam param); void ownerLoanRecordSubmit(OwnerLoanRecordParam param);
void ownerLoanRecordApprove(CarrierOwnerLoanRecordApproveParam param);
} }
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论