Browse Source

Merge branch 'dev' of http://192.168.1.220:10080/Amoy/patient-co-management into dev

huangwenjie 7 years ago
parent
commit
c8492d1b26

+ 93 - 0
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/questionnaire/QuestionnaireService.java

@ -5,10 +5,18 @@ import com.yihu.es.entity.QuestionnaireWinningESDO;
import com.yihu.wlyy.config.SystemConfig;
import com.yihu.wlyy.config.es.ElasticFactory;
import com.yihu.wlyy.config.es.ElastricSearchSave;
import com.yihu.wlyy.entity.doctor.survey.SurveyOptionAnswers;
import com.yihu.wlyy.entity.doctor.survey.SurveyTemplateOptions;
import com.yihu.wlyy.entity.doctor.survey.SurveyTemplateQuestions;
import com.yihu.wlyy.entity.questionnaire.QuestionnairePrize;
import com.yihu.wlyy.entity.questionnaire.QuestionnaireUsers;
import com.yihu.wlyy.entity.questionnaire.QuestionnaireWinning;
import com.yihu.wlyy.repository.doctor.SurveyOptionAnswersDao;
import com.yihu.wlyy.repository.doctor.SurveyStatisticsDao;
import com.yihu.wlyy.repository.doctor.SurveyTemplateOptionsDao;
import com.yihu.wlyy.repository.doctor.SurveyTemplateQuestionsDao;
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.util.ElasticsearchUtil;
@ -16,6 +24,8 @@ import com.yihu.wlyy.util.random.LotteryUtils;
import com.yihu.wlyy.util.random.dto.LotteryItem;
import io.searchbox.client.JestClient;
import org.apache.commons.lang3.StringUtils;
import org.json.JSONArray;
import org.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@ -54,6 +64,16 @@ public class QuestionnaireService extends BaseService {
	private QuestionnairePrizeDao questionnairePrizeDao;
	@Autowired
	private StringRedisTemplate redisTemplate;
	@Autowired
	private SurveyTemplateQuestionsDao surveyTemplateQuestionsDao;
	@Autowired
	private SurveyTemplateOptionsDao surveyTemplateOptionsDao;
	@Autowired
	private SurveyOptionAnswersDao surveyOptionAnswersDao;
	@Autowired
	private QuestionnaireUsersDao questionnaireUsersDao;
	@Autowired
	SurveyStatisticsDao surveyStatisticsDao;
	
	/**
@ -301,4 +321,77 @@ public class QuestionnaireService extends BaseService {
			}
		}
	}
	/**
	 * 抽奖问卷调查获取所有的问卷题目
	 * @param surveyTemplateCode
	 * @return
	 * @throws Exception
	 */
	public JSONObject getAllQuestions(String surveyTemplateCode)throws Exception{
		JSONObject json = new JSONObject();
		List<SurveyTemplateQuestions> questionList = surveyTemplateQuestionsDao.findById(surveyTemplateCode);
		List<SurveyTemplateOptions> optionsList = surveyTemplateOptionsDao.findByQuestionCode(surveyTemplateCode);
		for (SurveyTemplateQuestions surveyTemplateQuestions : questionList){
			Map<String,Object> map = new HashMap<>();
			String qusCode = surveyTemplateQuestions.getCode();
			List<SurveyTemplateOptions>  resultOptionList = new ArrayList<>();
			for (SurveyTemplateOptions option : optionsList){
				if (option.getTemplateQuestionCode().equals(qusCode)){
					resultOptionList.add(option);
				}
			}
			map.put("question",surveyTemplateQuestions);
			map.put("option",resultOptionList);
			json.put(surveyTemplateQuestions.getSort()+"",map);
		}
		return  json;
	}
	public QuestionnaireWinningESDO saveAnswerAndLotto(JSONObject jsonData, QuestionnaireUsers questionnaireUsers) throws Exception {
		System.out.println("********jsonData********* " + jsonData);
		//解析json保存各种答案
		String surveyCode = jsonData.get("surveyCode").toString();
		String openId = jsonData.get("openId").toString();
		String userCode = "";
		QuestionnaireUsers questionnaireUsers1 = questionnaireUsersDao.findByOpoenId(openId);
		if (questionnaireUsers1!=null){
			userCode = questionnaireUsers1.getCode();
		}
		Date createTime = new Date();
		//获取一维数组
		JSONArray questions = jsonData.getJSONArray("questions");
		for (int i = 0; i < questions.length(); i++) {
			//获取每一道题的信息
			JSONObject question = new JSONObject(questions.get(i).toString());
			String qstCode = question.get("qstCode").toString();
			int type = Integer.parseInt(question.get("type").toString());
			if (type != 2) {
				if (question.has("options")) {
					//获取每道题的所有选项
					JSONArray options = question.getJSONArray("options");
					for (int j = 0; j < options.length(); j++) {
						JSONObject option = new JSONObject(options.get(j).toString());
						String code = getCode();
						String optionCode = option.get("optionCode").toString();
						String comment = null;
						int haveComment = 0;
						if (option.has("comment")) {
							comment = option.get("comment").toString();
							haveComment = 1;
						}
						//保存到选择题答案表
						SurveyOptionAnswers optionAnswer = new SurveyOptionAnswers(code, userCode, surveyCode, qstCode, optionCode, comment, type, createTime,openId);
						surveyOptionAnswersDao.save(optionAnswer);
						//选择题修改统计表数量
						surveyStatisticsDao.modifyAmount(surveyCode, qstCode, optionCode);
					}
				}
			}
		}
		return  questionnaireLottery(questionnaireUsers).get(0);
	}
}

+ 11 - 0
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/questionnaire/QuestionnaireUsersService.java

@ -1,10 +1,19 @@
package com.yihu.wlyy.service.questionnaire;
import com.yihu.es.entity.QuestionnaireWinningESDO;
import com.yihu.wlyy.entity.doctor.survey.SurveyOptionAnswers;
import com.yihu.wlyy.entity.doctor.survey.SurveyTemplateOptions;
import com.yihu.wlyy.entity.doctor.survey.SurveyTemplateQuestions;
import com.yihu.wlyy.entity.questionnaire.QuestionnaireUsers;
import com.yihu.wlyy.repository.doctor.SurveyOptionAnswersDao;
import com.yihu.wlyy.repository.doctor.SurveyStatisticsDao;
import com.yihu.wlyy.repository.doctor.SurveyTemplateOptionsDao;
import com.yihu.wlyy.repository.doctor.SurveyTemplateQuestionsDao;
import com.yihu.wlyy.repository.questionnaire.QuestionnaireUsersDao;
import com.yihu.wlyy.service.BaseService;
import com.yihu.wlyy.util.IdcardValidator;
import org.json.JSONArray;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -22,6 +31,8 @@ public class QuestionnaireUsersService extends BaseService {
    private QuestionnaireUsersDao questionnaireUsersDao;
    @Autowired
    private QuestionnaireService questionnaireService;
    @Autowired
    SurveyStatisticsDao surveyStatisticsDao;
    public Map<String,Object> userInfo(String openId)throws Exception{
        Map<String,Object> map = new HashMap<>();

+ 1 - 81
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/survey/PatientQuestionnaireService.java

@ -39,14 +39,7 @@ public class PatientQuestionnaireService extends BaseService {
    private SurveyAnswersDao surveyAnswersDao;
    @Autowired
    SurveyStatisticsDao surveyStatisticsDao;
    @Autowired
    private  SurveyTemplateQuestionsDao surveyTemplateQuestionsDao;
    @Autowired
    private SurveyTemplateOptionsDao surveyTemplateOptionsDao;
    @Autowired
    private QuestionnaireService questionnaireService;
    @Autowired
    private QuestionnaireUsersDao questionnaireUsersDao;
    private Logger logger = LoggerFactory.getLogger(this.getClass());
@ -235,77 +228,4 @@ public class PatientQuestionnaireService extends BaseService {
        surveyUserDao.modifyStatus(surveyCode, patient);
    }
    /**
     * 抽奖问卷调查获取所有的问卷题目
     * @param surveyTemplateCode
     * @return
     * @throws Exception
     */
    public JSONObject getAllQuestions(String surveyTemplateCode)throws Exception{
        JSONObject json = new JSONObject();
        List<SurveyTemplateQuestions> questionList = surveyTemplateQuestionsDao.findById(surveyTemplateCode);
        List<SurveyTemplateOptions> optionsList = surveyTemplateOptionsDao.findByQuestionCode(surveyTemplateCode);
        for (SurveyTemplateQuestions surveyTemplateQuestions : questionList){
            Map<String,Object> map = new HashMap<>();
            String qusCode = surveyTemplateQuestions.getCode();
            List<SurveyTemplateOptions>  resultOptionList = new ArrayList<>();
            for (SurveyTemplateOptions option : optionsList){
                if (option.getTemplateQuestionCode().equals(qusCode)){
                    resultOptionList.add(option);
                }
            }
            map.put("question",surveyTemplateQuestions);
            map.put("option",resultOptionList);
            json.put(surveyTemplateQuestions.getSort()+"",map);
        }
        return  json;
    }
    public QuestionnaireWinningESDO saveAnswerAndLotto(JSONObject jsonData, QuestionnaireUsers questionnaireUsers) throws Exception {
        System.out.println("********jsonData********* " + jsonData);
        //解析json保存各种答案
        String surveyCode = jsonData.get("surveyCode").toString();
        String openId = jsonData.get("openId").toString();
        String userCode = "";
        QuestionnaireUsers questionnaireUsers1 = questionnaireUsersDao.findByOpoenId(openId);
        if (questionnaireUsers1!=null){
            userCode = questionnaireUsers1.getCode();
        }
        Date createTime = new Date();
        //获取一维数组
        JSONArray questions = jsonData.getJSONArray("questions");
        for (int i = 0; i < questions.length(); i++) {
            //获取每一道题的信息
            JSONObject question = new JSONObject(questions.get(i).toString());
            String qstCode = question.get("qstCode").toString();
            int type = Integer.parseInt(question.get("type").toString());
            if (type != 2) {
                if (question.has("options")) {
                    //获取每道题的所有选项
                    JSONArray options = question.getJSONArray("options");
                    for (int j = 0; j < options.length(); j++) {
                        JSONObject option = new JSONObject(options.get(j).toString());
                        String code = getCode();
                        String optionCode = option.get("optionCode").toString();
                        String comment = null;
                        int haveComment = 0;
                        if (option.has("comment")) {
                            comment = option.get("comment").toString();
                            haveComment = 1;
                        }
                        //保存到选择题答案表
                        SurveyOptionAnswers optionAnswer = new SurveyOptionAnswers(code, userCode, surveyCode, qstCode, optionCode, comment, type, createTime,openId);
                        surveyOptionAnswersDao.save(optionAnswer);
                        //选择题修改统计表数量
                        surveyStatisticsDao.modifyAmount(surveyCode, qstCode, optionCode);
                    }
                }
            }
        }
        return  questionnaireService.questionnaireLottery(questionnaireUsers).get(0);
    }
}

+ 1 - 1
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/patient/account/PatientController.java

@ -726,7 +726,7 @@ public class PatientController extends WeixinBaseController {
            return write(200, "获取签约状态成功!", "data", -1);
        } catch (Exception e) {
            error(e);
            return error(-1, "签约状态查询失败!");
            return error(-1, " !");
        }
    }

+ 184 - 0
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/patient/questionnaire/QuestionnaireCaptchaController.java

@ -0,0 +1,184 @@
package com.yihu.wlyy.web.patient.questionnaire;
import com.google.code.kaptcha.impl.DefaultKaptcha;
import com.google.code.kaptcha.util.Config;
import com.yihu.wlyy.web.BaseController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
import sun.misc.BASE64Encoder;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
/**
 * 微信端非app用户可参与活动,获取验证码
 *
 * @author Sand
 * @created 2016/09/28
 */
@Api(description = "验证码")
@RestController
@RequestMapping(value = "/questionnaire/captcha", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
public class QuestionnaireCaptchaController extends BaseController {
    @Autowired
    private StringRedisTemplate redisTemplate;
    private Map<String, String> captchaCache = new ConcurrentHashMap<>();
    private DefaultKaptcha captchaProducer = new DefaultKaptcha();
    public QuestionnaireCaptchaController() {
        Properties properties = new Properties();
        properties.put("kaptcha.textproducer.font.color", "blue");
        properties.put("kaptcha.textproducer.font.size", "45");
        properties.put("kaptcha.textproducer.char.length", "4");
        properties.put("kaptcha.textproducer.font.names", "宋体,楷体,微软雅黑");
        Config config = new Config(properties);
        captchaProducer.setConfig(config);
    }
    @RequestMapping(method = RequestMethod.GET)
    @ApiOperation("生成验证码,用于第一次请求")
    public String createCaptcha(){
        try{
            return generateCaptcha();
        } catch (Exception e){
            error(e);
            return error(500, e.getMessage());
        }
    }
    @RequestMapping(value = "/{legacy_key}", method = RequestMethod.POST)
    @ApiOperation("刷新验证码,需提供第一次生成验证码返回的key")
    public String refreshCaptcha(@PathVariable("legacy_key") String legacyKey){
        try{
            cleanCaptcha(legacyKey);
            return generateCaptcha();
        } catch (Exception e){
            error(e);
            return error(500, e.getMessage());
        }
    }
    @RequestMapping(value = "/{key}", method = RequestMethod.GET)
    @ApiOperation("校验证码,提供key及用户输入的验证码")
    public String verifyCaptcha(@PathVariable("key") String key,
                                @RequestParam("text") String text){
        try{
            boolean pass = false;
            String captcha = captchaCache.get(key);
            if (captcha != null && captcha.equals(text.toLowerCase())){
                pass = true;
                cleanCaptcha(key);
            }
            return write(200, "ok", "pass", pass);
        } catch (Exception e){
            error(e);
            return error(500, e.getMessage());
        }
    }
    private String generateCaptcha() throws IOException {
        String captchaText = captchaProducer.createText();
        BufferedImage image = captchaProducer.createImage(captchaText);
        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
        ImageIO.write(image, "png", outputStream);
        String base64Img = new BASE64Encoder().encode(outputStream.toByteArray());
        String key = "captcha:" + UUID.randomUUID().toString() + ":text";
        Map<String, String> data = new HashMap<>();
        data.put("key", key);
        data.put("image", base64Img);
        data.put("format", "png");
        captchaCache.put(key, captchaText.toLowerCase());
        return write(200, "ok", "data", data);
    }
    private void cleanCaptcha(String key){
        captchaCache.remove(key);
    }
    //=======================抽奖活动要结合openid生成验证码和校验验证码==========================//
    @RequestMapping(value = "/withOpenId/{openId}",method = RequestMethod.POST)
    @ApiOperation("结合openid生成验证码,用于第一次请求")
    public String createCaptchaOpenId(@PathVariable("openId") String openId){
        try{
            return generatiCaptchaOpenId(openId);
        } catch (Exception e){
            error(e);
            return error(500, e.getMessage());
        }
    }
    private String generatiCaptchaOpenId(String openId)throws Exception{
        String captchaText = captchaProducer.createText();
        BufferedImage image = captchaProducer.createImage(captchaText);
        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
        ImageIO.write(image, "png", outputStream);
        String base64Img = new BASE64Encoder().encode(outputStream.toByteArray());
        String uuid = UUID.randomUUID().toString();
        String key = "captcha:" + openId +"_"+uuid + ":text";
        Map<String, String> data = new HashMap<>();
        data.put("key", "captcha:" +uuid + ":text");
        data.put("image", base64Img);
        data.put("format", "png");
        redisTemplate.opsForValue().set(key,captchaText.toLowerCase());
        return write(200, "ok", "data", data);
    }
    @RequestMapping(value = "/refresh/{legacy_key}", method = RequestMethod.POST)
    @ApiOperation("刷新验证码,需提供第一次生成验证码返回的key")
    public String refreshCaptchaOpenId(@PathVariable("legacy_key") String legacyKey,
                                       @RequestParam("openId") String openId){
        try{
            legacyKey = legacyKey.replaceFirst(":",":"+openId+"_");
            redisTemplate.delete(legacyKey);
            return generatiCaptchaOpenId(openId);
        } catch (Exception e){
            error(e);
            return error(500, e.getMessage());
        }
    }
    @RequestMapping(value = "/verifyWithOpenId/{key}", method = RequestMethod.POST)
    @ApiOperation("校验证码,提供key及用户输入的验证码")
    public String verifyCaptcha(@PathVariable("key") String key,
                                @RequestParam("openId") String openId,
                                @RequestParam("text") String text){
        try{
            boolean pass = false;
            key = key.replaceFirst(":",":"+openId+"_");
            String captcha = redisTemplate.opsForValue().get(key);
            if (captcha != null && captcha.equals(text.toLowerCase())){
                pass = true;
                redisTemplate.delete(key);
            }
            return write(200, "ok", "pass", pass);
        } catch (Exception e){
            error(e);
            return error(500, e.getMessage());
        }
    }
}

+ 156 - 0
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/patient/questionnaire/QuestionnaireController.java

@ -0,0 +1,156 @@
package com.yihu.wlyy.web.patient.questionnaire;
import com.yihu.es.entity.QuestionnaireWinningESDO;
import com.yihu.wlyy.entity.questionnaire.QuestionnaireUsers;
import com.yihu.wlyy.repository.questionnaire.QuestionnaireUsersDao;
import com.yihu.wlyy.service.questionnaire.QuestionnaireService;
import com.yihu.wlyy.service.questionnaire.QuestionnaireUsersService;
import com.yihu.wlyy.service.survey.PatientQuestionnaireService;
import com.yihu.wlyy.web.BaseController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Controller;
import org.springframework.util.StringUtils;
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;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
/**
 * Created by Reece on 2017/3/14.
 */
@Controller
@RequestMapping(value = "/questionnaire")
@Api(description = "居民端问卷调查用户信息")
public class QuestionnaireController extends BaseController {
    @Autowired
    private QuestionnaireUsersService questionnaireUsersService;
    @Autowired
    private QuestionnaireService questionnaireService;
    @Autowired
    private StringRedisTemplate redisTemplate;
    @Autowired
    private QuestionnaireUsersDao questionnaireUsersDao;
    @RequestMapping(value = "/getUserInfo", method = RequestMethod.POST)
    @ApiOperation(value = "获取用户信息并且判断是否已经抽过奖")
    @ResponseBody
    public String getSurveySummary(@ApiParam(name = "openId")@RequestParam(value = "openId")String openId) {
        try {
            Map<String,Object> map = questionnaireUsersService.userInfo(openId);
            return write(200,"查询成功!","data",map);
        }catch (Exception e){
            e.printStackTrace();
            return write(-1,"查询失败!");
        }
    }
    @RequestMapping(value = "/saveUpdateUser", method = RequestMethod.POST)
    @ApiOperation(value = "保存更新用户信息")
    @ResponseBody
    public String saveUpdateUser(@ApiParam(name = "questionnaireUsers")@RequestParam(value = "questionnaireUsers")QuestionnaireUsers questionnaireUsers) {
        try {
            Map<String,Object> map = questionnaireUsersService.SaveUpdateUser(questionnaireUsers);
            boolean flag = (Boolean) map.get("flag");
            if (flag){
                return write(200,"用户信息保存成功!");
            }else{
                return write(-1,map.get("msg").toString());
            }
        }catch (Exception e){
            e.printStackTrace();
            return write(-1,"用户信息保存失败!");
        }
    }
    //----------------------电影票活动抽奖-------------------------------//
    @RequestMapping(value = "/checkLotto",method = RequestMethod.POST)
    @ApiOperation(value = "进入活动页面判断是否已经抽过奖")
    @ResponseBody
    public String checkLotto(@ApiParam(name = "checkParam")@RequestParam(value = "checkParam",required = true)String checkParam){
        Map<String,Object> resultMap = new HashMap<>();
        try{
            List<QuestionnaireWinningESDO> result = questionnaireService.getQuestionnaireWinningESDOByIdcardAndOpenid(checkParam,checkParam);
            if (result!= null){
                resultMap.put("flag",false);
                if (result!=null && result.size()>0){
                    resultMap.put("result",result.get(0));
                }else{
                    resultMap.put("result",null);
                }
                return write(200,"您已经抽过奖了!","data",resultMap);
            }else{
                resultMap.put("flag",true);
                return write(200,"您还未抽过奖!","data",resultMap);
            }
        }catch (Exception e){
            e.printStackTrace();
            return write(-1,"操作失败!");
        }
    }
    @RequestMapping(value = "/getAllQuestions",method = RequestMethod.GET)
    @ApiOperation(value = "电影票抽奖获取所有问卷题目")
    @ResponseBody
    public String getAllQuestions(@ApiParam(name = "surveyTemplateCode",value = "问卷模板id")@RequestParam(value = "surveyTemplateCode",required = true)String surveyTemplateCode){
        try {
            JSONObject jsonObject = questionnaireService.getAllQuestions(surveyTemplateCode);
            return write(200, "查询成功!", "data", jsonObject);
        } catch (Exception e) {
            e.printStackTrace();
            return write(-1, "查询失败!");
        }
    }
    @RequestMapping(value = "/saveAnswerAndLotto", method = RequestMethod.POST)
    @ApiOperation(value = "保存用户答案并且参与抽奖")
    @ResponseBody
    public String saveAnswerAndLotto(
            @RequestParam(value = "jsonData") String jsonData) {
        try {
            JSONObject json = new JSONObject(jsonData);
            //验证码验证
            String key = String.valueOf(json.get("key"));
            String text = String.valueOf(json.get("text"));
            String openId = String.valueOf(json.get("openId"));
            boolean pass = false;
            key = key.replaceFirst(":",":"+openId+"_");
            String captcha = redisTemplate.opsForValue().get(key);
            if (captcha != null && captcha.equals(text.toLowerCase())){
                pass = true;
                redisTemplate.delete(key);
            }
            //openid和身份证验证是否已经抽过奖
            QuestionnaireUsers questionnaireUsers = questionnaireUsersDao.findByOpoenId(openId);
            if (questionnaireUsers!=null){
                List<QuestionnaireWinningESDO> questionnaireWinningESDO = questionnaireService.getQuestionnaireWinningESDOByIdcardAndOpenid(questionnaireUsers.getIdcard(),openId);
                if (questionnaireWinningESDO!=null){
                    return write(-1,"您已经抽过奖了!");
                }
            }else {
                return write(-1,"请先填写个人信息!");
            }
            //验证成功,保存问卷进行抽奖
            if (pass){
                return write(200, "操作成功!","data",questionnaireService.saveAnswerAndLotto(json,questionnaireUsers));
            }else{
                return write(-1, "验证码错误!");
            }
        } catch (Exception e) {
            e.printStackTrace();
            return write(-1, "操作失败!");
        }
    }
}

+ 0 - 63
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/patient/questionnaire/QuestionnaireUsersController.java

@ -1,63 +0,0 @@
package com.yihu.wlyy.web.patient.questionnaire;
import com.yihu.wlyy.entity.questionnaire.QuestionnaireUsers;
import com.yihu.wlyy.service.questionnaire.QuestionnaireUsersService;
import com.yihu.wlyy.service.survey.PatientQuestionnaireService;
import com.yihu.wlyy.web.BaseController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.util.StringUtils;
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;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
/**
 * Created by Reece on 2017/3/14.
 */
@Controller
@RequestMapping(value = "/patient/questionnaireUser/")
@Api(description = "居民端问卷调查用户信息")
public class QuestionnaireUsersController extends BaseController {
    @Autowired
    private QuestionnaireUsersService questionnaireUsersService;
    @RequestMapping(value = "getUserInfo", method = RequestMethod.POST)
    @ApiOperation(value = "获取用户信息并且判断是否已经抽过奖")
    @ResponseBody
    public String getSurveySummary(@ApiParam(name = "openId")@RequestParam(value = "openId")String openId) {
        try {
            Map<String,Object> map = questionnaireUsersService.userInfo(openId);
            return write(200,"查询成功!","data",map);
        }catch (Exception e){
            e.printStackTrace();
            return write(-1,"查询失败!");
        }
    }
    @RequestMapping(value = "saveUpdateUser", method = RequestMethod.POST)
    @ApiOperation(value = "保存更新用户信息")
    @ResponseBody
    public String saveUpdateUser(@ApiParam(name = "questionnaireUsers")@RequestParam(value = "questionnaireUsers")QuestionnaireUsers questionnaireUsers) {
        try {
            Map<String,Object> map = questionnaireUsersService.SaveUpdateUser(questionnaireUsers);
            boolean flag = (Boolean) map.get("flag");
            if (flag){
                return write(200,"用户信息保存成功!");
            }else{
                return write(-1,map.get("msg").toString());
            }
        }catch (Exception e){
            e.printStackTrace();
            return write(-1,"用户信息保存失败!");
        }
    }
}

+ 0 - 81
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/patient/survey/PatientQuestionnaireController.java

@ -93,85 +93,4 @@ public class PatientQuestionnaireController extends BaseController {
        }
    }
    //----------------------电影票活动抽奖-------------------------------//
    @RequestMapping(value = "/checkLotto",method = RequestMethod.POST)
    @ApiOperation(value = "进入活动页面判断是否已经抽过奖")
    @ResponseBody
    public String checkLotto(@ApiParam(name = "checkParam")@RequestParam(value = "checkParam",required = true)String checkParam){
        Map<String,Object> resultMap = new HashMap<>();
        try{
            List<QuestionnaireWinningESDO> result = questionnaireService.getQuestionnaireWinningESDOByIdcardAndOpenid(checkParam,checkParam);
            if (result!= null){
                resultMap.put("flag",false);
                if (result!=null && result.size()>0){
                    resultMap.put("result",result.get(0));
                }else{
                    resultMap.put("result",null);
                }
                return write(200,"您已经抽过奖了!","data",resultMap);
            }else{
                resultMap.put("flag",true);
                return write(200,"您还未抽过奖!","data",resultMap);
            }
        }catch (Exception e){
            e.printStackTrace();
            return write(-1,"操作失败!");
        }
    }
    @RequestMapping(value = "/getAllQuestions",method = RequestMethod.GET)
    @ApiOperation(value = "电影票抽奖获取所有问卷题目")
    @ResponseBody
    public String getAllQuestions(@ApiParam(name = "surveyTemplateCode",value = "问卷模板id")@RequestParam(value = "surveyTemplateCode",required = true)String surveyTemplateCode){
        try {
            JSONObject jsonObject = patientQuestionnaireService.getAllQuestions(surveyTemplateCode);
            return write(200, "查询成功!", "data", jsonObject);
        } catch (Exception e) {
            e.printStackTrace();
            return write(-1, "查询失败!");
        }
    }
    @RequestMapping(value = "/saveAnswerAndLotto", method = RequestMethod.POST)
    @ApiOperation(value = "保存用户答案并且参与抽奖")
    @ResponseBody
    public String saveAnswerAndLotto(
            @RequestParam(value = "jsonData") String jsonData) {
        try {
            JSONObject json = new JSONObject(jsonData);
            //验证码验证
            String key = String.valueOf(json.get("key"));
            String text = String.valueOf(json.get("text"));
            String openId = String.valueOf(json.get("openId"));
            boolean pass = false;
            key = key.replaceFirst(":",":"+openId+"_");
            String captcha = redisTemplate.opsForValue().get(key);
            if (captcha != null && captcha.equals(text.toLowerCase())){
                pass = true;
                redisTemplate.delete(key);
            }
            //openid和身份证验证是否已经抽过奖
            QuestionnaireUsers questionnaireUsers = questionnaireUsersDao.findByOpoenId(openId);
            if (questionnaireUsers!=null){
                List<QuestionnaireWinningESDO> questionnaireWinningESDO = questionnaireService.getQuestionnaireWinningESDOByIdcardAndOpenid(questionnaireUsers.getIdcard(),openId);
                if (questionnaireWinningESDO!=null){
                    return write(-1,"您已经抽过奖了!");
                }
            }else {
                return write(-1,"请先填写个人信息!");
            }
            //验证成功,保存问卷进行抽奖
            if (pass){
                return write(200, "操作成功!","data",patientQuestionnaireService.saveAnswerAndLotto(json,questionnaireUsers));
            }else{
                return write(-1, "验证码错误!");
            }
        } catch (Exception e) {
            e.printStackTrace();
            return write(-1, "操作失败!");
        }
    }
}

+ 92 - 0
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/wechat/process/WeiXinEventProcess.java

@ -400,6 +400,39 @@ public class WeiXinEventProcess {
            setUrlItems(articles, systemConf);
            setWifi(message.get("FromUserName"),articles,systemConf);
            // 构建回复消息XML
            result = WeiXinMessageReplyUtils.replyNewsMessage(message.get("FromUserName"), message.get("ToUserName"), articles);
        }else if (StringUtils.isNotEmpty(eventKey) && (("wechat_draw").equals(eventKey)) ||
                eventKey.startsWith("qrscene_wechat_draw")){
            // 配置信息
            Properties systemConf = SystemConf.getInstance().getSystemProperties();
            // 图文信息
            List<Map<String, String>> articles = new ArrayList<>();
            Map<String, String> article = new HashMap<>();
            // 图文URL
            String url = systemConf.getProperty("doctor_subscribe_url");
            // 图文消息图片URL
            String picUrl = systemConf.getProperty("doctor_qrcode_pic_url");
            // URL设置服务器URL、AppId
            url = url.replace("{server}", wechat_base_url)
                    .replace("{appId}", appId);
            //图片地址
            picUrl = picUrl.replace("{server}", serverUrl);
            article.put("Url", url);
            article.put("Title", "欢迎关注厦门i健康,快来签约家庭医生吧~");
            article.put("Description", "请点击查看家庭签约");
            article.put("PicUrl", picUrl);
            articles.add(article);
            //设置共有的图文消息
            setUrlItems(articles, systemConf);
            //设置抽奖
            setDraw(articles,systemConf);
            // 构建回复消息XML
            result = WeiXinMessageReplyUtils.replyNewsMessage(message.get("FromUserName"), message.get("ToUserName"), articles);
        }else {
@ -480,10 +513,37 @@ public class WeiXinEventProcess {
        }
    }
    public void setDraw(List<Map<String, String>> articles, Properties systemConf){
        Map<String, String> articleConsult = new HashMap<>();
        // 图文URL
        String urlConsult = getSystemCodeByName("PATIENT_DRAW_URL");
        // URL设置服务器URL、AppId
        urlConsult = urlConsult.replace("{server}", wechat_base_url)
                .replace("{appId}", appId);
        logger.info("pstient_Draw_url:"+urlConsult);
        // 图文消息图片URL
        String picUrlConsult = systemConf.getProperty("patient_draw_pic_url");
        picUrlConsult = picUrlConsult.replace("{server}", serverUrl);
        articleConsult.put("Url", urlConsult);
        articleConsult.put("Title", "健康宣传回访,电影票等你来拿~");
        articleConsult.put("Description", "外来流动人口健康宣传回访,快来参加抽取电影票~");
        articleConsult.put("PicUrl", picUrlConsult);
        articles.add(articleConsult);
    }
    public String getSystemWifiUrl(){
        List<SystemDict> systemDicts =  systemDictDao.findByDictName("HSLQ_WIFI");
        return systemDicts.get(0).getCode();
    }
    public String getSystemCodeByName(String name){
        List<SystemDict> systemDicts =  systemDictDao.findByDictName(name);
        return systemDicts.get(0).getCode();
    }
    /**
     * 设置微信公共的图文消息
@ -725,6 +785,38 @@ public class WeiXinEventProcess {
            setWifi(message.get("FromUserName"),articles,systemConf);
            // 构建回复消息XML
            result = WeiXinMessageReplyUtils.replyNewsMessage(message.get("FromUserName"), message.get("ToUserName"), articles);
        }else if (StringUtils.isNotEmpty(eventKey) && (("wechat_draw").equals(eventKey)) ||
                eventKey.startsWith("qrscene_wechat_draw")) {
            // 配置信息
            Properties systemConf = SystemConf.getInstance().getSystemProperties();
            // 图文信息
            List<Map<String, String>> articles = new ArrayList<>();
            Map<String, String> article = new HashMap<>();
            // 图文URL
            String url = systemConf.getProperty("doctor_subscribe_url");
            // 图文消息图片URL
            String picUrl = systemConf.getProperty("doctor_qrcode_pic_url");
            // URL设置服务器URL、AppId
            url = url.replace("{server}", wechat_base_url)
                    .replace("{appId}", appId);
            //图片地址
            picUrl = picUrl.replace("{server}", serverUrl);
            article.put("Url", url);
            article.put("Title", "欢迎关注厦门i健康,快来签约家庭医生吧~");
            article.put("Description", "请点击查看家庭签约");
            article.put("PicUrl", picUrl);
            articles.add(article);
            //设置共有的图文消息
            setUrlItems(articles, systemConf);
            //设置抽奖
            setDraw(articles,systemConf);
            // 构建回复消息XML
            result = WeiXinMessageReplyUtils.replyNewsMessage(message.get("FromUserName"), message.get("ToUserName"), articles);
        }
        return result;

+ 3 - 1
patient-co/patient-co-wlyy/src/main/resources/system.properties

@ -31,9 +31,11 @@ patient_QRCode_url=https://open.weixin.qq.com/connect/oauth2/authorize?appid={ap
#居民产检计划
patient_prenata_url=https://open.weixin.qq.com/connect/oauth2/authorize?appid={appId}&amp;redirect_uri={server}%2fwx%2fhtml%2ffybj%2fhtml%2fyunjianjihua.html&amp;response_type=code&amp;scope=snsapi_base&amp;state=STATE#wechat_redirect
#居民免疫计划
patient_immune_url=https://open.weixin.qq.com/connect/oauth2/authorize?appid={appId}&amp;redirect_uri={server}%2fwx%2fhtml%2ffybj%2fhtml%2fmianyijihua.html&amp;response_type=code&amp;scope=snsapi_base&amp;state=STATE#wechat_redirect
patient_immune_url=#居民抽奖图片地址
#居民wifi图片地址
patient_wifi_pic_url = {server}/images/wifi.png
#居民抽奖图片地址
patient_draw_pic_url = {server}/images/banner01.png
#居民wifi链接
patient_wifi_url =http://freewifi.mobcb.com/Portal/Wx/login
#就诊记录

BIN
patient-co/patient-co-wlyy/src/main/webapp/images/banner01.png