Quellcode durchsuchen

Merge branch 'dev' of huangwenjie/patient-co-management into dev

trick9191 vor 7 Jahren
Ursprung
Commit
fd703a5f29

+ 2 - 1
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/config/SwaggerConfig.java

@ -192,7 +192,8 @@ public class SwaggerConfig {
                        regex("/doctorFeedback/.*"),
                        regex("/patientFeedback/.*"),
                        regex("/esstatistics/.*"),
                        regex("/old/statistics/.*")
                        regex("/old/statistics/.*"),
                        regex("/questionnaire/.*")
                ))
                .build()
                .apiInfo(otherApiInfo());

+ 43 - 32
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/questionnaire/QuestionnaireService.java

@ -151,24 +151,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);
					//如果抽中的奖品对象为空,则直接返回未中奖
					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
						//将中奖记录信息缓存到ES
						esQuestionnaireWinningESData(result);
						return result;
					}catch (Exception e){
						//@todo 处理奖品相关逻辑业务时,如果报错,则将奖品重新放回奖品池
					    e.printStackTrace();
					}
				}else{
					for (QuestionnaireWinning obj:winningList) {
						QuestionnaireWinningESDO a = doToESDO(obj);
@ -178,7 +193,6 @@ public class QuestionnaireService extends BaseService {
				}
			}else{
				questionnaireWinning.setWinning(0);//未中奖
			}
		}else{
			questionnaireWinning.setWinning(0);//未中奖
@ -215,19 +229,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"));
@ -238,21 +251,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;
	}
	
	/**
@ -283,8 +295,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{

+ 82 - 0
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/questionnaire/QuestionnaireSystemController.java

@ -0,0 +1,82 @@
package com.yihu.wlyy.web.questionnaire;
import com.yihu.wlyy.service.common.InitiSysProService;
import com.yihu.wlyy.service.questionnaire.QuestionnaireService;
import com.yihu.wlyy.web.BaseController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
/**
 * 抽奖问卷系统接口
 * @author huangwenjie
 * @date 2018/1/30 09:13
 */
@Controller
@RequestMapping(value = "/questionnaire/sys/")
@Api(description = "抽奖问卷系统接口")
public class QuestionnaireSystemController extends BaseController {
	private static Logger logger = LoggerFactory.getLogger(QuestionnaireSystemController.class);
	
	@Autowired
	private QuestionnaireService questionnaireService;
	
	@Autowired
	private InitiSysProService initiSysProService;
	
	@RequestMapping(value = "startInitiSysProperties",method = RequestMethod.POST)
	@ApiOperation("重新执行系统参数初始化")
	@ResponseBody
	public String startInitiSysProperties(){
		try {
			logger.info("START===执行系统参数初始化");
			initiSysProService.startInitiSysProperties();
			logger.info("END===执行系统参数初始化");
			return write(200,"执行系统参数初始化成功!");
		} catch (Exception ex) {
			error(ex);
			return write(200,"执行系统参数初始化失败!");
		}
	}
	
	@RequestMapping(value = "getprizetoredis",method = RequestMethod.POST)
	@ApiOperation("从奖品数据库捞取指定数量的奖品,缓存到redis奖品池")
	@ResponseBody
	public String getQuestionnairePrizeToRedis(
			@ApiParam(required = true, name = "count", value = "数量")
			@RequestParam(value = "count", required = true)Integer count){
		try {
			logger.info("START===从奖品数据库捞取指定数量的奖品,缓存到redis奖品池");
			questionnaireService.getQuestionnairePrizeToRedis(count);
			logger.info("END===从奖品数据库捞取指定数量的奖品,缓存到redis奖品池");
			return write(200,"操作成功!");
		} catch (Exception ex) {
			error(ex);
			return write(200,"操作失败!");
		}
	}
	
	@RequestMapping(value = "gerprizecount",method = RequestMethod.GET)
	@ApiOperation("从redis获取剩余奖品数量")
	@ResponseBody
	public String gerPrizeCountFromRedis(){
		try {
			logger.info("START===从redis获取剩余奖品数量");
			Integer count = questionnaireService.gerPrizeCountFromRedis();
			logger.info("END===从redis获取剩余奖品数量");
			return write(200,"操作成功!","data",count);
		} catch (Exception ex) {
			error(ex);
			return write(200,"操作失败!");
		}
	}
}