Commit 49664217 authored by 杨钧's avatar 杨钧

迁移还款计划查询接口

parent 5b10b1a0
...@@ -9,10 +9,13 @@ import cn.quantgroup.cashloanflowboss.core.annotation.channelrole.ChannelIdInit; ...@@ -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.annotation.channelrole.CheckChannelRole;
import cn.quantgroup.cashloanflowboss.core.base.Result; import cn.quantgroup.cashloanflowboss.core.base.Result;
import cn.quantgroup.cashloanflowboss.core.base.Tuple; 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.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.validation.Valid; import javax.validation.Valid;
import java.util.Objects;
/** /**
* function: * function:
...@@ -23,6 +26,7 @@ import javax.validation.Valid; ...@@ -23,6 +26,7 @@ import javax.validation.Valid;
@RestController @RestController
@RequestMapping("/order") @RequestMapping("/order")
@Slf4j
public class OrderController { public class OrderController {
...@@ -195,12 +199,16 @@ public class OrderController { ...@@ -195,12 +199,16 @@ public class OrderController {
@CheckChannelRole(channelOrderNumberSPEL = "#this[0]") @CheckChannelRole(channelOrderNumberSPEL = "#this[0]")
@GetMapping("/repaymentPlan") @GetMapping("/repaymentPlan")
public Result repaymentPlan(String channelOrderNumber, Long loanId) { 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)); return Result.buildSuccess(orderService.findRepaymentPlan(channelOrderNumber, loanId));
} }
/** /**
* 订单还款计划 * 发起结清
* *
* @param channelOrderNumber * @param channelOrderNumber
* @return * @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; package cn.quantgroup.cashloanflowboss.api.order.service;
import cn.quantgroup.cashloanflowboss.api.order.model.ApproveVo; import cn.quantgroup.cashloanflowboss.api.order.model.*;
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.core.base.Tuple; import cn.quantgroup.cashloanflowboss.core.base.Tuple;
import cn.quantgroup.cashloanflowboss.core.tuple.ThreeTuple;
import cn.quantgroup.cashloanflowboss.spi.clf.model.CallbackRecordVoModel; import cn.quantgroup.cashloanflowboss.spi.clf.model.CallbackRecordVoModel;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
...@@ -47,7 +43,7 @@ public interface OrderService { ...@@ -47,7 +43,7 @@ public interface OrderService {
List<CallbackRecordVoModel> getOrderCallbackRecordList(String channelOrderNumber); List<CallbackRecordVoModel> getOrderCallbackRecordList(String channelOrderNumber);
Object findRepaymentPlan(String channelOrderNumber, Long loanId); RepaymentPlansResultModel findRepaymentPlan(String channelOrderNumber, Long loanId);
void loadSecondAuditJob(); void loadSecondAuditJob();
......
...@@ -26,8 +26,6 @@ import cn.quantgroup.cashloanflowboss.spi.clf.repository.ClfOrderMappingReposito ...@@ -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.clf.service.CLFCenterService;
import cn.quantgroup.cashloanflowboss.spi.clotho.service.ClothoCenterService; import cn.quantgroup.cashloanflowboss.spi.clotho.service.ClothoCenterService;
import cn.quantgroup.cashloanflowboss.spi.jolyne.JolyneService; 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.opapi.OPCenter;
import cn.quantgroup.cashloanflowboss.spi.user.service.XyqbUserService; import cn.quantgroup.cashloanflowboss.spi.user.service.XyqbUserService;
import cn.quantgroup.cashloanflowboss.spi.xyqb.entity.Contract; import cn.quantgroup.cashloanflowboss.spi.xyqb.entity.Contract;
...@@ -38,7 +36,6 @@ import cn.quantgroup.cashloanflowboss.spi.xyqb.service.XYQBCenterService; ...@@ -38,7 +36,6 @@ import cn.quantgroup.cashloanflowboss.spi.xyqb.service.XYQBCenterService;
import cn.quantgroup.cashloanflowboss.utils.JSONTools; import cn.quantgroup.cashloanflowboss.utils.JSONTools;
import cn.quantgroup.user.retbean.XUser; import cn.quantgroup.user.retbean.XUser;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import java.math.BigDecimal; import java.math.BigDecimal;
...@@ -580,19 +577,30 @@ public class OrderServiceImpl implements OrderService{ ...@@ -580,19 +577,30 @@ public class OrderServiceImpl implements OrderService{
* @return * @return
*/ */
@Override @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) { if (loanId == null || loanId < 1) {
ClfOrderMapping orderMapping = clfCenterService.findOrderMappingByChannelOrderNo(channelOrderNumber); ClfOrderMapping orderMapping = clfCenterService.findOrderMappingByChannelOrderNo(channelOrderNumber);
if (orderMapping == null || orderMapping.getLoanId() == null) { if (orderMapping == null || orderMapping.getLoanId() == null) {
log.warn("[findRepaymentPlan] 订单信息不存在或没有loanId");
return null; return null;
} }
loanId = orderMapping.getLoanId(); loanId = orderMapping.getLoanId();
} }
// xyqbCenterService.findRepaymentPlan(loanId); 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; return null;
} }
RepaymentPlansResultModel repaymentPlansVo = serviceResult.getData();
repaymentPlansVo.setLoanId(loanId);
log.info("[findRepaymentPlan] 查询还款计划,返回信息 channelOrderNumber={},loanId={},repaymentPlansVo={}",channelOrderNumber,loanId,repaymentPlansVo);
return repaymentPlansVo;
}
@Override @Override
public void loadSecondAuditJob() { public void loadSecondAuditJob() {
jolyneService.reloadJob("cn.qg.clotho.job.FetchDataLoanJob"); jolyneService.reloadJob("cn.qg.clotho.job.FetchDataLoanJob");
......
package cn.quantgroup.cashloanflowboss.spi.xyqb.client; 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.XyqbCurrentOrderStatusServiceResultModel;
import cn.quantgroup.cashloanflowboss.api.order.model.XyqbHistoryOrderStatusServiceResultModel; import cn.quantgroup.cashloanflowboss.api.order.model.XyqbHistoryOrderStatusServiceResultModel;
import cn.quantgroup.cashloanflowboss.core.base.ServiceResult; import cn.quantgroup.cashloanflowboss.core.base.ServiceResult;
import org.springframework.cloud.netflix.feign.FeignClient; import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.stereotype.Component; 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.PostMapping;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
...@@ -14,7 +16,7 @@ import java.util.Map; ...@@ -14,7 +16,7 @@ import java.util.Map;
* Created by WeiWei on 2019/8/12. * Created by WeiWei on 2019/8/12.
*/ */
@Component @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 { public interface XYQBCenter {
@PostMapping(value = "/ex/paycenter/pay_notify", consumes = "application/x-www-form-urlencoded") @PostMapping(value = "/ex/paycenter/pay_notify", consumes = "application/x-www-form-urlencoded")
...@@ -26,6 +28,9 @@ public interface XYQBCenter { ...@@ -26,6 +28,9 @@ public interface XYQBCenter {
@PostMapping(value = "/ex/ka/order/status/history", consumes = "application/x-www-form-urlencoded") @PostMapping(value = "/ex/ka/order/status/history", consumes = "application/x-www-form-urlencoded")
ServiceResult<XyqbHistoryOrderStatusServiceResultModel> getXyqbOrderHistoryStatus(@RequestParam Map paramMap); 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 @Component
class Fallback implements XYQBCenter { class Fallback implements XYQBCenter {
...@@ -44,7 +49,10 @@ public interface XYQBCenter { ...@@ -44,7 +49,10 @@ public interface XYQBCenter {
return null; return null;
} }
@Override
public ServiceResult<RepaymentPlansResultModel> getXyqbRepaymentPlans(Map paramMap) {
return null;
}
} }
} }
package cn.quantgroup.cashloanflowboss.spi.xyqb.service; 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.XyqbCurrentOrderStatusServiceResultModel;
import cn.quantgroup.cashloanflowboss.api.order.model.XyqbHistoryOrderStatusServiceResultModel; import cn.quantgroup.cashloanflowboss.api.order.model.XyqbHistoryOrderStatusServiceResultModel;
import cn.quantgroup.cashloanflowboss.core.base.ServiceResult; import cn.quantgroup.cashloanflowboss.core.base.ServiceResult;
...@@ -50,4 +51,6 @@ public interface XYQBCenterService { ...@@ -50,4 +51,6 @@ public interface XYQBCenterService {
boolean payResultNotify(Long loanId, Boolean expectPayResult); boolean payResultNotify(Long loanId, Boolean expectPayResult);
Tuple<Boolean,String> cleanUserActiveOrder(Long userId); Tuple<Boolean,String> cleanUserActiveOrder(Long userId);
ServiceResult<RepaymentPlansResultModel> findRepaymentPlan(Long loanId);
} }
package cn.quantgroup.cashloanflowboss.spi.xyqb.service; 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.XyqbCurrentOrderStatusServiceResultModel;
import cn.quantgroup.cashloanflowboss.api.order.model.XyqbHistoryOrderStatusServiceResultModel; import cn.quantgroup.cashloanflowboss.api.order.model.XyqbHistoryOrderStatusServiceResultModel;
import cn.quantgroup.cashloanflowboss.core.Application; import cn.quantgroup.cashloanflowboss.core.Application;
...@@ -27,6 +28,8 @@ import java.util.ArrayList; ...@@ -27,6 +28,8 @@ import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.Map; import java.util.Map;
import java.util.Objects; import java.util.Objects;
import java.math.BigDecimal;
import java.util.*;
/** /**
* Created by WeiWei on 2019/8/12. * Created by WeiWei on 2019/8/12.
...@@ -260,4 +263,13 @@ public class XYQBCenterServiceImpl implements XYQBCenterService { ...@@ -260,4 +263,13 @@ public class XYQBCenterServiceImpl implements XYQBCenterService {
boolean result = (Objects.nonNull(resp) && resp.containsKey("code")) ? "0000".equals(resp.get("code")) : false; boolean result = (Objects.nonNull(resp) && resp.containsKey("code")) ? "0000".equals(resp.get("code")) : false;
return new Tuple<>(result,result?"清除用户活跃订单成功":"清除用户活跃订单失败"); 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