111
k94314517
2024-02-05 15e588eb6a7549ecd2aaffb45e67f11e68354eb6
server/service/src/main/java/com/doumee/service/business/impl/SmsEmailServiceImpl.java
@@ -1,7 +1,12 @@
package com.doumee.service.business.impl;
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.DateUtil;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.SmsEmailMapper;
import com.doumee.dao.business.model.SmsEmail;
@@ -10,10 +15,15 @@
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.doumee.service.business.third.EmailService;
import com.doumee.service.business.third.EmayService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.Date;
import java.util.List;
/**
@@ -26,12 +36,91 @@
    @Autowired
    private SmsEmailMapper smsEmailMapper;
    @Autowired
    private SystemDictDataBiz systemDictDataBiz;
    @Autowired
    private EmayService emayService;
    @Autowired
    private EmailService emailService;
    public static void isCaptcheValide(SmsEmailMapper smsEmailMapper, String phone, String captche) {
        SmsEmail model = smsEmailMapper.selectOne(new QueryWrapper<SmsEmail>().lambda()
                .eq(SmsEmail::getType, Constants.ZERO)
                .eq(SmsEmail::getPhone, phone)
                .eq(SmsEmail::getRemark, captche)
                .eq(SmsEmail::getIsdeleted, Constants.ZERO)
        );
        if(model == null){
            throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,验证码不正确,请重新发送再试!");
        }
        if(!Constants.equalsInteger(model.getStatus(),Constants.ZERO)){
            throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,验证码已失效,请重新发送再试!");
        }
        if(model.getCreateDate() !=null && System.currentTimeMillis() - model.getCreateDate().getTime() > 3*60*100){
            model.setStatus(Constants.ONE);
            model.setEditDate(new Date());
            smsEmailMapper.updateById(model);
            throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,验证码已失效,请重新发送再试~");
        }
        model.setStatus(Constants.ONE);
        model.setEditDate(new Date());
        smsEmailMapper.updateById(model);
    }
    @Override
    public Integer create(SmsEmail smsEmail) {
        smsEmailMapper.insert(smsEmail);
        return smsEmail.getId();
    }
    @Override
    public Integer sendEmail(SmsEmail smsEmail) {
        if(StringUtils.isBlank(smsEmail.getEmail())){
            throw  new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        boolean result=   emailService.sendEmail(smsEmail.getEmail(),smsEmail.getTitle(),smsEmail.getContent(),smsEmail.getFileList());
        smsEmail.setRemark("邮件发生成功");
        if(!result){
            smsEmail.setRemark("邮件发生失败");
        }
        smsEmail.setIsdeleted(Constants.ZERO);
        smsEmail.setCreateDate(new Date());
        smsEmail.setStatus(Constants.ONE);
        smsEmail.setType(Constants.TWO);
        smsEmailMapper.insert(smsEmail);
        return smsEmail.getId();
    }
    @Override
    public Integer sendSms(SmsEmail smsEmail) {
        if(StringUtils.isBlank(smsEmail.getPhone())){
            throw  new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        String nowDate = DateUtil.getFomartDate(new Date(),"yyyy-MM-dd HH:mm:ss");
        if(smsEmailMapper.selectCount(new QueryWrapper<SmsEmail>().lambda()
                .eq(SmsEmail::getPhone,smsEmail.getPhone())
                .eq(SmsEmail::getType,Constants.ZERO)
                .between(SmsEmail::getCreateDate, DateUtil.getFomartDate(DateUtil.afterMinutesDate(-5),"yyyy-MM-dd HH:mm:ss"),nowDate)
        )>=3){
            throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"对不起,超出发送次数,请稍后重试!");
        }
        String code = Constants.getRandom6Num();
        boolean result=   emayService.sendSingleSms(smsEmail.getPhone(),code);
        if(!result){
            throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"对不起,短信验证码发送失败,请稍后重试!");
        }
        smsEmail.setRemark(code);
        smsEmail.setIsdeleted(Constants.ZERO);
        smsEmail.setCreateDate(new Date());
        smsEmail.setStatus(Constants.ZERO);
        smsEmail.setType(Constants.ZERO);
        smsEmail.setTitle("短信验证码");
        smsEmail.setContent(systemDictDataBiz.queryByCode(Constants.SMS,Constants.SMS_COMNAME).getCode()+"验证码为:"+code+",此验证码有效为3分钟。请勿泄露");
        smsEmailMapper.insert(smsEmail);
        return smsEmail.getId();
    }
    @Override
    public void deleteById(Integer id) {