Commit ac46dd56 authored by suntao's avatar suntao

订单推送记录查询

parent 8a042a84
...@@ -2,7 +2,6 @@ package cn.quantgroup.cashloanflowboss.api.order.controller; ...@@ -2,7 +2,6 @@ package cn.quantgroup.cashloanflowboss.api.order.controller;
import cn.quantgroup.cashloanflowboss.api.order.model.ApproveVo; import cn.quantgroup.cashloanflowboss.api.order.model.ApproveVo;
import cn.quantgroup.cashloanflowboss.api.order.model.LendingFormModel; import cn.quantgroup.cashloanflowboss.api.order.model.LendingFormModel;
import cn.quantgroup.cashloanflowboss.api.order.model.OrderVo;
import cn.quantgroup.cashloanflowboss.api.order.service.OrderService; import cn.quantgroup.cashloanflowboss.api.order.service.OrderService;
import cn.quantgroup.cashloanflowboss.component.security.annotiation.Security; import cn.quantgroup.cashloanflowboss.component.security.annotiation.Security;
import cn.quantgroup.cashloanflowboss.core.annotation.ChannelIdInit; import cn.quantgroup.cashloanflowboss.core.annotation.ChannelIdInit;
...@@ -10,7 +9,6 @@ import cn.quantgroup.cashloanflowboss.core.annotation.CheckChannelRole; ...@@ -10,7 +9,6 @@ import cn.quantgroup.cashloanflowboss.core.annotation.CheckChannelRole;
import cn.quantgroup.cashloanflowboss.core.annotation.CheckChannelRoleByChannelOrderNumber; import cn.quantgroup.cashloanflowboss.core.annotation.CheckChannelRoleByChannelOrderNumber;
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 cn.quantgroup.cashloanflowboss.spi.xyqb.service.XYQBCenterService;
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.*;
...@@ -45,11 +43,11 @@ public class OrderController { ...@@ -45,11 +43,11 @@ public class OrderController {
@ChannelIdInit @ChannelIdInit
@CheckChannelRole @CheckChannelRole
@GetMapping("/list") @GetMapping("/list")
public Result getOrders(Long channelId, String channelOrderNumber, Integer pageNumber, Integer pageSize) { public Result orderList(Long channelId, String channelOrderNumber, Integer pageNumber, Integer pageSize) {
if (pageNumber == null || pageSize == null) { if (pageNumber == null || pageSize == null) {
return Result.buildFial("page信息不对"); return Result.buildFial("page信息不对");
} }
return Result.buildSuccess(orderService.getOrders(channelId, channelOrderNumber, pageNumber, pageSize)); return Result.buildSuccess(orderService.orderList(channelId, channelOrderNumber, pageNumber, pageSize));
} }
...@@ -66,7 +64,7 @@ public class OrderController { ...@@ -66,7 +64,7 @@ public class OrderController {
Tuple<Boolean, Boolean> booleanBooleanTuple = orderService.approveOpt(approveVo); Tuple<Boolean, Boolean> booleanBooleanTuple = orderService.approveOpt(approveVo);
Boolean approveResult = booleanBooleanTuple.getKey(); Boolean approveResult = booleanBooleanTuple.getKey();
if (approveResult) { if (approveResult) {
return Result.buildSuccess(approveResult, booleanBooleanTuple.getValue() ? "审批成功" : "请检查资产计划配置,审批成功"); return Result.buildSuccess(approveResult, booleanBooleanTuple.getValue() ? "审批操作成功" : "请检查资产计划配置,审批操作成功");
} else { } else {
return Result.buildSuccess(false,"审批操作失败"); return Result.buildSuccess(false,"审批操作失败");
} }
...@@ -119,5 +117,17 @@ public class OrderController { ...@@ -119,5 +117,17 @@ public class OrderController {
return Result.buildSuccess(orderService.getOrderHistoryStatus(channelOrderNumber)); return Result.buildSuccess(orderService.getOrderHistoryStatus(channelOrderNumber));
} }
/**
* 订单状态推送历史记录
*
* @param channelOrderNumber
* @return
*/
@Security(authorityId = "Order.orderCallbackRecordList")
@ChannelIdInit
@CheckChannelRoleByChannelOrderNumber
public Result orderCallbackRecordList(String channelOrderNumber) {
return Result.buildSuccess(orderService.getOrderCallbackRecordList(channelOrderNumber));
}
} }
...@@ -17,6 +17,8 @@ public class OrderVo { ...@@ -17,6 +17,8 @@ public class OrderVo {
private Long id; private Long id;
private Long channelId; private Long channelId;
private String channelOrderNumber; private String channelOrderNumber;
private Long loanId;
private String applyNo;
private Date createdAt; private Date createdAt;
private String status; private String status;
/** /**
......
package cn.quantgroup.cashloanflowboss.api.order.service; package cn.quantgroup.cashloanflowboss.api.order.service;
import cn.quantgroup.cashloanflowboss.spi.clf.entity.CallbackFailRecord;
import cn.quantgroup.cashloanflowboss.spi.clf.model.LoanProgress;
import cn.quantgroup.cashloanflowboss.spi.clf.model.CallbackRouter;
import cn.quantgroup.cashloanflowboss.spi.clf.model.KANoticeType;
import cn.quantgroup.cashloanflowboss.api.channel.entity.ChannelConf; import cn.quantgroup.cashloanflowboss.api.channel.entity.ChannelConf;
import cn.quantgroup.cashloanflowboss.api.channel.repository.ChannelConfRepository; import cn.quantgroup.cashloanflowboss.api.channel.repository.ChannelConfRepository;
...@@ -10,8 +14,11 @@ import cn.quantgroup.cashloanflowboss.api.order.util.OrderUtil; ...@@ -10,8 +14,11 @@ import cn.quantgroup.cashloanflowboss.api.order.util.OrderUtil;
import cn.quantgroup.cashloanflowboss.core.Application; import cn.quantgroup.cashloanflowboss.core.Application;
import cn.quantgroup.cashloanflowboss.core.base.ServiceResult; import cn.quantgroup.cashloanflowboss.core.base.ServiceResult;
import cn.quantgroup.cashloanflowboss.core.base.Tuple; import cn.quantgroup.cashloanflowboss.core.base.Tuple;
import cn.quantgroup.cashloanflowboss.spi.clf.entity.CallbackRecord;
import cn.quantgroup.cashloanflowboss.spi.clf.entity.ClfOrderMapping; import cn.quantgroup.cashloanflowboss.spi.clf.entity.ClfOrderMapping;
import cn.quantgroup.cashloanflowboss.spi.clf.model.CallbackRecordVoModel;
import cn.quantgroup.cashloanflowboss.spi.clf.repository.ClfOrderMappingRepository; import cn.quantgroup.cashloanflowboss.spi.clf.repository.ClfOrderMappingRepository;
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.JolyneCenter; import cn.quantgroup.cashloanflowboss.spi.jolyne.JolyneCenter;
import cn.quantgroup.cashloanflowboss.spi.user.service.XyqbUserService; import cn.quantgroup.cashloanflowboss.spi.user.service.XyqbUserService;
...@@ -38,6 +45,7 @@ import java.util.concurrent.ConcurrentMap; ...@@ -38,6 +45,7 @@ import java.util.concurrent.ConcurrentMap;
import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Predicate;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.exception.ExceptionUtils; import org.apache.commons.lang3.exception.ExceptionUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -70,6 +78,8 @@ public class OrderService { ...@@ -70,6 +78,8 @@ public class OrderService {
@Autowired @Autowired
private ClothoCenterService clothoCenterService; private ClothoCenterService clothoCenterService;
@Autowired @Autowired
private CLFCenterService clfCenterService;
@Autowired
private JolyneCenter jolyneCenter; private JolyneCenter jolyneCenter;
...@@ -82,7 +92,7 @@ public class OrderService { ...@@ -82,7 +92,7 @@ public class OrderService {
public Page<OrderVo> getOrders(Long channelId, String channelOrderNo, Integer pageNumber, Integer pageSize) { public Page<OrderVo> orderList(Long channelId, String channelOrderNo, Integer pageNumber, Integer pageSize) {
Page<ClfOrderMapping> page = this.clfOrderMappingRepository.findAll((root, criteriaQuery, criteriaBuilder) -> { Page<ClfOrderMapping> page = this.clfOrderMappingRepository.findAll((root, criteriaQuery, criteriaBuilder) -> {
List<Predicate> predicates = new ArrayList<>(); List<Predicate> predicates = new ArrayList<>();
...@@ -110,6 +120,11 @@ public class OrderService { ...@@ -110,6 +120,11 @@ public class OrderService {
orderVo.setId(it.getId()); orderVo.setId(it.getId());
orderVo.setChannelId(it.getRegisteredFrom()); orderVo.setChannelId(it.getRegisteredFrom());
orderVo.setChannelOrderNumber(it.getChannelOrderNo()); orderVo.setChannelOrderNumber(it.getChannelOrderNo());
if (!Application.getPrincipal().isChannel()) {
orderVo.setLoanId(it.getLoanId());
// 授信申请号,非渠道权限登陆显示admin及以上权限用户
orderVo.setApplyNo(it.getApplyNo());
}
orderVo.setCreatedAt(it.getCreatedAt()); orderVo.setCreatedAt(it.getCreatedAt());
if (StringUtils.isNotEmpty(it.getApplyNo())) { if (StringUtils.isNotEmpty(it.getApplyNo())) {
...@@ -389,4 +404,61 @@ public class OrderService { ...@@ -389,4 +404,61 @@ public class OrderService {
return true; return true;
} }
/**
* 查询订单历史推送记录
* @param channelOrderNumber
* @return
*/
public List<CallbackRecordVoModel> getOrderCallbackRecordList(String channelOrderNumber) {
List<CallbackRecordVoModel> callbackRecordVoModelList = new ArrayList<>();
ClfOrderMapping orderMapping = clfOrderMappingRepository.findByChannelOrderNoLastOne(channelOrderNumber);
if (orderMapping == null) {
return null;
}
List<CallbackRecord> callbackRecordList = clfCenterService.findCallbackRecordByApplyNo(orderMapping.getApplyNo());
if (CollectionUtils.isNotEmpty(callbackRecordList)) {
for (CallbackRecord callbackRecord : callbackRecordList) {
CallbackRecordVoModel callbackRecordVoModel = new CallbackRecordVoModel();
callbackRecordVoModel.setChannelOrderNo(orderMapping.getChannelOrderNo());
callbackRecordVoModel.setApplyNo(orderMapping.getApplyNo());
callbackRecordVoModel.setLoanId(orderMapping.getLoanId());
callbackRecordVoModel.setTermNo(callbackRecord.getTermNo());
callbackRecordVoModel.setNoticeType(callbackRecord.getNoticeType());
callbackRecordVoModel.setCallbackStatus(callbackRecord.getCallbackStatus());
callbackRecordVoModel.setChannelId(callbackRecord.getChannelId());
callbackRecordVoModel.setCreatedAt(callbackRecord.getCreatedAt());
callbackRecordVoModel.setUpdatedAt(callbackRecord.getUpdatedAt());
callbackRecordVoModel.setTableName("Success");
callbackRecordVoModelList.add(callbackRecordVoModel);
}
}
List<CallbackFailRecord> callbackFailRecordList = clfCenterService.findCallbackFailRecordByApplyNo(orderMapping.getApplyNo());
if (CollectionUtils.isNotEmpty(callbackFailRecordList)) {
for (CallbackFailRecord callbackFailRecord : callbackFailRecordList) {
CallbackRecordVoModel callbackFailRecordVoModel = new CallbackRecordVoModel();
callbackFailRecordVoModel.setChannelOrderNo(orderMapping.getChannelOrderNo());
callbackFailRecordVoModel.setApplyNo(orderMapping.getApplyNo());
callbackFailRecordVoModel.setLoanId(orderMapping.getLoanId());
callbackFailRecordVoModel.setTermNo(callbackFailRecord.getTermNo());
callbackFailRecordVoModel.setNoticeType(callbackFailRecord.getNoticeType());
callbackFailRecordVoModel.setCallbackStatus(callbackFailRecord.getCallbackStatus());
callbackFailRecordVoModel.setChannelId(callbackFailRecord.getChannelId());
callbackFailRecordVoModel.setRetryTimes(callbackFailRecord.getRetryTimes());
callbackFailRecordVoModel.setFailCode(callbackFailRecord.getFailCode());
callbackFailRecordVoModel.setCallbackRouter(callbackFailRecord.getCallbackRouter());
callbackFailRecordVoModel.setIsActive(callbackFailRecord.getIsActive());
callbackFailRecordVoModel.setExdata(callbackFailRecord.getExdata());
callbackFailRecordVoModel.setCreatedAt(callbackFailRecord.getCreatedAt());
callbackFailRecordVoModel.setUpdatedAt(callbackFailRecord.getUpdatedAt());
callbackFailRecordVoModel.setTableName("Fail");
callbackRecordVoModelList.add(callbackFailRecordVoModel);
}
}
return callbackRecordVoModelList;
}
} }
package cn.quantgroup.cashloanflowboss.spi.clf.entity;
import cn.quantgroup.cashloanflowboss.spi.clf.model.CallbackRouter;
import cn.quantgroup.cashloanflowboss.spi.clf.model.KANoticeType;
import cn.quantgroup.cashloanflowboss.spi.clf.model.LoanProgress;
import lombok.Data;
import javax.persistence.*;
import java.sql.Timestamp;
/**
* @author zhangbin
* @date 2018/4/10.
*/
@Data
@Entity
@Table(name = "callback_fail_record",catalog = "cash_loan_flow")
public class CallbackFailRecord {
private static final long serialVersionUID = -1L;
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "apply_no")
private String applyNo;
@Column(name = "loan_id")
private Long loanId;
@Column(name = "progress")
private LoanProgress progress;
@Column(name = "term_no")
private Long termNo;
@Column(name = "notice_type")
private KANoticeType noticeType;
@Column(name = "callback_status")
private Integer callbackStatus;
@Column(name = "channel_id")
private Long channelId;
@Column(name = "retry_times")
private Integer retryTimes;
@Column(name = "fail_code")
private Integer failCode;
@Column(name = "loan_type")
private CallbackRouter callbackRouter;
/**
* 默认有效
*/
@Column(name = "is_active")
private Boolean isActive = Boolean.TRUE;
/**
* mq 数据不能保存在fail 表字段中的数据,每个渠道结构不一样,每种mq-notifyType 不一样
*/
@Column(name = "exdata")
private String exdata;
@Column(name = "created_at")
private Timestamp createdAt = new Timestamp(System.currentTimeMillis());
@Column(name = "updated_at")
private Timestamp updatedAt = new Timestamp(System.currentTimeMillis());
}
package cn.quantgroup.cashloanflowboss.spi.clf.entity;
import cn.quantgroup.cashloanflowboss.spi.clf.model.KANoticeType;
import lombok.Data;
import javax.persistence.*;
import java.sql.Timestamp;
import java.time.Instant;
/**
* @author zhangbin
* @date 2018/4/10.
*/
@Data
@Entity
@Table(name = "callback_record", catalog = "cash_loan_flow")
public class CallbackRecord {
private static final long serialVersionUID = -1L;
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
/**
* 量化派授信订单号,申请订单号
*/
@Column(name = "apply_no")
private String applyNo;
/**
* xyqb.loan_application_history.id
*/
@Column(name = "loan_id")
private Long loanId;
/**
* 还款计划期数
*/
@Column(name = "term_no")
private Long termNo;
/**
* 渠道订单标识
*/
@Column(name = "channel_id")
private Long channelId;
/**
* 映射成渠道推送状态
*/
@Column(name = "callback_status")
private Integer callbackStatus;
/**
* 事件
*/
@Column(name = "notice_type")
private KANoticeType noticeType;
/**
* 成功次数
*/
@Column(name = "success_times")
private Long successTimes;
@Column(name = "is_active")
private Boolean isActive;
@Column(name = "created_at")
private Timestamp createdAt = Timestamp.from(Instant.now());
@Column(name = "updated_at")
private Timestamp updatedAt = Timestamp.from(Instant.now());
}
package cn.quantgroup.cashloanflowboss.spi.clf.model;
import lombok.Data;
import java.util.Date;
/**
* @author zhangbin
* @date 2018/4/10.
*/
@Data
public class CallbackRecordVoModel {
private static final long serialVersionUID = -1L;
private Long id;
private String channelOrderNo;
private String applyNo;
private Long loanId;
private LoanProgress progress;
private Long termNo;
private KANoticeType noticeType;
private Integer callbackStatus;
private Long channelId;
private Integer retryTimes;
private Integer failCode;
private CallbackRouter callbackRouter;
/**
* 默认有效
*/
private Boolean isActive = Boolean.TRUE;
/**
* mq 数据不能保存在fail 表字段中的数据,每个渠道结构不一样,每种mq-notifyType 不一样
*/
private String exdata;
private Date createdAt;
private Date updatedAt;
private String tableName;
}
package cn.quantgroup.cashloanflowboss.spi.clf.repository;
import cn.quantgroup.cashloanflowboss.spi.clf.entity.CallbackFailRecord;
import cn.quantgroup.cashloanflowboss.spi.clf.entity.CallbackRecord;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
/**
* function:
* date: 2019/9/3
*
* @author: suntao
*/
public interface CallbackFailRecordRepository extends JpaRepository<CallbackFailRecord, Long> {
List<CallbackFailRecord> findByApplyNo(String applyNo);
}
package cn.quantgroup.cashloanflowboss.spi.clf.repository;
import cn.quantgroup.cashloanflowboss.spi.clf.entity.CallbackRecord;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
/**
* function:
* date: 2019/9/3
*
* @author: suntao
*/
public interface CallbackRecordRepository extends JpaRepository<CallbackRecord, Long> {
List<CallbackRecord> findByApplyNo(String applyNo);
}
...@@ -20,4 +20,6 @@ public interface CLFCenter { ...@@ -20,4 +20,6 @@ public interface CLFCenter {
return ; return ;
} }
} }
} }
package cn.quantgroup.cashloanflowboss.spi.clf.service;
import cn.quantgroup.cashloanflowboss.spi.clf.entity.CallbackFailRecord;
import cn.quantgroup.cashloanflowboss.spi.clf.entity.CallbackRecord;
import cn.quantgroup.cashloanflowboss.spi.clf.repository.CallbackFailRecordRepository;
import cn.quantgroup.cashloanflowboss.spi.clf.repository.CallbackRecordRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* function:
* date: 2019/9/3
*
* @author: suntao
*/
@Service
public class CLFCenterService {
@Autowired
private CallbackFailRecordRepository callbackFailRecordRepository;
@Autowired
private CallbackRecordRepository callbackRecordRepository;
public List<CallbackFailRecord> findCallbackFailRecordByApplyNo(String applyNo) {
return callbackFailRecordRepository.findByApplyNo(applyNo);
}
public List<CallbackRecord> findCallbackRecordByApplyNo(String applyNo) {
return callbackRecordRepository.findByApplyNo(applyNo);
}
}
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