|
@ -131,36 +131,39 @@ public class QuestionnaireService extends BaseService {
|
|
|
if(winningList.isEmpty()){
|
|
|
//从redis奖品池捞取一个奖品
|
|
|
QuestionnairePrize questionnairePrize = getQuestionnairePrizeFromRedis();
|
|
|
try {
|
|
|
questionnaireWinning.setWinning(1);
|
|
|
questionnaireWinning.setPrizeType(questionnairePrize.getType());
|
|
|
questionnaireWinning.setPrizeName(questionnairePrize.getPrizeName());
|
|
|
questionnaireWinning.setPrizeCode(questionnairePrize.getPrizeCode());
|
|
|
questionnaireWinning.setAddress(questionnairePrize.getAddress());
|
|
|
questionnaireWinning.setValidity(questionnairePrize.getValidity());
|
|
|
questionnaireWinning = questionnaireWinningDao.save(questionnaireWinning);
|
|
|
}catch (Exception e){
|
|
|
//如果保存报错,则将奖品重新放回奖品池,返回未中奖
|
|
|
String prizejson = JSON.toJSONString(questionnairePrize);
|
|
|
redisTemplate.opsForValue().set("questionnaire:prize:code:" + questionnairePrize.getCode(), prizejson);
|
|
|
|
|
|
questionnaireWinning.setWinning(0);
|
|
|
questionnaireWinning.setPrizeType(0);
|
|
|
questionnaireWinning.setPrizeName("");
|
|
|
questionnaireWinning.setPrizeCode("");
|
|
|
questionnaireWinning.setAddress("");
|
|
|
questionnaireWinning.setValidity(new Date());
|
|
|
|
|
|
logger.info("mysql 保存中奖结果报错,将奖品重新放回奖品池,返回未中奖");
|
|
|
logger.info(e.getMessage());
|
|
|
//如果抽中的奖品对象为空,则直接返回未中奖
|
|
|
if(questionnairePrize != null){
|
|
|
try {
|
|
|
questionnaireWinning.setWinning(1);
|
|
|
questionnaireWinning.setPrizeType(questionnairePrize.getType());
|
|
|
questionnaireWinning.setPrizeName(questionnairePrize.getPrizeName());
|
|
|
questionnaireWinning.setPrizeCode(questionnairePrize.getPrizeCode());
|
|
|
questionnaireWinning.setAddress(questionnairePrize.getAddress());
|
|
|
questionnaireWinning.setValidity(questionnairePrize.getValidity());
|
|
|
//只有中奖的记录才保存到数据库
|
|
|
questionnaireWinning = questionnaireWinningDao.save(questionnaireWinning);
|
|
|
}catch (Exception e){
|
|
|
//如果保存报错,则将奖品重新放回奖品池,返回未中奖
|
|
|
String prizejson = JSON.toJSONString(questionnairePrize);
|
|
|
redisTemplate.opsForValue().set("questionnaire:prize:code:" + questionnairePrize.getCode(), prizejson);
|
|
|
|
|
|
questionnaireWinning.setWinning(0);
|
|
|
questionnaireWinning.setPrizeType(0);
|
|
|
questionnaireWinning.setPrizeName("");
|
|
|
questionnaireWinning.setPrizeCode("");
|
|
|
questionnaireWinning.setAddress("");
|
|
|
questionnaireWinning.setValidity(new Date());
|
|
|
|
|
|
logger.info("mysql 保存中奖结果报错,将奖品重新放回奖品池,返回未中奖");
|
|
|
logger.info(e.getMessage());
|
|
|
// e.printStackTrace();
|
|
|
}
|
|
|
one = doToESDO(questionnaireWinning);
|
|
|
result.add(one);
|
|
|
//将中奖记录信息缓存到ES
|
|
|
esQuestionnaireWinningESData(result);
|
|
|
return result;
|
|
|
}
|
|
|
one = doToESDO(questionnaireWinning);
|
|
|
result.add(one);
|
|
|
//将中奖信息缓存到ES
|
|
|
esQuestionnaireWinningESData(result);
|
|
|
return result;
|
|
|
|
|
|
}else{
|
|
|
for (QuestionnaireWinning obj:winningList) {
|
|
|
QuestionnaireWinningESDO a = doToESDO(obj);
|
|
@ -206,19 +209,18 @@ public class QuestionnaireService extends BaseService {
|
|
|
try {
|
|
|
synchronized (obj) {
|
|
|
QuestionnairePrize questionnairePrize = new QuestionnairePrize();
|
|
|
Set<String> exists = redisTemplate.opsForSet().members("questionnaire:prize:code");
|
|
|
Set<String> exists = redisTemplate.keys("questionnaire:prize:code:*");
|
|
|
if(exists.size() > 0){
|
|
|
String prizeCode = "questionnaire:prize:code:";
|
|
|
String key = "questionnaire:prize:code:";
|
|
|
String key = "";
|
|
|
String prizeJsonStr = "";
|
|
|
for (String code :exists) {
|
|
|
if(StringUtils.isNotBlank(code)){
|
|
|
prizeCode = prizeCode + code;
|
|
|
questionnairePrize.setCode(code);
|
|
|
for (String setkey :exists) {
|
|
|
if(StringUtils.isNotBlank(setkey)){
|
|
|
key = setkey;
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
prizeJsonStr = redisTemplate.opsForValue().get(prizeCode);
|
|
|
if(StringUtils.isNotBlank(key)){
|
|
|
prizeJsonStr = redisTemplate.opsForValue().get(key);
|
|
|
// JSONObject jsonObject = JSONObject.parseObject(prizeJsonStr);
|
|
|
// questionnairePrize.setUsed(jsonObject.getInteger("used"));
|
|
|
// questionnairePrize.setAddress(jsonObject.getString("address"));
|
|
@ -229,21 +231,20 @@ public class QuestionnaireService extends BaseService {
|
|
|
// questionnairePrize.setValidity(jsonObject.getDate("validity"));
|
|
|
// questionnairePrize.setCreateTime(jsonObject.getDate("createTime"));
|
|
|
// questionnairePrize.setUpdateTime(jsonObject.getDate("updateTime"));
|
|
|
questionnairePrize = JSON.parseObject(prizeJsonStr,QuestionnairePrize.class);
|
|
|
|
|
|
//捞取完之后,从redis缓存中删掉
|
|
|
redisTemplate.delete(prizeCode);
|
|
|
return questionnairePrize;
|
|
|
|
|
|
questionnairePrize = JSON.parseObject(prizeJsonStr,QuestionnairePrize.class);
|
|
|
//捞取完之后,从redis缓存中删掉
|
|
|
redisTemplate.delete(key);
|
|
|
return questionnairePrize;
|
|
|
}
|
|
|
}else{
|
|
|
return null;
|
|
|
}
|
|
|
}
|
|
|
}catch (Exception e){
|
|
|
e.printStackTrace();
|
|
|
return null;
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
/**
|
|
@ -274,8 +275,7 @@ public class QuestionnaireService extends BaseService {
|
|
|
*/
|
|
|
public Integer gerPrizeCountFromRedis(){
|
|
|
|
|
|
Set<String> exists = redisTemplate.opsForSet().members("questionnaire:prize:code");
|
|
|
|
|
|
Set<String> exists = redisTemplate.keys("questionnaire:prize:code:*");
|
|
|
if(exists != null && !exists.isEmpty()){
|
|
|
return exists.size();
|
|
|
}else{
|