package com.doumee.service.business.impl; 
 | 
  
 | 
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 
 | 
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 
 | 
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.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.*; 
 | 
import com.doumee.dao.business.*; 
 | 
import com.doumee.dao.business.dao.SmsConfigMapper; 
 | 
import com.doumee.dao.business.dao.SmsEmailMapper; 
 | 
import com.doumee.dao.business.model.*; 
 | 
import com.doumee.dao.system.SystemUserMapper; 
 | 
import com.doumee.dao.system.model.SystemUser; 
 | 
import com.doumee.service.business.SmsEmailService; 
 | 
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.context.annotation.Lazy; 
 | 
import org.springframework.stereotype.Service; 
 | 
import org.springframework.util.CollectionUtils; 
 | 
  
 | 
import java.util.*; 
 | 
import java.util.Date; 
 | 
  
 | 
/** 
 | 
 * 短信邮件信息表Service实现 
 | 
 * @author 江蹄蹄 
 | 
 * @date 2024/01/16 10:03 
 | 
 */ 
 | 
@Service 
 | 
public class SmsEmailServiceImpl implements SmsEmailService { 
 | 
  
 | 
    @Autowired 
 | 
    private SmsEmailMapper smsEmailMapper; 
 | 
    @Autowired 
 | 
    private SystemDictDataBiz systemDictDataBiz; 
 | 
    @Autowired 
 | 
    @Lazy 
 | 
    private EmayService emayService; 
 | 
    @Autowired 
 | 
    private SmsConfigMapper smsConfigMapper; 
 | 
    @Autowired 
 | 
    private SystemUserMapper systemUserMapper; 
 | 
  
 | 
    @Value("${debug_model}") 
 | 
    private boolean debugModel; 
 | 
  
 | 
    public static void isCaptcheValide(com.doumee.dao.business.dao.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*1000){ 
 | 
            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 sendSms(SmsEmail smsEmail) { 
 | 
        if(StringUtils.isBlank(smsEmail.getPhone())){ 
 | 
            throw  new BusinessException(ResponseStatus.BAD_REQUEST); 
 | 
        } 
 | 
        //根据手机号查询用户 
 | 
        if(systemUserMapper.selectCount(new QueryWrapper<SystemUser>().lambda().eq(SystemUser::getMobile,smsEmail.getPhone()))==Constants.ZERO){ 
 | 
            throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"对不起,手机号无效请检查后重试!"); 
 | 
        }; 
 | 
        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(); 
 | 
        SmsConfig smsConfig = smsConfigMapper.selectOne(new QueryWrapper<SmsConfig>().lambda().eq(SmsConfig::getObjType, 
 | 
                SmsConstants.inventCode).last(" limit 1 ")); 
 | 
        //开启短信通知 
 | 
        if(Objects.nonNull(smsConfig) || Constants.equalsInteger(smsConfig.getStatus(),Constants.ZERO)){ 
 | 
            if(StringUtils.isNotBlank(smsConfig.getContent())){ 
 | 
                String content  = smsConfig.getContent().replace("{验证码}",code); 
 | 
                emayService.sendSingleSms(smsEmail.getPhone(),content); 
 | 
                smsEmail.setRemark(code); 
 | 
                smsEmail.setIsdeleted(Constants.ZERO); 
 | 
                smsEmail.setCreateDate(new Date()); 
 | 
                smsEmail.setStatus(Constants.ZERO); 
 | 
                smsEmail.setType(Constants.ZERO); 
 | 
                smsEmail.setTitle("短信验证码"); 
 | 
                smsEmail.setContent(content); 
 | 
                smsEmail.setObjType(Constants.ZERO+""); 
 | 
                smsEmailMapper.insert(smsEmail); 
 | 
                return smsEmail.getId(); 
 | 
            } 
 | 
        } 
 | 
        return null; 
 | 
    } 
 | 
  
 | 
  
 | 
    @Override 
 | 
    public void validateCode(String code,String phone) { 
 | 
        if(StringUtils.isBlank(code)){ 
 | 
            throw new BusinessException(ResponseStatus.BAD_REQUEST); 
 | 
        } 
 | 
        if(debugModel){ 
 | 
            return; 
 | 
        } 
 | 
        SmsEmailServiceImpl.isCaptcheValide(smsEmailMapper,phone,code); 
 | 
    } 
 | 
  
 | 
  
 | 
    @Override 
 | 
    public void deleteById(Integer id) { 
 | 
        smsEmailMapper.deleteById(id); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void delete(SmsEmail smsEmail) { 
 | 
        UpdateWrapper<SmsEmail> deleteWrapper = new UpdateWrapper<>(smsEmail); 
 | 
        smsEmailMapper.delete(deleteWrapper); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void deleteByIdInBatch(List<Integer> ids) { 
 | 
        if (CollectionUtils.isEmpty(ids)) { 
 | 
            return; 
 | 
        } 
 | 
        smsEmailMapper.deleteBatchIds(ids); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void updateById(SmsEmail smsEmail) { 
 | 
        smsEmailMapper.updateById(smsEmail); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void updateByIdInBatch(List<SmsEmail> smsEmails) { 
 | 
        if (CollectionUtils.isEmpty(smsEmails)) { 
 | 
            return; 
 | 
        } 
 | 
        for (SmsEmail smsEmail: smsEmails) { 
 | 
            this.updateById(smsEmail); 
 | 
        } 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public SmsEmail findById(Integer id) { 
 | 
        return smsEmailMapper.selectById(id); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public SmsEmail findOne(SmsEmail smsEmail) { 
 | 
        QueryWrapper<SmsEmail> wrapper = new QueryWrapper<>(smsEmail); 
 | 
        return smsEmailMapper.selectOne(wrapper); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public List<SmsEmail> findList(SmsEmail smsEmail) { 
 | 
        QueryWrapper<SmsEmail> wrapper = new QueryWrapper<>(smsEmail); 
 | 
        return smsEmailMapper.selectList(wrapper); 
 | 
    } 
 | 
   
 | 
    @Override 
 | 
    public PageData<SmsEmail> findPage(PageWrap<SmsEmail> pageWrap) { 
 | 
        IPage<SmsEmail> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); 
 | 
        QueryWrapper<SmsEmail> queryWrapper = new QueryWrapper<>(); 
 | 
        Utils.MP.blankToNull(pageWrap.getModel()); 
 | 
        if (pageWrap.getModel().getId() != null) { 
 | 
            queryWrapper.lambda().eq(SmsEmail::getId, pageWrap.getModel().getId()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getCreator() != null) { 
 | 
            queryWrapper.lambda().eq(SmsEmail::getCreator, pageWrap.getModel().getCreator()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getCreateDate() != null) { 
 | 
            queryWrapper.lambda().ge(SmsEmail::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate())); 
 | 
            queryWrapper.lambda().le(SmsEmail::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate())); 
 | 
        } 
 | 
        if (pageWrap.getModel().getEditor() != null) { 
 | 
            queryWrapper.lambda().eq(SmsEmail::getEditor, pageWrap.getModel().getEditor()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getEditDate() != null) { 
 | 
            queryWrapper.lambda().ge(SmsEmail::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate())); 
 | 
            queryWrapper.lambda().le(SmsEmail::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate())); 
 | 
        } 
 | 
        if (pageWrap.getModel().getIsdeleted() != null) { 
 | 
            queryWrapper.lambda().eq(SmsEmail::getIsdeleted, pageWrap.getModel().getIsdeleted()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getRemark() != null) { 
 | 
            queryWrapper.lambda().eq(SmsEmail::getRemark, pageWrap.getModel().getRemark()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getTitle() != null) { 
 | 
            queryWrapper.lambda().eq(SmsEmail::getTitle, pageWrap.getModel().getTitle()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getInfo() != null) { 
 | 
            queryWrapper.lambda().eq(SmsEmail::getInfo, pageWrap.getModel().getInfo()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getContent() != null) { 
 | 
            queryWrapper.lambda().eq(SmsEmail::getContent, pageWrap.getModel().getContent()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getPhone() != null) { 
 | 
            queryWrapper.lambda().eq(SmsEmail::getPhone, pageWrap.getModel().getPhone()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getEmail() != null) { 
 | 
            queryWrapper.lambda().eq(SmsEmail::getEmail, pageWrap.getModel().getEmail()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getStatus() != null) { 
 | 
            queryWrapper.lambda().eq(SmsEmail::getStatus, pageWrap.getModel().getStatus()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getType() != null) { 
 | 
            queryWrapper.lambda().eq(SmsEmail::getType, pageWrap.getModel().getType()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getObjId() != null) { 
 | 
            queryWrapper.lambda().eq(SmsEmail::getObjId, pageWrap.getModel().getObjId()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getObjType() != null) { 
 | 
            queryWrapper.lambda().eq(SmsEmail::getObjType, pageWrap.getModel().getObjType()); 
 | 
        } 
 | 
        for(PageWrap.SortData sortData: pageWrap.getSorts()) { 
 | 
            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) { 
 | 
                queryWrapper.orderByDesc(sortData.getProperty()); 
 | 
            } else { 
 | 
                queryWrapper.orderByAsc(sortData.getProperty()); 
 | 
            } 
 | 
        } 
 | 
        return PageData.from(smsEmailMapper.selectPage(page, queryWrapper)); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public long count(SmsEmail smsEmail) { 
 | 
        QueryWrapper<SmsEmail> wrapper = new QueryWrapper<>(smsEmail); 
 | 
        return smsEmailMapper.selectCount(wrapper); 
 | 
    } 
 | 
    @Override 
 | 
    public void sendWaitingSmsNotice(){ 
 | 
        LambdaQueryWrapper<SmsEmail> wrapper = new LambdaQueryWrapper<SmsEmail>() 
 | 
                .eq(SmsEmail::getIsdeleted,Constants.ZERO) 
 | 
                .eq(SmsEmail::getStatus,Constants.TWO); 
 | 
        List<SmsEmail> smsEmails = smsEmailMapper.selectList(wrapper); 
 | 
        if(smsEmails!=null && smsEmails.size()>0){ 
 | 
            for(SmsEmail model : smsEmails){ 
 | 
                if(model.getPhone() == null){ 
 | 
                    model.setStatus(Constants.THREE);//发送失败 
 | 
                    model.setRemark("手机号为空,取消任务发送!"); 
 | 
                }else{ 
 | 
                    try { 
 | 
                        emayService.sendSmsByHk(model.getPhone(),model.getContent()); 
 | 
                        model.setStatus(Constants.ONE);//发送成功 
 | 
                        model.setRemark("短信任务发送成功"); 
 | 
                    }catch (Exception e){ 
 | 
                        model.setStatus(Constants.THREE);//发送失败 
 | 
                        model.setRemark("短信任务发送失败!"+e.getMessage()); 
 | 
                    } 
 | 
                } 
 | 
                model.setEditDate(new Date()); 
 | 
                smsEmailMapper.updateById(model); 
 | 
            } 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 访客申请业务短信通知 
 | 
     * @param systemDictDataBiz 
 | 
     * @param emayService 
 | 
     * @param smsEmailMapper 
 | 
     * @param smsConfigMapper 
 | 
     * @param visitsMapper 
 | 
     * @param objId 
 | 
     * @param objCode 
 | 
     * @param msg 
 | 
     * @param auditUser 
 | 
     */ 
 | 
    public static void sendVisitSms(SystemDictDataBiz systemDictDataBiz, EmayService emayService , com.doumee.dao.business.dao.SmsEmailMapper smsEmailMapper , SmsConfigMapper smsConfigMapper, 
 | 
                                    VisitsMapper visitsMapper, Integer objId, String objCode, String msg, List<String> auditUser){ 
 | 
        try{ 
 | 
            SmsConfig smsConfig = smsConfigMapper.selectOne(new QueryWrapper<SmsConfig>().lambda().eq(SmsConfig::getCode, 
 | 
                    objCode).last(" limit 1 ")); 
 | 
            //开启短信通知 
 | 
            if(Objects.nonNull(smsConfig) || Constants.equalsInteger(smsConfig.getStatus(),Constants.ZERO)){ 
 | 
                String content = systemDictDataBiz.queryByCode(Constants.SMS,Constants.SMS_COMNAME).getCode() + smsConfig.getContent(); 
 | 
                Visits visits = visitsMapper.selectById(objId); 
 | 
                if(Objects.nonNull(visits)){ 
 | 
                    if(objCode.equals(SmsConstants.visitContent.visitAuditSuccess)){ 
 | 
                        //您的【访客申请】已经审批通过,请于{预约入园开始时间}前往门卫室访客机签到入园,如有疑问,请联系被访人 
 | 
                        content = content.replace("{预约入园开始时间}",DateUtil.getFomartDate(visits.getStarttime(),"yyyy-MM-dd HH:mm")); 
 | 
                        sendBusinessSms(emayService,smsEmailMapper, 
 | 
                                Arrays.asList(visits.getPhone().split(",")),SmsConstants.visit,content,visits.getId()); 
 | 
                    }else if(objCode.equals(SmsConstants.visitContent.visitAuditFail)){ 
 | 
                        //您的【访客申请】已被驳回,驳回原因为:{驳回原因}。如有疑问,请联系被访人。 
 | 
                        content = content.replace("{驳回原因}",msg); 
 | 
                        sendBusinessSms(emayService,smsEmailMapper, 
 | 
                                Arrays.asList(visits.getPhone().split(",")),SmsConstants.visit,content,visits.getId()); 
 | 
                    }else if(objCode.equals(SmsConstants.visitContent.visitTimeOutSignOut)){ 
 | 
                        //您的【访客申请】已于{到期时间}到期,请及时离场并前往门卫室访客机签离,如有疑问,请联系被访人 
 | 
                        content = content.replace("{到期时间}",DateUtil.getFomartDate(visits.getEndtime(),"yyyy-MM-dd HH:mm")); 
 | 
                        sendBusinessSms(emayService,smsEmailMapper, 
 | 
                                Arrays.asList(visits.getPhone().split(",")),SmsConstants.visit,content,visits.getId()); 
 | 
                    }else if(objCode.equals(SmsConstants.visitContent.visitTimeOutSignOutNum)) { 
 | 
                        //今日还有{未签离数量}个访客未签离,请前往PC端查看详细信息。 
 | 
                        content = content.replace("{未签离数量}",msg); 
 | 
                        sendBusinessSms(emayService,smsEmailMapper, 
 | 
                                Arrays.asList(visits.getPhone().split(",")),SmsConstants.visit,content,visits.getId()); 
 | 
                    }else{ 
 | 
                        //您有一条【车辆入园申请】需要处理,详细信息请前往微信公众号查看。 
 | 
                        sendBusinessSms(emayService,smsEmailMapper, 
 | 
                                auditUser,SmsConstants.platformBook,content,visits.getId()); 
 | 
                    } 
 | 
                } 
 | 
            } 
 | 
        }catch (Exception e){ 
 | 
            e.printStackTrace(); 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 访客报备业务短信通知 
 | 
     * @param systemDictDataBiz 
 | 
     * @param emayService 
 | 
     * @param smsEmailMapper 
 | 
     * @param smsConfigMapper 
 | 
     * @param visitsMapper 
 | 
     * @param objId 
 | 
     * @param objCode 
 | 
     * @param msg 
 | 
     * @param auditUser 
 | 
     */ 
 | 
    public static void sendVisitReportSms(SystemDictDataBiz systemDictDataBiz, EmayService emayService , com.doumee.dao.business.dao.SmsEmailMapper smsEmailMapper , SmsConfigMapper smsConfigMapper, 
 | 
                                          VisitsMapper visitsMapper, Integer objId, String objCode, String msg, List<String> auditUser){ 
 | 
        try{ 
 | 
            SmsConfig smsConfig = smsConfigMapper.selectOne(new QueryWrapper<SmsConfig>().lambda().eq(SmsConfig::getCode, 
 | 
                    objCode).last(" limit 1 ")); 
 | 
            //开启短信通知 
 | 
            if(Objects.nonNull(smsConfig) || Constants.equalsInteger(smsConfig.getStatus(),Constants.ZERO)){ 
 | 
                String content = systemDictDataBiz.queryByCode(Constants.SMS,Constants.SMS_COMNAME).getCode() + smsConfig.getContent(); 
 | 
                Visits visits = visitsMapper.selectById(objId); 
 | 
                if(Objects.nonNull(visits)){ 
 | 
                    if(objCode.equals(SmsConstants.visitReportingContent.visitReportingAuditSuccess)){ 
 | 
                        // 您的【访客报备】已经审批通过,请通知访客于{预约入园开始时间}后乘坐{车牌号}入园,如有疑问,请联系被访人。 
 | 
                        content = content.replace("{预约入园开始时间}",DateUtil.getFomartDate(visits.getStarttime(),"yyyy-MM-dd HH:mm")) 
 | 
                                .replace("{车牌号}",visits.getCarNos()); 
 | 
                        sendBusinessSms(emayService,smsEmailMapper, 
 | 
                                Arrays.asList(visits.getPhone().split(",")),SmsConstants.visitReport,content,visits.getId()); 
 | 
                    }else if(objCode.equals(SmsConstants.visitReportingContent.visitReportingAuditFail)){ 
 | 
                        //您的【访客报备】已被驳回,驳回原因为:{驳回原因}。如有疑问,请联系审批人。 
 | 
                        content = content.replace("{驳回原因}",msg); 
 | 
                        sendBusinessSms(emayService,smsEmailMapper, 
 | 
                                Arrays.asList(visits.getPhone().split(",")),SmsConstants.visitReport,content,visits.getId()); 
 | 
                    }else if(objCode.equals(SmsConstants.visitReportingContent.visitReportingTimeOutSignOut)){ 
 | 
                        //您的【访客报备】已于{预约入园结束时间}到期,请及时离场,如有疑问,请联系被访人 
 | 
                        content = content.replace("{预约入园结束时间}",DateUtil.getFomartDate(visits.getEndtime(),"yyyy-MM-dd HH:mm")); 
 | 
                        sendBusinessSms(emayService,smsEmailMapper, 
 | 
                                Arrays.asList(visits.getPhone().split(",")),SmsConstants.visitReport,content,visits.getId()); 
 | 
                    }else if(objCode.equals(SmsConstants.visitReportingContent.visitReportingTimeOutSignOutNum)) { 
 | 
                        //今日还有{未签离数量}个访客报备车辆未离场,请前往PC端查看详细信息。 
 | 
                        content = content.replace("{未签离数量}",msg); 
 | 
                        sendBusinessSms(emayService,smsEmailMapper, 
 | 
                                Arrays.asList(visits.getPhone().split(",")),SmsConstants.visitReport,content,visits.getId()); 
 | 
                    }else{ 
 | 
                        //您有一条【车辆入园申请】需要处理,详细信息请前往微信公众号查看。 
 | 
                        sendBusinessSms(emayService,smsEmailMapper, 
 | 
                                auditUser,SmsConstants.platformBook,content,visits.getId()); 
 | 
                    } 
 | 
                } 
 | 
            } 
 | 
        }catch (Exception e){ 
 | 
            e.printStackTrace(); 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 隐患随手拍 
 | 
     * @param systemDictDataBiz 
 | 
     * @param emayService 
 | 
     * @param smsEmailMapper 
 | 
     * @param smsConfigMapper 
 | 
     * @param hiddenDangerMapper 
 | 
     * @param objId 
 | 
     * @param objCode 
 | 
     * @param auditUser 
 | 
     */ 
 | 
    public static void sendHiddenDangerSms(SystemDictDataBiz systemDictDataBiz, EmayService emayService , com.doumee.dao.business.dao.SmsEmailMapper smsEmailMapper , SmsConfigMapper smsConfigMapper, 
 | 
                                           HiddenDangerMapper hiddenDangerMapper, Integer objId, String objCode, List<String> auditUser){ 
 | 
        try{ 
 | 
            SmsConfig smsConfig = smsConfigMapper.selectOne(new QueryWrapper<SmsConfig>().lambda().eq(SmsConfig::getCode, 
 | 
                    objCode).last(" limit 1 ")); 
 | 
            //开启短信通知 
 | 
            if(Objects.nonNull(smsConfig) || Constants.equalsInteger(smsConfig.getStatus(),Constants.ZERO)){ 
 | 
                String content = systemDictDataBiz.queryByCode(Constants.SMS,Constants.SMS_COMNAME).getCode() + smsConfig.getContent(); 
 | 
                HiddenDanger hiddenDanger = hiddenDangerMapper.selectById(objId); 
 | 
                //您有一条【隐患随手拍-消防隐患】需要处理,详细信息请前往微信公众号查看 
 | 
                //您提交的【隐患随手拍-消防隐患】已经处理完毕,详细信息请前往微信公众号查看。 
 | 
                if(Objects.nonNull(hiddenDanger)){ 
 | 
                        sendBusinessSms(emayService,smsEmailMapper, 
 | 
                                auditUser,SmsConstants.platformBook,content,hiddenDanger.getId()); 
 | 
                } 
 | 
            } 
 | 
        }catch (Exception e){ 
 | 
            e.printStackTrace(); 
 | 
        } 
 | 
    } 
 | 
  
 | 
  
 | 
    /** 
 | 
     * 用车申请 
 | 
     * @param systemDictDataBiz 
 | 
     * @param emayService 
 | 
     * @param smsEmailMapper 
 | 
     * @param smsConfigMapper 
 | 
     * @param carUseBookMapper 
 | 
     * @param objId 
 | 
     * @param objCode 
 | 
     * @param msg 
 | 
     * @param userList 
 | 
     */ 
 | 
    public static void sendCarUseSms(SystemDictDataBiz systemDictDataBiz, EmayService emayService , com.doumee.dao.business.dao.SmsEmailMapper smsEmailMapper , SmsConfigMapper smsConfigMapper, 
 | 
                                     CarUseBookMapper carUseBookMapper, Integer objId, String objCode, String msg, List<String> userList){ 
 | 
        //您有一条【用车申请】需要处理,详细信息请前往微信公众号查看。 
 | 
        try{ 
 | 
            SmsConfig smsConfig = smsConfigMapper.selectOne(new QueryWrapper<SmsConfig>().lambda().eq(SmsConfig::getCode, 
 | 
                    objCode).last(" limit 1 ")); 
 | 
            //开启短信通知 
 | 
            if(Objects.nonNull(smsConfig) || Constants.equalsInteger(smsConfig.getStatus(),Constants.ZERO)){ 
 | 
                String content = systemDictDataBiz.queryByCode(Constants.SMS,Constants.SMS_COMNAME).getCode() + smsConfig.getContent(); 
 | 
                CarUseBook carUseBook = carUseBookMapper.selectById(objId); 
 | 
                if(Objects.nonNull(carUseBook)){ 
 | 
                    if(objCode.equals(SmsConstants.carUseBookContent.carUseBookAuditSuccess)){ 
 | 
                        //您的【用车申请】已经审批通过,出发时间为{提交的出发时间},请按时用车。如用车计划有变,请及时联系派车员。 
 | 
                        content = content.replace("{提交的出发时间}",DateUtil.getFomartDate(carUseBook.getStartTime(),"yyyy-MM-dd HH:mm")); 
 | 
                    }else if(objCode.equals(SmsConstants.carUseBookContent.carUseBookAuditFail) || objCode.equals(SmsConstants.carUseBookContent.carUseBookCancel)){ 
 | 
                        //您的【用车申请】已被驳回,驳回原因为:{驳回原因}。如有疑问,请联系派车员。 
 | 
                        content = content.replace("{驳回原因}",msg); 
 | 
                        //您的【用车申请】已被取消,取消原因为:{取消原因}。如有疑问,请联系派车员。 
 | 
                        content = content.replace("{取消原因}",msg); 
 | 
                    } 
 | 
                    sendBusinessSms(emayService,smsEmailMapper, 
 | 
                            userList,SmsConstants.carUse,content,carUseBook.getId()); 
 | 
                } 
 | 
            } 
 | 
        }catch (Exception e){ 
 | 
            e.printStackTrace(); 
 | 
        } 
 | 
    } 
 | 
  
 | 
  
 | 
    /** 
 | 
     * 物流车预约 短信通知配置 
 | 
     * @param emayService 
 | 
     * @param smsEmailMapper 
 | 
     * @param smsConfigMapper 
 | 
     * @param platformBooksMapper 
 | 
     * @param objId 
 | 
     * @param objCode 
 | 
     * @param msg 
 | 
     * @param auditUser 
 | 
     */ 
 | 
    public static void sendPlatformBookSms(SystemDictDataBiz systemDictDataBiz, EmayService emayService , com.doumee.dao.business.dao.SmsEmailMapper smsEmailMapper , SmsConfigMapper smsConfigMapper, 
 | 
                                           PlatformBooksMapper platformBooksMapper, Integer objId, String objCode, String msg, List<String> auditUser){ 
 | 
        try{ 
 | 
            SmsConfig smsConfig = smsConfigMapper.selectOne(new QueryWrapper<SmsConfig>().lambda().eq(SmsConfig::getCode, 
 | 
                    objCode).last(" limit 1 ")); 
 | 
            //开启短信通知 
 | 
            if(Objects.nonNull(smsConfig) || Constants.equalsInteger(smsConfig.getStatus(),Constants.ZERO)){ 
 | 
                String content = systemDictDataBiz.queryByCode(Constants.SMS,Constants.SMS_COMNAME).getCode() + smsConfig.getContent(); 
 | 
                PlatformBooks platformBooks = platformBooksMapper.selectById(objId); 
 | 
                if(Objects.nonNull(platformBooks)){ 
 | 
                    if(objCode.equals(SmsConstants.platformBookContent.platformBookAuditSuccess)){ 
 | 
                        //您的【车辆入园申请】已经审批通过,入园时间为{入园时间},请提前30分钟前往现场签到。如计划有变,请及时联系审核人员。 
 | 
                        content = content.replace("{入园时间}",DateUtil.getFomartDate(platformBooks.getArriveDate(),"yyyy-MM-dd HH:mm")); 
 | 
                        sendBusinessSms(emayService,smsEmailMapper, 
 | 
                                Arrays.asList(platformBooks.getDriverPhone().split(",")),SmsConstants.platformBook,content,platformBooks.getId()); 
 | 
                    }else if(objCode.equals(SmsConstants.platformBookContent.platformBookAuditFail) || objCode.equals(SmsConstants.platformBookContent.platformBookCancel)){ 
 | 
                        //您的【车辆入园申请】已被驳回,驳回原因为:{驳回原因}。如有疑问,请联系审核人员。 
 | 
                        content = content.replace("{驳回原因}",msg); 
 | 
                        //您的【车辆入园申请】已被取消,取消原因为:{取消原因}。如有疑问,请联系审核人员。 
 | 
                        content = content.replace("{取消原因}",msg); 
 | 
                        sendBusinessSms(emayService,smsEmailMapper, 
 | 
                                Arrays.asList(platformBooks.getDriverPhone().split(",")),SmsConstants.platformBook,content,platformBooks.getId()); 
 | 
                    }else{ 
 | 
                        //您有一条【车辆入园申请】需要处理,详细信息请前往微信公众号查看。 
 | 
                        sendBusinessSms(emayService,smsEmailMapper, 
 | 
                                auditUser,SmsConstants.platformBook,content,platformBooks.getId()); 
 | 
                    } 
 | 
                } 
 | 
            } 
 | 
        }catch (Exception e){ 
 | 
            e.printStackTrace(); 
 | 
        } 
 | 
    } 
 | 
  
 | 
  
 | 
    /** 
 | 
     * 用车申请 短信通知配置 
 | 
     * @param emayService 
 | 
     * @param smsEmailMapper 
 | 
     * @param smsConfigMapper 
 | 
     * @param platformJobMapper 
 | 
     * @param objId 
 | 
     * @param objCode 
 | 
     * @param platformName 
 | 
     */ 
 | 
    public static void sendPlatformJobSms(SystemDictDataBiz systemDictDataBiz, EmayService emayService , com.doumee.dao.business.dao.SmsEmailMapper smsEmailMapper , SmsConfigMapper smsConfigMapper, 
 | 
                                          PlatformJobMapper platformJobMapper, Integer objId, String objCode, String platformName, String newPlatformName){ 
 | 
        //platformJobNewJob    {车牌号}车主您好,您有一个新的运输任务,详细信息请前往微信公众号查看。 
 | 
        //platformJobStopJob    {车牌号}车主您好,您的运输任务已被取消,详细信息请前往微信公众号查看。 
 | 
        //platformJobCallIn    {车牌号}车主您好,请在10分钟内,前往园区等待区等待叫号作业。 
 | 
        //platformJobSingIn    {车牌号}车主您好,请在10分钟内,前往{月台名称}进行作业。 
 | 
        //platformJobOverNum    {车牌号}车主您好,您的任务已过号,请重新签到排队等待。 
 | 
        //platformJobWorking    {车牌号}车主您好,您的车辆已在{月台名称}开始作业,请随时关注作业情况。 
 | 
        //platformJobFinish    {车牌号}车主您好,您的车辆已在{月台名称}完成作业,请及时驶离月台。 
 | 
        //platformJobError    {车牌号}车主您好,您在{月台名称}的作业任务已经被异常挂起,请及时关注具体情况。 
 | 
        //platformJobMove    {车牌号}车主您好,您在{月台名称}的作业任务已经已被转移至{转移后月台名称},请及时关注叫号情况。 
 | 
        //platformJobTimeOut    {车牌号}车主您好,您在{月台名称}已停靠超时,请尽快驶离以免影响后续作业。 
 | 
        try{ 
 | 
            SmsConfig smsConfig = smsConfigMapper.selectOne(new QueryWrapper<SmsConfig>().lambda().eq(SmsConfig::getCode, 
 | 
                    objCode).last(" limit 1 ")); 
 | 
            //开启短信通知 
 | 
            if(Objects.nonNull(smsConfig) || Constants.equalsInteger(smsConfig.getStatus(),Constants.ZERO)){ 
 | 
                String content = systemDictDataBiz.queryByCode(Constants.SMS,Constants.SMS_COMNAME).getCode() + smsConfig.getContent(); 
 | 
                PlatformJob platformJob = platformJobMapper.selectById(objId); 
 | 
                if(Objects.nonNull(platformJob)){ 
 | 
                    content = content.replace("{车牌号}",platformJob.getCarCodeFront()); 
 | 
                    if(StringUtils.isNotBlank(platformName)&&content.indexOf("{月台名称}")>=Constants.ZERO){ 
 | 
                        content = content.replace("{月台名称}",platformName); 
 | 
                    } 
 | 
                    if(StringUtils.isNotBlank(newPlatformName)&&content.indexOf("{转移后月台名称}")>=Constants.ZERO){ 
 | 
                        content = content.replace("{转移后月台名称}",newPlatformName); 
 | 
                    } 
 | 
                    sendBusinessSms(emayService,smsEmailMapper, 
 | 
                            Arrays.asList(platformJob.getDrivierPhone().split(",")),SmsConstants.platformJob,content,platformJob.getId()); 
 | 
                } 
 | 
            } 
 | 
        }catch (Exception e){ 
 | 
            e.printStackTrace(); 
 | 
        } 
 | 
    } 
 | 
  
 | 
    public static void sendBusinessSms(EmayService emayService, SmsEmailMapper smsEmailMapper, List<String> phoneList, String objType, String content, Integer objId){ 
 | 
        for (String phone:phoneList) { 
 | 
            SmsEmail smsEmail = new SmsEmail(); 
 | 
            smsEmail.setIsdeleted(Constants.ZERO); 
 | 
            smsEmail.setCreateDate(new Date()); 
 | 
            smsEmail.setStatus(Constants.ONE); 
 | 
            smsEmail.setType(Constants.ZERO); 
 | 
            smsEmail.setTitle("业务短信"); 
 | 
            smsEmail.setPhone(phone); 
 | 
            smsEmail.setContent(content); 
 | 
            smsEmail.setObjType(objType); 
 | 
            smsEmail.setObjId(objId); 
 | 
            smsEmailMapper.insert(smsEmail); 
 | 
            emayService.sendSmsByHk(phone,content); 
 | 
        } 
 | 
    } 
 | 
  
 | 
  
 | 
  
 | 
    @Override 
 | 
    public Integer sendBillSms(String content,String mobile,Integer billId) { 
 | 
        if(StringUtils.isBlank(mobile)){ 
 | 
            throw  new BusinessException(ResponseStatus.BAD_REQUEST); 
 | 
        } 
 | 
        boolean result=   emayService.sendSingleSms(mobile,content); 
 | 
        if(!result){ 
 | 
            throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"对不起,短信发送失败,请稍后重试!"); 
 | 
        } 
 | 
        SmsEmail smsEmail = new SmsEmail(); 
 | 
        smsEmail.setIsdeleted(Constants.ZERO); 
 | 
        smsEmail.setCreateDate(new Date()); 
 | 
        smsEmail.setStatus(Constants.ZERO); 
 | 
        smsEmail.setType(Constants.ZERO); 
 | 
        smsEmail.setTitle("账单催费"); 
 | 
        smsEmail.setObjId(billId); 
 | 
        smsEmail.setObjType(Constants.ZERO+""); 
 | 
        smsEmail.setContent(content); 
 | 
        smsEmailMapper.insert(smsEmail); 
 | 
        return smsEmail.getId(); 
 | 
    } 
 | 
  
 | 
    @Autowired 
 | 
    private EmailService emailService; 
 | 
  
 | 
    @Override 
 | 
    public Integer sendEmail(String email,String content,Integer billId) { 
 | 
        if(StringUtils.isBlank(email)){ 
 | 
            throw  new BusinessException(ResponseStatus.BAD_REQUEST); 
 | 
        } 
 | 
        boolean result=   emailService.sendEmail(email,"账单催费",content,null); 
 | 
        SmsEmail smsEmail = new SmsEmail(); 
 | 
        smsEmail.setRemark("邮件发生成功"); 
 | 
        if(!result){ 
 | 
            smsEmail.setRemark("邮件发生失败"); 
 | 
        } 
 | 
        smsEmail.setIsdeleted(Constants.ZERO); 
 | 
        smsEmail.setCreateDate(new Date()); 
 | 
        smsEmail.setStatus(Constants.ONE); 
 | 
        smsEmail.setType(Constants.TWO); 
 | 
        smsEmail.setObjId(billId); 
 | 
        smsEmail.setObjType(Constants.ONE+""); 
 | 
        smsEmail.setContent(content); 
 | 
        smsEmailMapper.insert(smsEmail); 
 | 
        return smsEmail.getId(); 
 | 
    } 
 | 
} 
 |