org.springframework.web.context.request.ServletRequestAttributes#getSessionId ( )源码实例Demo

下面列出了org.springframework.web.context.request.ServletRequestAttributes#getSessionId ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: seckill-rocketmq   文件: OrderChargeController.java
/**
 * 平台下单接口
 * @param chargeOrderRequest
 * @return
 */
@RequestMapping(value = "charge.do", method = {RequestMethod.POST})
public @ResponseBody Result chargeOrder(@ModelAttribute ChargeOrderRequest chargeOrderRequest) {
    ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
    String sessionId = attributes.getSessionId();
    // 下单前置参数校验
    if (!secKillChargeService.checkParamsBeforeSecKillCharge(chargeOrderRequest, sessionId)) {
        return Result.error(CodeMsg.PARAM_INVALID);
    }
    // 前置商品校验
    String prodId = chargeOrderRequest.getProdId();
    if (!secKillChargeService.checkProdConfigBeforeKillCharge(prodId, sessionId)) {
        return Result.error(CodeMsg.PRODUCT_NOT_EXIST);
    }
    // 前置预减库存
    if (!secKillProductConfig.preReduceProdStock(prodId)) {
        return Result.error(CodeMsg.PRODUCT_STOCK_NOT_ENOUGH);
    }
    // 秒杀订单入队
    return secKillChargeService.secKillOrderEnqueue(chargeOrderRequest, sessionId);
}
 
源代码2 项目: seckill-rocketmq   文件: OrderChargeController.java
/**
 * 平台查单接口
 * @param queryOrderRequest
 * @return
 */
@RequestMapping(value = "query.do", method = {RequestMethod.GET})
public @ResponseBody String queryOrder(@ModelAttribute QueryOrderRequest queryOrderRequest) {
    ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
    String sessionId = attributes.getSessionId();
    // 查询前置参数校验
    if (!secKillChargeService.checkParamsBeforeSecKillQuery(queryOrderRequest, sessionId)) {
        return JSON.toJSONString(Result.error(CodeMsg.PARAM_INVALID));
    }
    // 查询订单
    return JSON.toJSONString(secKillChargeService.queryOrder(queryOrderRequest, sessionId));
}
 
/**
 * 平台下单接口
 * @param chargeOrderRequest
 * @return
 */
@RequestMapping(value = "charge.do", method = {RequestMethod.POST})
public @ResponseBody Result chargeRequst(@RequestBody ChargeOrderRequest chargeOrderRequest) {
    ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
    String sessionId = attributes.getSessionId();
    // 下单前置校验
    if (!orderChargeService.checkValidBeforeChargeOrder(chargeOrderRequest, sessionId)) {
        return new Result("20000", "FAIL", null);
    }
    return orderChargeService.sendPaymentTransactionMsg(chargeOrderRequest, sessionId);
}
 
/**
 * 接受充值结果通知
 * @param chargeNotifyRequest
 * orderStatus 订单状态
 * channelOrderId  本平台订单
 * platOrderId 充值平台订单
 * finishTime 订单结束时间,时间戳yyyyMMddHHmmss
 */
@RequestMapping(value = "callback", method = {RequestMethod.POST})
public @ResponseBody String chargeNotify(@ModelAttribute ChargeNotifyRequest chargeNotifyRequest) {
    ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
    String sessionId = attributes.getSessionId();

    if (chargeNotifyRequest == null) {
        LOGGER.info("sessionId={},通知请求参数chargeNotifyDto==null,不进行处理。", sessionId);
        return NotifyConstant.NOTIFY_RETURN_FAIL;
    }
    LOGGER.info("sessionId={},充值结果通知处理开始,请求入参:chargeNotifyRequest={}", sessionId, chargeNotifyRequest.toString());
    // 获取详细通知参数
    String orderStatus = chargeNotifyRequest.getOrder_status();
    String channelOrderId = chargeNotifyRequest.getChannel_orderid();
    String platOrderId = chargeNotifyRequest.getPlat_orderid();
    String finishTime = chargeNotifyRequest.getFinish_time();

    if (StringUtils.isBlank(orderStatus) ||
            StringUtils.isBlank(channelOrderId) ||
            StringUtils.isBlank(platOrderId) ||
            StringUtils.isBlank(finishTime)) {
        LOGGER.info("sessionId={},通知请求参数存在空值,不进行处理。", sessionId);
        return NotifyConstant.NOTIFY_RETURN_FAIL;
    }
    // 签名校验
    String originSign = chargeNotifyRequest.getSign();
    String localSign = chargeNotifyRequest.sign(privateKey);
    if (!localSign.equals(originSign)) {
        LOGGER.info("sessionId={},签名校验失败,不进行处理。originSign={},localSign={}", sessionId, originSign, localSign);
        return NotifyConstant.NOTIFY_RETURN_FAIL;
    }
    LOGGER.info("sessionId={},签名校验成功,准备进行通知处理。originSign={},localSign={}", sessionId, originSign, localSign);
    // 执行通知处理逻辑
    return orderService.doNotify(sessionId, orderStatus, channelOrderId, platOrderId, finishTime);
}