Commit 1f29759d authored by suntao's avatar suntao

查询操作日志

parent b0a379ff
package cn.quantgroup.cashloanflowboss.api.optlog.controller;
import cn.quantgroup.cashloanflowboss.api.optlog.entity.OptHistoryLog;
import cn.quantgroup.cashloanflowboss.api.optlog.service.OptHistoryLogService;
import cn.quantgroup.cashloanflowboss.api.order.model.OrderBaseModel;
import cn.quantgroup.cashloanflowboss.core.base.Result;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* function:
* date: 2019/9/4
*
* @author: suntao
*/
@RestController
@RequestMapping("/opt")
public class OperateController {
@Autowired
private OptHistoryLogService optHistoryLogService;
@GetMapping("/history/log/all")
public Result findAllOptHistoryLog(OrderBaseModel orderBaseModel) {
final List<OptHistoryLog> allOptHistoryLog = optHistoryLogService.getAllOptHistoryLog(orderBaseModel);
if (CollectionUtils.isNotEmpty(allOptHistoryLog)) {
return Result.buildSuccess(allOptHistoryLog);
} else {
return Result.buildSuccess("无数据");
}
}
}
package cn.quantgroup.cashloanflowboss.api.optlog.entity;
import lombok.Data;
import javax.persistence.*;
import java.util.Date;
/**
* 操作日志记录
* function:
* date: 2019/8/12
*
* @author: suntao
*/
@Data
@Entity
@Table(name = "opt_history_log")
public class OptHistoryLog {
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "channel_order_number")
private String channelOrderNumber;
@Column(name = "credit_number")
private String creditNumber;
@Column(name = "loan_id")
private Long loanId;
@Column(name = "channel_id")
private Long channelId;
/**
* 操作节点名称
*/
@Column(name = "opt_name")
private String optName;
/**
* 操作节点名称
*/
@Column(name = "opt_user")
private String optUser;
/**
* 操作详细日志
*/
@Column(name = "opt_log_detail")
private String optLogDetail;
/**
* 操作详细日志
*/
@Column(name = "ext_data")
private String extData;
/** 0:失败;1:成功 */
@Column(name = "opt_result")
private Boolean optResult;
@Column(name = "create_time")
private Date createTime;
}
package cn.quantgroup.cashloanflowboss.api.optlog.repository;
import cn.quantgroup.cashloanflowboss.api.optlog.entity.OptHistoryLog;
import cn.quantgroup.cashloanflowboss.api.order.entity.OrderApprove;
import cn.quantgroup.cashloanflowboss.core.persistence.CashLoanFlowBossDataSource;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* function:
* date: 2019/8/12
*
* @author: suntao
*/
@CashLoanFlowBossDataSource
@Repository
public interface OptHistoryLogRepository extends PagingAndSortingRepository<OptHistoryLog, Long>, JpaSpecificationExecutor<OptHistoryLog> {
List<OptHistoryLog> findByChannelOrderNumber(String channelOrderNumber);
List<OptHistoryLog> findByCreditNumber(String creditOrderNumber);
}
package cn.quantgroup.cashloanflowboss.api.optlog.service;
import cn.quantgroup.cashloanflowboss.api.optlog.entity.OptHistoryLog;
import cn.quantgroup.cashloanflowboss.api.optlog.repository.OptHistoryLogRepository;
import cn.quantgroup.cashloanflowboss.api.order.model.OrderBaseModel;
import cn.quantgroup.cashloanflowboss.api.order.util.OrderUtil;
import cn.quantgroup.cashloanflowboss.spi.clf.entity.ApplyRequestHistory;
import cn.quantgroup.cashloanflowboss.spi.clf.entity.ClfOrderMapping;
import cn.quantgroup.cashloanflowboss.spi.clf.service.CLFCenterService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.stereotype.Service;
import javax.persistence.criteria.Predicate;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
/**
* function:
* date: 2019/9/4
*
* @author: suntao
*/
@Service
public class OptHistoryLogService {
@Autowired
private CLFCenterService clfCenterService;
@Autowired
private OptHistoryLogRepository optHistoryLogRepository;
public List<OptHistoryLog> getAllOptHistoryLog(OrderBaseModel orderBaseModel) {
ClfOrderMapping orderMapping = clfCenterService.findOrderMappingByChannelOrderNo(orderBaseModel.getChannelOrderNumber());
if (orderMapping == null) {
return null;
}
// 用户操作日志 进件。。。
List<ApplyRequestHistory> applyRequestHistoryList = clfCenterService.findApplyRequestHistoryBySpecification(orderBaseModel);
// 管理员操作日志 审批。。。
List<OptHistoryLog> optHistoryLogList = getLocalOptHisttoryLog(orderBaseModel);
// 转换
List<OptHistoryLog> userOptHistoryLogList = OrderUtil.convertApplyRequestHistoryList2OptHistoryLogList(applyRequestHistoryList, orderMapping);
userOptHistoryLogList.addAll(optHistoryLogList);
return userOptHistoryLogList;
}
/**
* 只获取操作日志,boss库数据
* @param orderBaseModel
* @return
*/
List<OptHistoryLog> getLocalOptHisttoryLog(OrderBaseModel orderBaseModel) {
List<OptHistoryLog> page = this.optHistoryLogRepository.findAll((root, criteriaQuery, criteriaBuilder) -> {
List<Predicate> predicates = new ArrayList<>();
// 指定渠道号
if (Objects.nonNull(orderBaseModel.getChannelId())) {
predicates.add(criteriaBuilder.equal(root.get("channelId"), orderBaseModel.getChannelId().longValue()));
}
if (StringUtils.isNotEmpty(orderBaseModel.getChannelOrderNumber())) {
predicates.add(criteriaBuilder.equal(root.get("channelOrderNumber"), orderBaseModel.getChannelOrderNumber()));
}
if (StringUtils.isNotEmpty(orderBaseModel.getApplyNo())) {
predicates.add(criteriaBuilder.equal(root.get("applyNo"), orderBaseModel.getApplyNo()));
}
if (orderBaseModel.getLoanId() != null && orderBaseModel.getLoanId() > 0) {
predicates.add(criteriaBuilder.equal(root.get("loanId"), orderBaseModel.getLoanId()));
}
// 设置查询条件
criteriaQuery.where(criteriaBuilder.and(predicates.toArray(new Predicate[predicates.size()])));
// 指定排序
criteriaQuery.orderBy(criteriaBuilder.desc(root.get("id")));
return criteriaQuery.getRestriction();
});
return page;
}
}
package cn.quantgroup.cashloanflowboss.api.order.model;
import lombok.Data;
/**
* function:
* date: 2019/9/4
*
* @author: suntao
*/
@Data
public class OrderBaseModel {
private String channelOrderNumber;
private String applyNo;
private Long loanId;
private Long channelId;
}
package cn.quantgroup.cashloanflowboss.api.order.util; package cn.quantgroup.cashloanflowboss.api.order.util;
import java.util.Date;
import cn.quantgroup.cashloanflowboss.api.optlog.entity.OptHistoryLog;
import cn.quantgroup.cashloanflowboss.api.order.entity.OrderApprove; import cn.quantgroup.cashloanflowboss.api.order.entity.OrderApprove;
import cn.quantgroup.cashloanflowboss.api.order.model.OrderVo; import cn.quantgroup.cashloanflowboss.api.order.model.OrderVo;
import cn.quantgroup.cashloanflowboss.api.order.model.QueryXyqbOrderStatus; import cn.quantgroup.cashloanflowboss.api.order.model.QueryXyqbOrderStatus;
import cn.quantgroup.cashloanflowboss.core.base.Tuple; import cn.quantgroup.cashloanflowboss.core.base.Tuple;
import cn.quantgroup.cashloanflowboss.spi.clf.entity.ApplyRequestHistory;
import cn.quantgroup.cashloanflowboss.spi.clf.entity.ClfOrderMapping;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import java.util.ArrayList; import java.util.ArrayList;
...@@ -135,4 +139,24 @@ public class OrderUtil { ...@@ -135,4 +139,24 @@ public class OrderUtil {
tuple.setValue(buttonList); tuple.setValue(buttonList);
return tuple; return tuple;
} }
public static List<OptHistoryLog> convertApplyRequestHistoryList2OptHistoryLogList(List<ApplyRequestHistory> applyRequestHistoryList, ClfOrderMapping orderMapping) {
List<OptHistoryLog> optHistoryLogs = new ArrayList<>();
for (ApplyRequestHistory applyRequestHistory : applyRequestHistoryList) {
OptHistoryLog optHistoryLog = new OptHistoryLog();
optHistoryLog.setId(0L);
optHistoryLog.setChannelOrderNumber(applyRequestHistory.getChannelOrderNo());
optHistoryLog.setCreditNumber(orderMapping.getApplyNo());
optHistoryLog.setLoanId(orderMapping.getLoanId());
optHistoryLog.setChannelId(applyRequestHistory.getChannelId());
optHistoryLog.setOptName(applyRequestHistory.getApplyType().getDesc());
optHistoryLog.setOptUser("用户发起:".concat(applyRequestHistory.getUserName()));
optHistoryLog.setOptLogDetail(applyRequestHistory.getDescriptionDetail());
optHistoryLog.setExtData(applyRequestHistory.getExtData());
optHistoryLog.setOptResult(applyRequestHistory.getIsSuccess());
optHistoryLog.setCreateTime(applyRequestHistory.getCreatedAt());
optHistoryLogs.add(optHistoryLog);
}
return optHistoryLogs;
}
} }
package cn.quantgroup.cashloanflowboss.spi.clf.entity;
import cn.quantgroup.cashloanflowboss.spi.clf.model.ApplyRequestApplyTypeEnum;
import lombok.Data;
import lombok.Getter;
import javax.persistence.*;
import java.sql.Timestamp;
/**
* Created with suntao on 2018/5/24
*/
@Data
@Entity
@Table(name = "apply_request_history", catalog = "cash_loan_flow")
public class ApplyRequestHistory {
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "request_id")
private String requestId;
@Column(name = "phone_no")
private String phoneNo;
@Column(name = "user_id")
private Long userId;
@Column(name = "user_name")
private String userName;
@Column(name = "uuid")
private String uuid;
@Column(name = "id_no")
private String idNo;
@Column(name = "channel_id")
private Long channelId;
@Column(name = "product_id")
private String productId;
@Column(name = "is_success")
private Boolean isSuccess;
@Column(name = "description_value")
private String descriptionValue;
@Column(name = "description_detail")
private String descriptionDetail;
@Column(name = "id_type")
private int idType = 0;
@Column(name = "apply_type")
private ApplyRequestApplyTypeEnum applyType;
@Column(name = "request_type")
private int requestType;
@Column(name = "md5")
private String md5;
@Column(name = "channel_order_no")
private String channelOrderNo;
@Column(name = "order_mapping_id")
private Long orderMappingId;
@Column(name = "ext_data")
private String extData;
@Column(name = "created_at")
private Timestamp createdAt = new Timestamp(System.currentTimeMillis());
public enum ApplyRequestTypeEnum {
IN,
FAIL,
SUCC
}
@Getter
public enum DescriptionValueEnum {
phone_idNo_mismatching("0002"),// 手机号 对应身份证与库存不匹配
credit_30_day_refuse("1003"),// 30/35天内被拒绝过
has_credit_apply("0004"),//, msg:"已有授信订单"
crediting("0006"),//, msg:"授信处理中"
approving("0007"),//, msg:"系统审核中"
account_exsit("0008");//, msg:"已有额度"
private String value;
private DescriptionValueEnum(String value) {
this.value = value;
}
}
}
package cn.quantgroup.cashloanflowboss.spi.clf.model;
/**
* function:
* date: 2019/9/4
*
* @author: suntao
*/
public enum ApplyRequestApplyTypeEnum {
APPLY_PRETRIAL("预审"),
APPLY("进件"),
ADD_INFO("补充信息"),
BIND_CARD("绑卡"),
WITHDRAW("绑卡提现");
private ApplyRequestApplyTypeEnum(String desc) {
this.desc = desc;
}
private String desc;
public String getDesc() {
return this.desc;
}
public ApplyRequestApplyTypeEnum getByOrdinal(int ordinal) {
return ApplyRequestApplyTypeEnum.values()[ordinal];
}
}
package cn.quantgroup.cashloanflowboss.spi.clf.repository;
import cn.quantgroup.cashloanflowboss.core.persistence.CashLoanFlowDataSource;
import cn.quantgroup.cashloanflowboss.spi.clf.entity.ApplyRequestHistory;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.stereotype.Repository;
@CashLoanFlowDataSource
@Repository
public interface ApplyRequestHistoryRepository extends PagingAndSortingRepository<ApplyRequestHistory, Long>, JpaSpecificationExecutor<ApplyRequestHistory> {
}
\ No newline at end of file
package cn.quantgroup.cashloanflowboss.spi.clf.service; package cn.quantgroup.cashloanflowboss.spi.clf.service;
import cn.quantgroup.cashloanflowboss.api.order.model.OrderBaseModel;
import cn.quantgroup.cashloanflowboss.spi.clf.entity.ApplyRequestHistory;
import cn.quantgroup.cashloanflowboss.spi.clf.entity.CallbackFailRecord; import cn.quantgroup.cashloanflowboss.spi.clf.entity.CallbackFailRecord;
import cn.quantgroup.cashloanflowboss.spi.clf.entity.CallbackRecord; 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.repository.ApplyRequestHistoryRepository;
import cn.quantgroup.cashloanflowboss.spi.clf.repository.CallbackFailRecordRepository; import cn.quantgroup.cashloanflowboss.spi.clf.repository.CallbackFailRecordRepository;
import cn.quantgroup.cashloanflowboss.spi.clf.repository.CallbackRecordRepository; import cn.quantgroup.cashloanflowboss.spi.clf.repository.CallbackRecordRepository;
import cn.quantgroup.cashloanflowboss.spi.clf.repository.ClfOrderMappingRepository; import cn.quantgroup.cashloanflowboss.spi.clf.repository.ClfOrderMappingRepository;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.persistence.criteria.Predicate;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Objects;
/** /**
* function: * function:
...@@ -27,7 +34,8 @@ public class CLFCenterService { ...@@ -27,7 +34,8 @@ public class CLFCenterService {
private CallbackRecordRepository callbackRecordRepository; private CallbackRecordRepository callbackRecordRepository;
@Autowired @Autowired
private ClfOrderMappingRepository orderMappingRepository; private ClfOrderMappingRepository orderMappingRepository;
@Autowired
private ApplyRequestHistoryRepository applyRequestHistoryRepository;
public List<CallbackFailRecord> findCallbackFailRecordByApplyNo(String applyNo) { public List<CallbackFailRecord> findCallbackFailRecordByApplyNo(String applyNo) {
return callbackFailRecordRepository.findByApplyNo(applyNo); return callbackFailRecordRepository.findByApplyNo(applyNo);
...@@ -40,4 +48,26 @@ public class CLFCenterService { ...@@ -40,4 +48,26 @@ public class CLFCenterService {
public ClfOrderMapping findOrderMappingByChannelOrderNo(String channelOrderNumber) { public ClfOrderMapping findOrderMappingByChannelOrderNo(String channelOrderNumber) {
return orderMappingRepository.findByChannelOrderNoLastOne(channelOrderNumber); return orderMappingRepository.findByChannelOrderNoLastOne(channelOrderNumber);
} }
public List<ApplyRequestHistory> findApplyRequestHistoryBySpecification(OrderBaseModel orderBaseModel) {
List<ApplyRequestHistory> all = applyRequestHistoryRepository.findAll(((root, criteriaQuery, criteriaBuilder) -> {
List<Predicate> predicates = new ArrayList<>();
// 指定渠道号
if (Objects.nonNull(orderBaseModel.getChannelId())) {
predicates.add(criteriaBuilder.equal(root.get("channelId"), orderBaseModel.getChannelId().longValue()));
}
if (StringUtils.isNotEmpty(orderBaseModel.getChannelOrderNumber())) {
predicates.add(criteriaBuilder.equal(root.get("channelOrderNo"), orderBaseModel.getChannelOrderNumber()));
}
// 设置查询条件
criteriaQuery.where(criteriaBuilder.and(predicates.toArray(new Predicate[predicates.size()])));
// 指定排序
criteriaQuery.orderBy(criteriaBuilder.desc(root.get("id")));
return criteriaQuery.getRestriction();
}));
return all;
}
} }
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