Ejemplo n.º 1
0
  @RequestMapping("/getAward/{examinationId}")
  public ModelAndView getAward(
      @PathVariable String examinationId, HttpServletRequest request, ModelMap modelMap)
      throws Exception {
    String openid = wxQAManager.getOpenid(request);
    modelMap.put("openid", openid);
    // 1.找到当前用户和题
    Consumer consumer = wxQAManager.findConsumerByOpenid(openid);
    Examination examination =
        (Examination) baseManager.getObject(Examination.class.getName(), examinationId);
    ParticipationRecord participationRecord =
        wxQAManager.checkIfParticipated(consumer, examination);

    // 2.判断是否有领奖资格
    if (participationRecord != null
        && examination.getConsumer().getId().equals(consumer.getId())
        && examination
                .getFinishDatetime()
                .compareTo(examination.getExaminationEdition().getExpireDate())
            <= 0) {
      String idLock = wxQAManager.getLock(examination.getId());
      System.out.println("idLock:" + idLock);
      synchronized (idLock) {
        wxQAManager.reward(participationRecord, modelMap);
      }
    }
    System.out.println(
        new Date()
            + "\nopenid:"
            + openid
            + "--getAward--examination:"
            + examination.getId()
            + "--participation:"
            + (participationRecord == null ? "null" : participationRecord.getId())
            + "--consumer:"
            + consumer.getId());

    return modelMap.get("coupon") == null
        ? new ModelAndView("/question/reward", modelMap)
        : new ModelAndView("/question/rewardCoupon", modelMap);
  }