@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); }