DemoAppointmentServiceImpl.java 3.03 KB
Newer Older
shenggui.li committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104
package com.reyun.service.impl;

import com.reyun.model.DemoAppointment;
import com.reyun.repository.DemoAppointmentRepository;
import com.reyun.service.DemoAppointmentService;
import com.reyun.util.*;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.List;

/**
 * Created by nolan on 06/06/2017.
 * description:
 */
@Service
public class DemoAppointmentServiceImpl implements DemoAppointmentService {
	private static Logger logger = LoggerFactory.getLogger(DemoAppointmentServiceImpl.class);


	@Autowired
	private DemoAppointmentRepository demoAppointmentRepository;

	@Override
	public DemoAppointment freetrial(DemoAppointment demoAppointment) {
		//1. 申请
		demoAppointment = demoAppointmentRepository.save(demoAppointment);
		logger.debug("创建预约申请, {}", demoAppointment);
		return demoAppointment;
	}

	@Override
	public boolean checkExist(String phone) {
		BigInteger bigInteger = demoAppointmentRepository.countByPhone(phone);
		return bigInteger.intValue() > 0;
	}

    @Override
    public boolean checkExistByEmail(String email) {
        BigInteger bigInteger = demoAppointmentRepository.countByEmail(email);
        return bigInteger.intValue() > 0;
    }

    @Override
    public boolean sendCode2Email(String email, HttpServletRequest request) {

        List<String> userMail = new ArrayList<>();
        userMail.add(email);
        String code = this.getSixViladateCode(6);

        HttpSession session = request.getSession();
        session.setMaxInactiveInterval(60*10);
        session.setAttribute(Constant.DEMO_APPLY_CODE,code);

        String title = "[Trackingio]申请演示";
        String content = "您正在进行申请演示操作,验证码为:" + code + "。如非本人操作,请忽略此邮件。";

        boolean resultFlag = true;
        try {

            SendCommonPostMail.sendMailReuse(userMail,title,content,null,null);

        } catch (Exception e) {
            logger.error("发送申请演示验证码邮件错误",e);
            resultFlag = false;
        }

        return resultFlag;
    }

    @Override
    public ResultModel code2EmailCheck(String code, HttpServletRequest request) {

	    Object codeOld = request.getSession().getAttribute(Constant.DEMO_APPLY_CODE);

	    if(codeOld==null){
	        return ResultModel.ERROR(ResultStatus.DEMO_EMAIL_CODE_EXPIRED);
        }

	    if(!StringUtils.equals(codeOld.toString(),code)){
            return ResultModel.ERROR(ResultStatus.DEMO_EMAIL_CODE_ERROR);
        }

        return null;
    }

    private String getSixViladateCode(int length){

        StringBuffer codeBuffer = new StringBuffer();
        for(int i=0;i<length;i++){
            codeBuffer.append(RandomUtils.nextInt(0,9));
        }

        return codeBuffer.toString();

    }
}