Commit 5f90a8d1 authored by suntao's avatar suntao

订单状态历史记录查询

parent a2ece44b
......@@ -6,6 +6,7 @@ import cn.quantgroup.cashloanflowboss.api.order.model.OrderVo;
import cn.quantgroup.cashloanflowboss.api.order.service.OrderService;
import cn.quantgroup.cashloanflowboss.core.annotation.ChannelIdInit;
import cn.quantgroup.cashloanflowboss.core.annotation.CheckChannelRole;
import cn.quantgroup.cashloanflowboss.core.annotation.CheckChannelRoleByChannelOrderNumber;
import cn.quantgroup.cashloanflowboss.core.base.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
......@@ -34,7 +35,7 @@ public class OrderController {
* @param channelOrderNumber
* @param pageNumber
* @param pageSize
* @return
* @return 返回中包含当前订单可操作的 button
*/
@ChannelIdInit
@CheckChannelRole
......@@ -70,4 +71,19 @@ public class OrderController {
public Result cancel(@RequestBody @Valid OrderVo orderVo) {
return Result.buildSuccess(orderService.cancel(orderVo));
}
/**
* 订单历史状态查询接口
*
* @param channelOrderNumber
* @return
*/
@ChannelIdInit
@CheckChannelRoleByChannelOrderNumber
@GetMapping("/history/status")
public Result getOrderHistoryStatus(String channelOrderNumber) {
return Result.buildSuccess(orderService.getOrderHistoryStatus(channelOrderNumber));
}
}
......@@ -9,6 +9,7 @@ import cn.quantgroup.cashloanflowboss.api.order.repository.OrderApproveRepositor
import cn.quantgroup.cashloanflowboss.api.order.util.OrderUtil;
import cn.quantgroup.cashloanflowboss.core.Application;
import cn.quantgroup.cashloanflowboss.core.base.Result;
import cn.quantgroup.cashloanflowboss.core.base.ServiceResult;
import cn.quantgroup.cashloanflowboss.core.base.Tuple;
import cn.quantgroup.cashloanflowboss.spi.clf.entity.ClfOrderMapping;
import cn.quantgroup.cashloanflowboss.spi.clf.repository.ClfOrderMappingRepository;
......@@ -100,7 +101,7 @@ public class OrderService {
OrderApprove orderApprove = orderApproveRepository.findByCreditNumber(it.getApplyNo());
Result<XyqbCurrentOrderStatusServiceResultModel> xyqbCenterServiceXyqbOrderStatus = xyqbCenterService.getXyqbOrderStatus(it.getApplyNo(), it.getLoanId());
ServiceResult<XyqbCurrentOrderStatusServiceResultModel> xyqbCenterServiceXyqbOrderStatus = xyqbCenterService.getXyqbOrderStatus(it.getApplyNo(), it.getLoanId());
log.info("[xyqbCenterService.getXyqbOrderStatus]xyqbOrderStatus={}", JSONTools.serialize(xyqbCenterServiceXyqbOrderStatus));
if (xyqbCenterServiceXyqbOrderStatus.isSuccess()) {
QueryXyqbOrderStatus currentStatus = xyqbCenterServiceXyqbOrderStatus.getData().getCurrentStatus();
......@@ -246,4 +247,19 @@ public class OrderService {
String cancel_result = jolyneCenter.cancel(JSONTools.serialize(data));
return "success".equals(cancel_result);
}
public XyqbHistoryOrderStatusServiceResultModel getOrderHistoryStatus(String channelOrderNumber) {
ClfOrderMapping orderMapping = clfOrderMappingRepository.findByChannelOrderNoLastOne(channelOrderNumber);
if (orderMapping == null) {
return new XyqbHistoryOrderStatusServiceResultModel();
}
ServiceResult<XyqbHistoryOrderStatusServiceResultModel> xyqbOrderHistoryStatusResult = xyqbCenterService.getXyqbOrderHistoryStatus(orderMapping.getApplyNo(), orderMapping.getLoanId());
if (xyqbOrderHistoryStatusResult.isSuccess()) {
log.info("[getOrderHistoryStatus]查询成功channelOrderNumber={}, xyqbOrderHistoryStatusResult={}", channelOrderNumber, JSONTools.serialize(xyqbOrderHistoryStatusResult));
return xyqbOrderHistoryStatusResult.getData();
} else {
log.info("[getOrderHistoryStatus]查询失败channelOrderNumber={}, xyqbOrderHistoryStatusResult={}", channelOrderNumber, JSONTools.serialize(xyqbOrderHistoryStatusResult));
return new XyqbHistoryOrderStatusServiceResultModel();
}
}
}
package cn.quantgroup.cashloanflowboss.core.annotation;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import static java.lang.annotation.ElementType.METHOD;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
/**
* function:
* date: 2019/8/6
*
* @author: suntao
*/
@Target({METHOD})
@Retention(RUNTIME)
public @interface CheckChannelRoleByChannelOrderNumber {
}
......@@ -5,9 +5,13 @@ import cn.quantgroup.cashloanflowboss.api.channel.util.ChannelConfUtil;
import cn.quantgroup.cashloanflowboss.core.Application;
import cn.quantgroup.cashloanflowboss.core.annotation.ChannelIdInit;
import cn.quantgroup.cashloanflowboss.core.annotation.CheckChannelRole;
import cn.quantgroup.cashloanflowboss.core.annotation.CheckChannelRoleByChannelOrderNumber;
import cn.quantgroup.cashloanflowboss.core.base.Result;
import cn.quantgroup.cashloanflowboss.core.dictionary.ApplicationStatus;
import cn.quantgroup.cashloanflowboss.spi.clf.entity.ClfOrderMapping;
import cn.quantgroup.cashloanflowboss.spi.clf.repository.ClfOrderMappingRepository;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.exception.ExceptionUtils;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
......@@ -15,6 +19,7 @@ import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.aspectj.lang.reflect.CodeSignature;
import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
......@@ -42,6 +47,9 @@ public class RoleLoadAspect {
@Pointcut("channelController() || orderController() ")
private void doSomeRole() {}
@Autowired
private ClfOrderMappingRepository clfOrderMappingRepository;
@Around(value = "doSomeRole()")
public Object around(ProceedingJoinPoint pjp) {
......@@ -101,6 +109,32 @@ public class RoleLoadAspect {
}
// ======================================== CheckChannelRole end ==========================================
// 如果是渠道用户登陆,参数中channelOrderNumber 不是登陆用户channelOrderNumber,返回 拒绝请求
CheckChannelRoleByChannelOrderNumber checkChannelRoleByChannelOrderNumber = method.getAnnotation(CheckChannelRoleByChannelOrderNumber.class);
if (checkChannelRoleByChannelOrderNumber != null && Application.getPrincipal().isChannel()) {
String[] paramNames = ((CodeSignature) pjp.getSignature()).getParameterNames();
String channelOrderNumber = "";
for (int i = 0; i < paramNames.length; i++) {
if ("channelOrderNumber".equals(paramNames[i])) {
channelOrderNumber = String.valueOf(args[i]);
}
}
if (StringUtils.isEmpty(channelOrderNumber)) {
log.info("[CheckChannelRoleByChannelOrderNumber]参数channelOrderNumber不能为空");
return Result.buildFial(ApplicationStatus.ARGUMENT_VALID_EXCEPTION);
}
ClfOrderMapping clfOrderMapping = clfOrderMappingRepository.findByChannelOrderNoLastOne(channelOrderNumber);
if (clfOrderMapping == null) {
log.info("[CheckChannelRoleByChannelOrderNumber]无channelOrderNumber数据,channelOrderNumber={}",channelOrderNumber);
return Result.buildFial(ApplicationStatus.ARGUMENT_VALID_EXCEPTION, "未找到该订单");
}
if (!clfOrderMapping.getRegisteredFrom().equals(Application.getPrincipal().getChannelId())) {
log.info("[CheckChannelRoleByChannelOrderNumber]不是该渠道的订单,channelOrderNumber={}",channelOrderNumber);
return Result.buildFial(ApplicationStatus.INVALID_AUTHORITY);
}
}
// ======================================== CheckChannelRoleByChannelOrderNumber end ==========================================
try {
return pjp.proceed(args);
} catch (Throwable throwable) {
......
......@@ -86,9 +86,4 @@ public class Result<T> {
return new Result(ApplicationStatus.FAILURE, data, message);
}
public Boolean isSuccess(){
return Objects.nonNull(this.code) && this.code == 0;
}
}
package cn.quantgroup.cashloanflowboss.core.base;
import cn.quantgroup.cashloanflowboss.core.dictionary.ApplicationStatus;
import cn.quantgroup.cashloanflowboss.core.dictionary.Status;
import lombok.Data;
import java.util.Objects;
/**
* 请求返回数据结构实体类
* <p>
* Created by WeiWei on 2017/5/2.
*/
@Data
public class ServiceResult<T> {
/**
* 状态码
*/
private Integer code;
/**
* 描述信息
*/
private String message;
/**
* 返回结果
*/
private T data;
public ServiceResult() {}
public ServiceResult(Status status) {
this(status, null);
}
public ServiceResult(Status status, T data) {
this(status, data, null);
}
public ServiceResult(Status status, T data, String message) {
if (Objects.nonNull(status)) {
this.code = status.getCode();
this.message = Objects.isNull(message) ? status.getMessage() : message;
this.data = data;
}
}
@SuppressWarnings("unchecked")
public static <T> ServiceResult<T> buildSuccess(T data) {
return new ServiceResult(ApplicationStatus.SUCCESS, data);
}
@SuppressWarnings("unchecked")
public static <T> ServiceResult<T> buildSuccess(T data, String message) {
return new ServiceResult(ApplicationStatus.SUCCESS, data, message);
}
@SuppressWarnings("unchecked")
public static <T> ServiceResult<T> buildFial(T data) {
return new ServiceResult(ApplicationStatus.FAILURE, data);
}
@SuppressWarnings("unchecked")
public static <T> ServiceResult<T> buildFial(String message) {
return new ServiceResult(ApplicationStatus.FAILURE, null, message);
}
@SuppressWarnings("unchecked")
public static <T> ServiceResult<T> buildFial() {
return new ServiceResult(ApplicationStatus.FAILURE, null, null);
}
@SuppressWarnings("unchecked")
public static <T> ServiceResult<T> buildFial(ApplicationStatus applicationStatus) {
return new ServiceResult(applicationStatus, null, null);
}
@SuppressWarnings("unchecked")
public static <T> ServiceResult<T> buildFial(T data, String message) {
return new ServiceResult(ApplicationStatus.FAILURE, data, message);
}
public Boolean isSuccess(){
return Objects.nonNull(this.code) && this.code == 0;
}
}
......@@ -2,10 +2,9 @@ package cn.quantgroup.cashloanflowboss.spi.xyqb.client;
import cn.quantgroup.cashloanflowboss.api.order.model.XyqbCurrentOrderStatusServiceResultModel;
import cn.quantgroup.cashloanflowboss.api.order.model.XyqbHistoryOrderStatusServiceResultModel;
import cn.quantgroup.cashloanflowboss.core.base.Result;
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;
......@@ -22,10 +21,10 @@ public interface XYQBCenter {
String pushLendingResult(@RequestParam Map parameter);
@PostMapping(value = "/ex/ka/order/status", consumes = "application/x-www-form-urlencoded")
Result<XyqbCurrentOrderStatusServiceResultModel> getOrderStatus(@RequestParam Map orderNo);
ServiceResult<XyqbCurrentOrderStatusServiceResultModel> getOrderStatus(@RequestParam Map paramMap);
@PostMapping(value = "/ex/ka/order/status/history", consumes = "application/x-www-form-urlencoded")
Result<XyqbHistoryOrderStatusServiceResultModel> getXyqbOrderHistoryStatus(Map paramMap);
ServiceResult<XyqbHistoryOrderStatusServiceResultModel> getXyqbOrderHistoryStatus(@RequestParam Map paramMap);
@Component
class Fallback implements XYQBCenter {
......@@ -36,12 +35,12 @@ public interface XYQBCenter {
}
@Override
public Result<XyqbCurrentOrderStatusServiceResultModel> getOrderStatus(Map orderNo) {
public ServiceResult<XyqbCurrentOrderStatusServiceResultModel> getOrderStatus(Map orderNo) {
return null;
}
@Override
public Result<XyqbHistoryOrderStatusServiceResultModel> getXyqbOrderHistoryStatus(Map paramMap) {
public ServiceResult<XyqbHistoryOrderStatusServiceResultModel> getXyqbOrderHistoryStatus(Map paramMap) {
return null;
}
......
......@@ -3,6 +3,7 @@ package cn.quantgroup.cashloanflowboss.spi.xyqb.service;
import cn.quantgroup.cashloanflowboss.api.order.model.XyqbCurrentOrderStatusServiceResultModel;
import cn.quantgroup.cashloanflowboss.api.order.model.XyqbHistoryOrderStatusServiceResultModel;
import cn.quantgroup.cashloanflowboss.core.base.Result;
import cn.quantgroup.cashloanflowboss.core.base.ServiceResult;
import cn.quantgroup.cashloanflowboss.spi.xyqb.client.XYQBCenter;
import cn.quantgroup.cashloanflowboss.spi.xyqb.repository.ContractRepository;
import cn.quantgroup.cashloanflowboss.spi.xyqb.repository.FundLendingRepository;
......@@ -89,7 +90,7 @@ public class XYQBCenterService {
* @param loanId
* @return
*/
public Result<XyqbCurrentOrderStatusServiceResultModel> getXyqbOrderStatus(String creditOrderNumber, Long loanId) {
public ServiceResult<XyqbCurrentOrderStatusServiceResultModel> getXyqbOrderStatus(String creditOrderNumber, Long loanId) {
Map paramMap = Maps.newHashMap();
paramMap.put("orderNo", creditOrderNumber);
......@@ -107,7 +108,7 @@ public class XYQBCenterService {
* @param loanId
* @return
*/
public Result<XyqbHistoryOrderStatusServiceResultModel> getXyqbOrderHistoryStatus(String creditOrderNumber, Long loanId) {
public ServiceResult<XyqbHistoryOrderStatusServiceResultModel> getXyqbOrderHistoryStatus(String creditOrderNumber, Long loanId) {
Map paramMap = Maps.newHashMap();
paramMap.put("orderNo", creditOrderNumber);
......
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