Commit 49664217 authored by 杨钧's avatar 杨钧

迁移还款计划查询接口

parent 5b10b1a0
......@@ -9,10 +9,13 @@ import cn.quantgroup.cashloanflowboss.core.annotation.channelrole.ChannelIdInit;
import cn.quantgroup.cashloanflowboss.core.annotation.channelrole.CheckChannelRole;
import cn.quantgroup.cashloanflowboss.core.base.Result;
import cn.quantgroup.cashloanflowboss.core.base.Tuple;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.Objects;
/**
* function:
......@@ -23,6 +26,7 @@ import javax.validation.Valid;
@RestController
@RequestMapping("/order")
@Slf4j
public class OrderController {
......@@ -195,12 +199,16 @@ public class OrderController {
@CheckChannelRole(channelOrderNumberSPEL = "#this[0]")
@GetMapping("/repaymentPlan")
public Result repaymentPlan(String channelOrderNumber, Long loanId) {
if(StringUtils.isEmpty(channelOrderNumber) && Objects.isNull(loanId)){
log.error("还款计划查询 channelOrderNumber 和 loanId 不能同时为空 ");
return Result.buildFail("channelOrderNumber 和 loanId 不能同时为空");
}
return Result.buildSuccess(orderService.findRepaymentPlan(channelOrderNumber, loanId));
}
/**
* 订单还款计划
* 发起结清
*
* @param channelOrderNumber
* @return
......
package cn.quantgroup.cashloanflowboss.api.order.model;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
/**
* @author yangjun
* @Date 2020/3/3 9:48
* @Desc
* @Update
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class RepaymentPlanItem {
/**
* 期数
*/
private Integer periodNo;
/**
* 还款类型 COMMON(正常)或SELF_WITHHOLD(代扣)
*/
private String repaymentType;
/**
* 还款状态,0 ("未还款")、2 ("已逾期")、3 ("已还款")
*/
private Integer repaymentStatus;
/**
* 应还本金
*/
private BigDecimal principal;
/**
* 应还利息
*/
private BigDecimal interest;
/**
* 应还罚息
*/
private BigDecimal overdueInterest;
/**
* 应还服务费
*/
private BigDecimal serviceFee;
/**
* 应还其它费用
*/
private BigDecimal otherFee;
/**
* 最早可还款时间
*/
private Long repayableTime;
/**
* 还款日期(到期时间),10位时间戳
*/
private Long dueTime;
/**
* 应还金额
*/
private BigDecimal requiredRepayment;
/**
* 实还本金
*/
private BigDecimal actPrincipal;
/**
* 实还利息
*/
private BigDecimal actInterest;
/**
* 实还服务费
*/
private BigDecimal actServiceFee;
/**
* 实还罚息
*/
private BigDecimal actOverdueInterest;
/**
* 实还其它费用
*/
private BigDecimal actOtherFee;
/**
* 减免金额
*/
private BigDecimal reliefAmount;
/**
* 实还金额
*/
private BigDecimal repayAmount;
/**
* 逾期天数
*/
private Integer overdueDays;
/**
* 还款时间
*/
private Long repayTime;
}
package cn.quantgroup.cashloanflowboss.api.order.model;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
import java.util.List;
/**
* @author yangjun
* @Date 2020/3/3 9:47
* @Desc
* @Update
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class RepaymentPlansResultModel {
private Long loanId;
/**
* 放款总金额
*/
private BigDecimal totalLoanAmount;
/**
* 收款总金额
*/
private BigDecimal totalReceiveAmount;
/**
* 放款到账时间
*/
private Long lendTime;
/**
* 申请时间,loan的created_at就行,提现签约时间
*/
private Long applyTime;
/**
* 应还款总金额
*/
private BigDecimal totalRepaymentAmount;
/**
* 总利息
*/
private BigDecimal totalInterest;
/**
* 应还总服务费
*/
private BigDecimal totalServiceFee;
/**
* 应还总其他费用
*/
private BigDecimal totalOtherFee;
/**
* 已还 总
*/
private BigDecimal alreadyPaidAmount;
/**
* 剩余未还 总
*/
private BigDecimal notPaidAmount;
/**
* 已还n期
*/
private Integer sumPaidTerm;
/**
* 是否结清 true 结清
*/
private Boolean hasAllPaid;
/** 还款计划 */
private List<RepaymentPlanItem> repaymentPlans;
}
package cn.quantgroup.cashloanflowboss.api.order.service;
import cn.quantgroup.cashloanflowboss.api.order.model.ApproveVo;
import cn.quantgroup.cashloanflowboss.api.order.model.HistoryOrderStatusVoModel;
import cn.quantgroup.cashloanflowboss.api.order.model.LendingFormModel;
import cn.quantgroup.cashloanflowboss.api.order.model.OrderVo;
import cn.quantgroup.cashloanflowboss.api.order.model.*;
import cn.quantgroup.cashloanflowboss.core.base.Tuple;
import cn.quantgroup.cashloanflowboss.core.tuple.ThreeTuple;
import cn.quantgroup.cashloanflowboss.spi.clf.model.CallbackRecordVoModel;
import org.springframework.data.domain.Page;
import org.springframework.transaction.annotation.Transactional;
......@@ -47,7 +43,7 @@ public interface OrderService {
List<CallbackRecordVoModel> getOrderCallbackRecordList(String channelOrderNumber);
Object findRepaymentPlan(String channelOrderNumber, Long loanId);
RepaymentPlansResultModel findRepaymentPlan(String channelOrderNumber, Long loanId);
void loadSecondAuditJob();
......
......@@ -26,8 +26,6 @@ import cn.quantgroup.cashloanflowboss.spi.clf.repository.ClfOrderMappingReposito
import cn.quantgroup.cashloanflowboss.spi.clf.service.CLFCenterService;
import cn.quantgroup.cashloanflowboss.spi.clotho.service.ClothoCenterService;
import cn.quantgroup.cashloanflowboss.spi.jolyne.JolyneService;
import cn.quantgroup.cashloanflowboss.spi.jolyne.JolyneUtil;
import cn.quantgroup.cashloanflowboss.spi.jolyne.model.JolyneDB;
import cn.quantgroup.cashloanflowboss.spi.opapi.OPCenter;
import cn.quantgroup.cashloanflowboss.spi.user.service.XyqbUserService;
import cn.quantgroup.cashloanflowboss.spi.xyqb.entity.Contract;
......@@ -38,7 +36,6 @@ import cn.quantgroup.cashloanflowboss.spi.xyqb.service.XYQBCenterService;
import cn.quantgroup.cashloanflowboss.utils.JSONTools;
import cn.quantgroup.user.retbean.XUser;
import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import java.math.BigDecimal;
......@@ -580,17 +577,28 @@ public class OrderServiceImpl implements OrderService{
* @return
*/
@Override
public Object findRepaymentPlan(String channelOrderNumber, Long loanId) {
public RepaymentPlansResultModel findRepaymentPlan(String channelOrderNumber, Long loanId) {
log.info("[findRepaymentPlan] 查询还款计划 channelOrderNumber={},loanId={}",channelOrderNumber,loanId);
if (loanId == null || loanId < 1) {
ClfOrderMapping orderMapping = clfCenterService.findOrderMappingByChannelOrderNo(channelOrderNumber);
if (orderMapping == null || orderMapping.getLoanId() == null) {
log.warn("[findRepaymentPlan] 订单信息不存在或没有loanId");
return null;
}
loanId = orderMapping.getLoanId();
}
// xyqbCenterService.findRepaymentPlan(loanId);
return null;
ServiceResult<RepaymentPlansResultModel> serviceResult = xyqbCenterService.findRepaymentPlan(loanId);
log.info("[findRepaymentPlan] 查询还款计划,返回信息 channelOrderNumber={},loanId={},serviceResult={}",channelOrderNumber,loanId,serviceResult);
if(Objects.isNull(serviceResult)||!serviceResult.isSuccess()){
log.error("[findRepaymentPlan] 查询还款计划异常,返回页面空list");
return null;
}
RepaymentPlansResultModel repaymentPlansVo = serviceResult.getData();
repaymentPlansVo.setLoanId(loanId);
log.info("[findRepaymentPlan] 查询还款计划,返回信息 channelOrderNumber={},loanId={},repaymentPlansVo={}",channelOrderNumber,loanId,repaymentPlansVo);
return repaymentPlansVo;
}
@Override
......
package cn.quantgroup.cashloanflowboss.spi.xyqb.client;
import cn.quantgroup.cashloanflowboss.api.order.model.RepaymentPlansResultModel;
import cn.quantgroup.cashloanflowboss.api.order.model.XyqbCurrentOrderStatusServiceResultModel;
import cn.quantgroup.cashloanflowboss.api.order.model.XyqbHistoryOrderStatusServiceResultModel;
import cn.quantgroup.cashloanflowboss.core.base.ServiceResult;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
......@@ -14,7 +16,7 @@ import java.util.Map;
* Created by WeiWei on 2019/8/12.
*/
@Component
@FeignClient(name = "XYQBCenter", url = "${api.http}", fallback = XYQBCenter.Fallback.class)
@FeignClient(name = "XYQBCenter", url = "http://api-ka3.liangkebang.net", fallback = XYQBCenter.Fallback.class)
public interface XYQBCenter {
@PostMapping(value = "/ex/paycenter/pay_notify", consumes = "application/x-www-form-urlencoded")
......@@ -26,6 +28,9 @@ public interface XYQBCenter {
@PostMapping(value = "/ex/ka/order/status/history", consumes = "application/x-www-form-urlencoded")
ServiceResult<XyqbHistoryOrderStatusServiceResultModel> getXyqbOrderHistoryStatus(@RequestParam Map paramMap);
@GetMapping(value = "/ex/ka/loan_plan/query", consumes = "application/x-www-form-urlencoded")
ServiceResult<RepaymentPlansResultModel> getXyqbRepaymentPlans(@RequestParam Map paramMap);
@Component
class Fallback implements XYQBCenter {
......@@ -44,7 +49,10 @@ public interface XYQBCenter {
return null;
}
@Override
public ServiceResult<RepaymentPlansResultModel> getXyqbRepaymentPlans(Map paramMap) {
return null;
}
}
}
package cn.quantgroup.cashloanflowboss.spi.xyqb.service;
import cn.quantgroup.cashloanflowboss.api.order.model.RepaymentPlansResultModel;
import cn.quantgroup.cashloanflowboss.api.order.model.XyqbCurrentOrderStatusServiceResultModel;
import cn.quantgroup.cashloanflowboss.api.order.model.XyqbHistoryOrderStatusServiceResultModel;
import cn.quantgroup.cashloanflowboss.core.base.ServiceResult;
......@@ -50,4 +51,6 @@ public interface XYQBCenterService {
boolean payResultNotify(Long loanId, Boolean expectPayResult);
Tuple<Boolean,String> cleanUserActiveOrder(Long userId);
ServiceResult<RepaymentPlansResultModel> findRepaymentPlan(Long loanId);
}
package cn.quantgroup.cashloanflowboss.spi.xyqb.service;
import cn.quantgroup.cashloanflowboss.api.order.model.RepaymentPlansResultModel;
import cn.quantgroup.cashloanflowboss.api.order.model.XyqbCurrentOrderStatusServiceResultModel;
import cn.quantgroup.cashloanflowboss.api.order.model.XyqbHistoryOrderStatusServiceResultModel;
import cn.quantgroup.cashloanflowboss.core.Application;
......@@ -27,6 +28,8 @@ import java.util.ArrayList;
import java.util.Date;
import java.util.Map;
import java.util.Objects;
import java.math.BigDecimal;
import java.util.*;
/**
* Created by WeiWei on 2019/8/12.
......@@ -260,4 +263,13 @@ public class XYQBCenterServiceImpl implements XYQBCenterService {
boolean result = (Objects.nonNull(resp) && resp.containsKey("code")) ? "0000".equals(resp.get("code")) : false;
return new Tuple<>(result,result?"清除用户活跃订单成功":"清除用户活跃订单失败");
}
@Override
public ServiceResult<RepaymentPlansResultModel> findRepaymentPlan(Long loanId) {
Map paramMap = Maps.newHashMap();
paramMap.put("loanId", loanId);
paramMap = SignUtil.sign(SignUtil.KA_API_KEY, paramMap);
log.info("查询还款计划,请求参数 paramMap={}",paramMap);
return xyqbCenter.getXyqbRepaymentPlans(paramMap);
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment