|
@ -18,6 +18,7 @@ import com.yihu.wlyy.repository.questionnaire.QuestionnairePrizeDao;
|
|
|
import com.yihu.wlyy.repository.questionnaire.QuestionnaireUsersDao;
|
|
|
import com.yihu.wlyy.repository.questionnaire.QuestionnaireWinningDao;
|
|
|
import com.yihu.wlyy.service.BaseService;
|
|
|
import com.yihu.wlyy.service.app.family.FamilyMemberService;
|
|
|
import com.yihu.wlyy.util.ElasticsearchUtil;
|
|
|
import com.yihu.wlyy.util.RivaEDCode;
|
|
|
import com.yihu.wlyy.util.random.LotteryUtils;
|
|
@ -85,6 +86,8 @@ public class QuestionnaireService extends BaseService {
|
|
|
private String key1;
|
|
|
@Value("${Riva.RIVAED_KEY2}")
|
|
|
private String key2;
|
|
|
@Autowired
|
|
|
private FamilyMemberService familyMemberService;
|
|
|
|
|
|
|
|
|
/**
|
|
@ -159,56 +162,66 @@ public class QuestionnaireService extends BaseService {
|
|
|
|
|
|
//中奖
|
|
|
if("YES".equals(lotteryItem.getAwardName())){
|
|
|
logger.info("抽奖:居民身份证:"+questionnaireUsers.getIdcard()+",openid="+questionnaireUsers.getOpenid()+",结果01:YES,判断数据库是否有中奖纪录");
|
|
|
List<QuestionnaireWinning> winningList = questionnaireWinningDao.findByUserIdcardAndUserOpenid(questionnaireUsers.getIdcard(),questionnaireUsers.getOpenid());
|
|
|
if(winningList.isEmpty()){
|
|
|
//从redis奖品池捞取一个奖品
|
|
|
QuestionnairePrize questionnairePrize = getQuestionnairePrizeFromRedis();
|
|
|
//如果抽中的奖品对象为空,则直接返回未中奖
|
|
|
if(questionnairePrize != null){
|
|
|
logger.info("抽奖:居民身份证:"+questionnaireUsers.getIdcard()+",openid="+questionnaireUsers.getOpenid()+",结果02:成功捞取到一个奖品,奖品CODE:"+questionnairePrize.getCode());
|
|
|
try {
|
|
|
questionnaireWinning.setWinning(1);//---中奖
|
|
|
questionnaireWinning.setPrizeType(questionnairePrize.getType());
|
|
|
questionnaireWinning.setPrizeName(questionnairePrize.getPrizeName());
|
|
|
questionnaireWinning.setPrizeCode(questionnairePrize.getPrizeCode());
|
|
|
questionnaireWinning.setPrizePsw(questionnairePrize.getPrizePsw());
|
|
|
questionnaireWinning.setAddress(questionnairePrize.getAddress());
|
|
|
questionnaireWinning.setValidity(questionnairePrize.getValidity());
|
|
|
//只有中奖的记录才保存到数据库
|
|
|
questionnaireWinning = questionnaireWinningDao.save(questionnaireWinning);
|
|
|
logger.info("抽奖:居民身份证:"+questionnaireUsers.getIdcard()+",openid="+questionnaireUsers.getOpenid()+",结果03:中奖结果成功保存到数据库,奖品CODE:"+questionnairePrize.getCode());
|
|
|
}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.setPrizePsw("");
|
|
|
questionnaireWinning.setAddress("");
|
|
|
questionnaireWinning.setValidity(new Date());
|
|
|
logger.info("抽奖:居民身份证:"+questionnaireUsers.getIdcard()+",openid="+questionnaireUsers.getOpenid()+",结果03:mysql 保存中奖结果报错,将奖品重新放回奖品池,返回未中奖,奖品CODE:"+questionnairePrize.getCode());
|
|
|
e.printStackTrace();
|
|
|
|
|
|
//判断抽奖人openid是否有效
|
|
|
String sus = familyMemberService.getIsSus(questionnaireUsers.getOpenid());
|
|
|
|
|
|
//openid有效,则进入抽奖
|
|
|
if(StringUtils.isNotBlank(sus) && "1".equals(sus)){
|
|
|
logger.info("抽奖:居民身份证:"+questionnaireUsers.getIdcard()+",openid="+questionnaireUsers.getOpenid()+",结果01:YES,判断数据库是否有中奖纪录");
|
|
|
List<QuestionnaireWinning> winningList = questionnaireWinningDao.findByUserIdcardAndUserOpenid(questionnaireUsers.getIdcard(),questionnaireUsers.getOpenid());
|
|
|
if(winningList.isEmpty()){
|
|
|
//从redis奖品池捞取一个奖品
|
|
|
QuestionnairePrize questionnairePrize = getQuestionnairePrizeFromRedis();
|
|
|
//如果抽中的奖品对象为空,则直接返回未中奖
|
|
|
if(questionnairePrize != null){
|
|
|
logger.info("抽奖:居民身份证:"+questionnaireUsers.getIdcard()+",openid="+questionnaireUsers.getOpenid()+",结果02:成功捞取到一个奖品,奖品CODE:"+questionnairePrize.getCode());
|
|
|
try {
|
|
|
questionnaireWinning.setWinning(1);//---中奖
|
|
|
questionnaireWinning.setPrizeType(questionnairePrize.getType());
|
|
|
questionnaireWinning.setPrizeName(questionnairePrize.getPrizeName());
|
|
|
questionnaireWinning.setPrizeCode(questionnairePrize.getPrizeCode());
|
|
|
questionnaireWinning.setPrizePsw(questionnairePrize.getPrizePsw());
|
|
|
questionnaireWinning.setAddress(questionnairePrize.getAddress());
|
|
|
questionnaireWinning.setValidity(questionnairePrize.getValidity());
|
|
|
//只有中奖的记录才保存到数据库
|
|
|
questionnaireWinning = questionnaireWinningDao.save(questionnaireWinning);
|
|
|
logger.info("抽奖:居民身份证:"+questionnaireUsers.getIdcard()+",openid="+questionnaireUsers.getOpenid()+",结果03:中奖结果成功保存到数据库,奖品CODE:"+questionnairePrize.getCode());
|
|
|
}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.setPrizePsw("");
|
|
|
questionnaireWinning.setAddress("");
|
|
|
questionnaireWinning.setValidity(new Date());
|
|
|
logger.info("抽奖:居民身份证:"+questionnaireUsers.getIdcard()+",openid="+questionnaireUsers.getOpenid()+",结果03:mysql 保存中奖结果报错,将奖品重新放回奖品池,返回未中奖,奖品CODE:"+questionnairePrize.getCode());
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
one = doToESDO(questionnaireWinning);
|
|
|
result.add(one);
|
|
|
//将已中奖记录信息缓存到ES
|
|
|
esQuestionnaireWinningESData(result);
|
|
|
logger.info("抽奖:居民身份证:"+questionnaireUsers.getIdcard()+",openid="+questionnaireUsers.getOpenid()+",结果04:中奖结果成功保存到ES,奖品CODE:"+questionnairePrize.getCode());
|
|
|
return result;
|
|
|
}
|
|
|
logger.info("抽奖:居民身份证:"+questionnaireUsers.getIdcard()+",openid="+questionnaireUsers.getOpenid()+",结果02:没捞取到奖品,返回");
|
|
|
}else{
|
|
|
|
|
|
for (QuestionnaireWinning obj:winningList) {
|
|
|
logger.info("抽奖:居民身份证:"+questionnaireUsers.getIdcard()+",openid="+questionnaireUsers.getOpenid()+",结果02:从数据库中获取到中奖纪录,奖品CODE:"+obj.getPrizeCode());
|
|
|
QuestionnaireWinningESDO a = doToESDO(obj);
|
|
|
result.add(a);
|
|
|
}
|
|
|
one = doToESDO(questionnaireWinning);
|
|
|
result.add(one);
|
|
|
//将已中奖记录信息缓存到ES
|
|
|
esQuestionnaireWinningESData(result);
|
|
|
logger.info("抽奖:居民身份证:"+questionnaireUsers.getIdcard()+",openid="+questionnaireUsers.getOpenid()+",结果04:中奖结果成功保存到ES,奖品CODE:"+questionnairePrize.getCode());
|
|
|
return result;
|
|
|
}
|
|
|
logger.info("抽奖:居民身份证:"+questionnaireUsers.getIdcard()+",openid="+questionnaireUsers.getOpenid()+",结果02:没捞取到奖品,返回");
|
|
|
}else{
|
|
|
|
|
|
for (QuestionnaireWinning obj:winningList) {
|
|
|
logger.info("抽奖:居民身份证:"+questionnaireUsers.getIdcard()+",openid="+questionnaireUsers.getOpenid()+",结果02:从数据库中获取到中奖纪录,奖品CODE:"+obj.getPrizeCode());
|
|
|
QuestionnaireWinningESDO a = doToESDO(obj);
|
|
|
result.add(a);
|
|
|
}
|
|
|
return result;
|
|
|
//openid无效,直接返回未中奖
|
|
|
questionnaireWinning.setWinning(0);//--未中奖
|
|
|
}
|
|
|
}else{
|
|
|
questionnaireWinning.setWinning(0);//--未中奖
|
|
@ -477,4 +490,5 @@ public class QuestionnaireService extends BaseService {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
}
|