Commit 5f90a8d1 authored by suntao's avatar suntao

订单状态历史记录查询

parent a2ece44b
...@@ -6,6 +6,7 @@ import cn.quantgroup.cashloanflowboss.api.order.model.OrderVo; ...@@ -6,6 +6,7 @@ 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.core.annotation.ChannelIdInit; import cn.quantgroup.cashloanflowboss.core.annotation.ChannelIdInit;
import cn.quantgroup.cashloanflowboss.core.annotation.CheckChannelRole; 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.base.Result;
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.*;
...@@ -34,7 +35,7 @@ public class OrderController { ...@@ -34,7 +35,7 @@ public class OrderController {
* @param channelOrderNumber * @param channelOrderNumber
* @param pageNumber * @param pageNumber
* @param pageSize * @param pageSize
* @return * @return 返回中包含当前订单可操作的 button
*/ */
@ChannelIdInit @ChannelIdInit
@CheckChannelRole @CheckChannelRole
...@@ -70,4 +71,19 @@ public class OrderController { ...@@ -70,4 +71,19 @@ public class OrderController {
public Result cancel(@RequestBody @Valid OrderVo orderVo) { public Result cancel(@RequestBody @Valid OrderVo orderVo) {
return Result.buildSuccess(orderService.cancel(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 ...@@ -9,6 +9,7 @@ import cn.quantgroup.cashloanflowboss.api.order.repository.OrderApproveRepositor
import cn.quantgroup.cashloanflowboss.api.order.util.OrderUtil; 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.Result; 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.core.base.Tuple;
import cn.quantgroup.cashloanflowboss.spi.clf.entity.ClfOrderMapping; import cn.quantgroup.cashloanflowboss.spi.clf.entity.ClfOrderMapping;
import cn.quantgroup.cashloanflowboss.spi.clf.repository.ClfOrderMappingRepository; import cn.quantgroup.cashloanflowboss.spi.clf.repository.ClfOrderMappingRepository;
...@@ -100,7 +101,7 @@ public class OrderService { ...@@ -100,7 +101,7 @@ public class OrderService {
OrderApprove orderApprove = orderApproveRepository.findByCreditNumber(it.getApplyNo()); 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)); log.info("[xyqbCenterService.getXyqbOrderStatus]xyqbOrderStatus={}", JSONTools.serialize(xyqbCenterServiceXyqbOrderStatus));
if (xyqbCenterServiceXyqbOrderStatus.isSuccess()) { if (xyqbCenterServiceXyqbOrderStatus.isSuccess()) {
QueryXyqbOrderStatus currentStatus = xyqbCenterServiceXyqbOrderStatus.getData().getCurrentStatus(); QueryXyqbOrderStatus currentStatus = xyqbCenterServiceXyqbOrderStatus.getData().getCurrentStatus();
...@@ -246,4 +247,19 @@ public class OrderService { ...@@ -246,4 +247,19 @@ public class OrderService {
String cancel_result = jolyneCenter.cancel(JSONTools.serialize(data)); String cancel_result = jolyneCenter.cancel(JSONTools.serialize(data));
return "success".equals(cancel_result); 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; ...@@ -5,9 +5,13 @@ import cn.quantgroup.cashloanflowboss.api.channel.util.ChannelConfUtil;
import cn.quantgroup.cashloanflowboss.core.Application; import cn.quantgroup.cashloanflowboss.core.Application;
import cn.quantgroup.cashloanflowboss.core.annotation.ChannelIdInit; import cn.quantgroup.cashloanflowboss.core.annotation.ChannelIdInit;
import cn.quantgroup.cashloanflowboss.core.annotation.CheckChannelRole; 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.base.Result;
import cn.quantgroup.cashloanflowboss.core.dictionary.ApplicationStatus; 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 lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.exception.ExceptionUtils; import org.apache.commons.lang3.exception.ExceptionUtils;
import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Around;
...@@ -15,6 +19,7 @@ import org.aspectj.lang.annotation.Aspect; ...@@ -15,6 +19,7 @@ import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut; import org.aspectj.lang.annotation.Pointcut;
import org.aspectj.lang.reflect.CodeSignature; import org.aspectj.lang.reflect.CodeSignature;
import org.aspectj.lang.reflect.MethodSignature; import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.Ordered; import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order; import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
...@@ -42,6 +47,9 @@ public class RoleLoadAspect { ...@@ -42,6 +47,9 @@ public class RoleLoadAspect {
@Pointcut("channelController() || orderController() ") @Pointcut("channelController() || orderController() ")
private void doSomeRole() {} private void doSomeRole() {}
@Autowired
private ClfOrderMappingRepository clfOrderMappingRepository;
@Around(value = "doSomeRole()") @Around(value = "doSomeRole()")
public Object around(ProceedingJoinPoint pjp) { public Object around(ProceedingJoinPoint pjp) {
...@@ -101,6 +109,32 @@ public class RoleLoadAspect { ...@@ -101,6 +109,32 @@ public class RoleLoadAspect {
} }
// ======================================== CheckChannelRole end ========================================== // ======================================== 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 { try {
return pjp.proceed(args); return pjp.proceed(args);
} catch (Throwable throwable) { } catch (Throwable throwable) {
......
...@@ -86,9 +86,4 @@ public class Result<T> { ...@@ -86,9 +86,4 @@ public class Result<T> {
return new Result(ApplicationStatus.FAILURE, data, message); 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; ...@@ -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.XyqbCurrentOrderStatusServiceResultModel;
import cn.quantgroup.cashloanflowboss.api.order.model.XyqbHistoryOrderStatusServiceResultModel; 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.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;
...@@ -22,10 +21,10 @@ public interface XYQBCenter { ...@@ -22,10 +21,10 @@ public interface XYQBCenter {
String pushLendingResult(@RequestParam Map parameter); String pushLendingResult(@RequestParam Map parameter);
@PostMapping(value = "/ex/ka/order/status", consumes = "application/x-www-form-urlencoded") @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") @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 @Component
class Fallback implements XYQBCenter { class Fallback implements XYQBCenter {
...@@ -36,12 +35,12 @@ public interface XYQBCenter { ...@@ -36,12 +35,12 @@ public interface XYQBCenter {
} }
@Override @Override
public Result<XyqbCurrentOrderStatusServiceResultModel> getOrderStatus(Map orderNo) { public ServiceResult<XyqbCurrentOrderStatusServiceResultModel> getOrderStatus(Map orderNo) {
return null; return null;
} }
@Override @Override
public Result<XyqbHistoryOrderStatusServiceResultModel> getXyqbOrderHistoryStatus(Map paramMap) { public ServiceResult<XyqbHistoryOrderStatusServiceResultModel> getXyqbOrderHistoryStatus(Map paramMap) {
return null; return null;
} }
......
...@@ -3,6 +3,7 @@ package cn.quantgroup.cashloanflowboss.spi.xyqb.service; ...@@ -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.XyqbCurrentOrderStatusServiceResultModel;
import cn.quantgroup.cashloanflowboss.api.order.model.XyqbHistoryOrderStatusServiceResultModel; import cn.quantgroup.cashloanflowboss.api.order.model.XyqbHistoryOrderStatusServiceResultModel;
import cn.quantgroup.cashloanflowboss.core.base.Result; 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.client.XYQBCenter;
import cn.quantgroup.cashloanflowboss.spi.xyqb.repository.ContractRepository; import cn.quantgroup.cashloanflowboss.spi.xyqb.repository.ContractRepository;
import cn.quantgroup.cashloanflowboss.spi.xyqb.repository.FundLendingRepository; import cn.quantgroup.cashloanflowboss.spi.xyqb.repository.FundLendingRepository;
...@@ -89,7 +90,7 @@ public class XYQBCenterService { ...@@ -89,7 +90,7 @@ public class XYQBCenterService {
* @param loanId * @param loanId
* @return * @return
*/ */
public Result<XyqbCurrentOrderStatusServiceResultModel> getXyqbOrderStatus(String creditOrderNumber, Long loanId) { public ServiceResult<XyqbCurrentOrderStatusServiceResultModel> getXyqbOrderStatus(String creditOrderNumber, Long loanId) {
Map paramMap = Maps.newHashMap(); Map paramMap = Maps.newHashMap();
paramMap.put("orderNo", creditOrderNumber); paramMap.put("orderNo", creditOrderNumber);
...@@ -107,7 +108,7 @@ public class XYQBCenterService { ...@@ -107,7 +108,7 @@ public class XYQBCenterService {
* @param loanId * @param loanId
* @return * @return
*/ */
public Result<XyqbHistoryOrderStatusServiceResultModel> getXyqbOrderHistoryStatus(String creditOrderNumber, Long loanId) { public ServiceResult<XyqbHistoryOrderStatusServiceResultModel> getXyqbOrderHistoryStatus(String creditOrderNumber, Long loanId) {
Map paramMap = Maps.newHashMap(); Map paramMap = Maps.newHashMap();
paramMap.put("orderNo", creditOrderNumber); 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