package info.aspirecn.iov.sjjh.supplier10000053.action; import info.aspirecn.iov.sjjh.commons.lang.ChannelTypeHandleResponseObject; import info.aspirecn.iov.sjjh.commons.lang.Constant; import info.aspirecn.iov.sjjh.supplier10000053.constant.CommonConstant; import info.aspirecn.iov.sjjh.supplier10000053.service.ChannelService; import info.aspirecn.rdc.aspirecloud.node.except.utils.ErrorUtils; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import lombok.extern.slf4j.Slf4j; import org.apache.tomcat.util.codec.binary.Base64; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestHeader; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; import javax.servlet.http.HttpServletRequest; /** * @author xusonglin * @version V1.0 **/ @Slf4j @RestController public class ChannelAction { @Autowired ChannelService channelService; @ApiOperation(value = "信用分查询接口", notes = "") @PostMapping(value = "/creditScoreQuery.do") public ChannelTypeHandleResponseObject creditScoreQuery( @ApiParam(value = "通道ID") @RequestHeader(name = "channelId") String channelId, @ApiParam(value = "超时时间,单位:毫秒", example = "10000") @RequestParam(name = "outTime", required = true) int outTime, @ApiParam(value = "请求参数JSON串") @RequestParam(name = "customBody", required = true) String customBody) { HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()) .getRequest(); ChannelTypeHandleResponseObject ret = channelService.creditScoreQuery(request, customBody, outTime); //把接口参数、调用结果和是否收费放入访问日志中 if (ret.getCode() != Constant.SUCCESS) { request.setAttribute(CommonConstant.Charge_Log_ResponseCode, Constant.CHANNEL_LOG_ERROR_CODE); } else { request.setAttribute(CommonConstant.Charge_Log_ResponseCode, Constant.CHANNEL_LOG_SUCCESS_CODE); } request.setAttribute(CommonConstant.Charge_Log_Key, ret.getIsCharge()); try { request.setAttribute(Constant.CHANNEL_LOG_QUERY, Base64.encodeBase64String(customBody.getBytes(CommonConstant.PARA_ENCODE))); } catch (Exception ex) { ErrorUtils.captureException(ex); log.error("creditScoreQuery.encodeBase64String.Exception=", ex); } request.setAttribute(Constant.CHANNEL_TYPE_KEY, Constant.CHANNEL_TYPE_SYNC); return ret; } }