doum
3 天以前 bc09bc87234065abe7130b84c92f81f143f5f3e7
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/SmsEmailServiceImpl.java
@@ -1,5 +1,6 @@
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;
@@ -7,27 +8,33 @@
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.model.LoginUserInfo;
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.Company;
import com.doumee.dao.business.model.SmsEmail;
import com.doumee.service.business.third.model.PageData;
import com.doumee.service.business.third.model.PageWrap;
import com.doumee.core.utils.*;
import com.doumee.core.wx.wxPlat.WxPlatNotice;
import com.doumee.dao.business.*;
import com.doumee.dao.business.dao.MemberMapper;
import com.doumee.dao.business.dao.SmsConfigMapper;
import com.doumee.dao.business.dao.SmsEmailMapper;
import com.doumee.dao.business.join.VisitsJoinMapper;
import com.doumee.dao.business.model.*;
import com.doumee.dao.business.model.vo.ValidPhoneCodeVO;
import com.doumee.dao.business.model.Member;
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.EmayService;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.commons.lang3.RandomStringUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
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;
import java.util.List;
/**
 * 短信邮件信息表Service实现
@@ -40,15 +47,21 @@
    @Autowired
    private SmsEmailMapper smsEmailMapper;
    @Autowired
    private SystemUserMapper systemUserMapper;
    @Autowired
    private MemberMapper memberMapper;
    @Autowired
    private SystemDictDataBiz systemDictDataBiz;
    @Autowired
    @Lazy
    private EmayService emayService;
    @Autowired
    private SmsConfigMapper smsConfigMapper;
    @Value("${debug_model}")
    private boolean debugModel;
    public static void isCaptcheValide(SmsEmailMapper smsEmailMapper, String phone, String captche) {
    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)
@@ -73,6 +86,51 @@
        smsEmailMapper.updateById(model);
    }
    @Override
    public     void validPhoneCaptcha(ValidPhoneCodeVO param){
       isCaptcheValide(smsEmailMapper,param.getPhone(),param.getCode());
    }
    @Override
    public   SystemUser validDriverPhone(ValidPhoneCodeVO param){
          isCaptcheValide(smsEmailMapper,param.getPhone(),param.getCode());
        SystemUser systemUser = systemUserMapper.selectOne(new QueryWrapper<SystemUser>().lambda()
                .eq(SystemUser::getDeleted,Constants.ZERO)
                .and(i->i.eq(SystemUser::getMobile,param.getPhone()).or().eq(SystemUser::getUsername,param.getPhone()))
                .last("limit 1"));
       if(systemUser !=null){
           return  systemUser;
       }
        String salt = RandomStringUtils.randomAlphabetic(6);
        Member member = new Member();
        member.setCreateDate(new Date());
        member.setIsdeleted(Constants.ZERO);
        member.setType(Constants.memberType.driver);
        member.setPhone(param.getPhone());
        member.setStatus(Constants.ZERO);
        member.setOpenid(param.getOpenId());
        member.setPassward(Utils.Secure.encryptPassword(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.INITIAL_PASSWORD).getCode(), salt));
        memberMapper.insert(member);
        systemUser = new SystemUser();
        systemUser.setCreateTime(new Date());
        systemUser.setDeleted(Boolean.FALSE);
        systemUser.setUsername(param.getPhone());
        systemUser.setRealname(null);
        systemUser.setMemberId(member.getId());
        systemUser.setMobile(param.getPhone());
        systemUser.setSalt(salt);
        systemUser.setPassword(member.getPassward());
        systemUser.setStatus(Constants.ZERO);
        systemUser.setType(Constants.memberType.driver);
        systemUser.setSource(Constants.TWO);
        systemUser.setOpenid(param.getOpenId());
        systemUserMapper.insert(systemUser);
        return systemUser;
    }
    @Override
    public Integer create(SmsEmail smsEmail) {
        smsEmailMapper.insert(smsEmail);
@@ -81,7 +139,7 @@
    @Override
    public Integer sendSms(SmsEmail smsEmail) {
        if(StringUtils.isBlank(smsEmail.getPhone())){
        if(StringUtils.isBlank(smsEmail.getPhone()) || smsEmail.getPhone().length() != 11 ){
            throw  new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        String nowDate = DateUtil.getFomartDate(new Date(),"yyyy-MM-dd HH:mm:ss");
@@ -92,27 +150,27 @@
        )>=3){
            throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"对不起,超出发送次数,请稍后重试!");
        }
        String code = Constants.getRandom6Num();
        String content = systemDictDataBiz.queryByCode(Constants.SMS,Constants.SMS_COMNAME).getCode()+"验证码为:"+code+",此验证码有效为3分钟。请勿泄露";
        boolean result=   emayService.sendSingleSms(smsEmail.getPhone(),content);
        if(!result){
            throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"对不起,短信验证码发送失败,请稍后重试!");
        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.sendSmsByHk(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();
            }
        }
        smsEmail.setRemark(code);
        smsEmail.setIsdeleted(Constants.ZERO);
        smsEmail.setCreateDate(new Date());
        smsEmail.setStatus(Constants.ZERO);
        smsEmail.setType(Constants.ZERO);
        smsEmail.setTitle("短信验证码");
        smsEmail.setContent(content);
        smsEmailMapper.insert(smsEmail);
        return smsEmail.getId();
        return null;
    }
@@ -217,7 +275,10 @@
            queryWrapper.lambda().eq(SmsEmail::getContent, pageWrap.getModel().getContent());
        }
        if (pageWrap.getModel().getPhone() != null) {
            queryWrapper.lambda().eq(SmsEmail::getPhone, pageWrap.getModel().getPhone());
            queryWrapper.lambda().and(wr ->{
                wr.like(SmsEmail::getPhone, pageWrap.getModel().getPhone())
                        .or().like(SmsEmail::getEmail, pageWrap.getModel().getPhone());
            });
        }
        if (pageWrap.getModel().getEmail() != null) {
            queryWrapper.lambda().eq(SmsEmail::getEmail, pageWrap.getModel().getEmail());
@@ -234,13 +295,11 @@
        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());
            }
        }
        queryWrapper.lambda().ge(Objects.nonNull(pageWrap.getModel().getStartTime()),
                SmsEmail::getCreateDate, pageWrap.getModel().getStartTime())
                .le(Objects.nonNull(pageWrap.getModel().getEndTime()),
                        SmsEmail::getCreateDate, pageWrap.getModel().getEndTime())
                .orderByDesc(SmsEmail::getCreateDate);
        return PageData.from(smsEmailMapper.selectPage(page, queryWrapper));
    }
@@ -249,4 +308,400 @@
        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(Constants.equalsInteger(model.getType(),Constants.ZERO)){
                    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());
                        }
                    }
                }else if(Constants.equalsInteger(model.getType(),Constants.TWO)){
                    if(DateUtil.fromStringToDate("yyyy-MM-dd HH:mm:ss",model.getInfo()).getTime() < System.currentTimeMillis()){
                        WxPlatNotice wxPlatNotice = new WxPlatNotice();
                        wxPlatNotice.sendMeetTemplateNotice(systemDictDataBiz,model);
                        model.setStatus(Constants.ONE);//发送成功
                        model.setRemark("微信通知发送成功");
                    }else{
                        model.setStatus(Constants.THREE);//发送成功
                        model.setRemark("微信通知发送失败");
                    }
                }else{
                    continue;
                }
                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,
                                    VisitsJoinMapper 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.selectJoinOne(Visits.class,new MPJLambdaWrapper<Visits>().selectAll(Visits.class)
                                .selectAs(SystemUser::getMobile,Visits::getReceptMemberMobile)
                        .leftJoin(SystemUser.class,SystemUser::getMemberId, Visits::getReceptMemberId)
                        .eq(Visits::getId,objId).last(" limit 1 "));
                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 if(objCode.equals(SmsConstants.visitContent.visitAuditSuccessToVisiter))  {
                        content = content.replace("{预约入园开始时间}",DateUtil.getFomartDate(visits.getStarttime(),"yyyy-MM-dd HH:mm"));
                        sendBusinessSms(emayService,smsEmailMapper,
                                Arrays.asList(visits.getReceptMemberMobile().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,
                                          VisitsJoinMapper 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.selectJoinOne(Visits.class,new MPJLambdaWrapper<Visits>().selectAll(Visits.class)
                        .selectAs(SystemUser::getMobile,Visits::getCreateMobile)
                        .leftJoin(SystemUser.class,SystemUser::getMemberId,Visits::getMemberId)
                        .eq(Visits::getId,objId)
                        .last(" limit   1")
                );
                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.getCreateMobile().split(",")),SmsConstants.visitReport,content,visits.getId());
                    }else if(objCode.equals(SmsConstants.visitReportingContent.visitReportingAuditFail)){
                        //您的【访客报备】已被驳回,驳回原因为:{驳回原因}。如有疑问,请联系审批人。
                        content = content.replace("{驳回原因}",msg);
                        sendBusinessSms(emayService,smsEmailMapper,
                                Arrays.asList(visits.getCreateMobile().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();
        }
    }
    public static void sendVisitReportTimeOutSms(SystemDictDataBiz systemDictDataBiz, EmayService emayService , com.doumee.dao.business.dao.SmsEmailMapper smsEmailMapper ,
                                                 SmsConfigMapper smsConfigMapper,
                                           String objCode, String msg,List<String> mobiles){
        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();
                //超时特殊处理
                if(smsConfig.getCode().equals(SmsConstants.visitReportingContent.visitReportingTimeOutSignOutNum)){
                    //今日还有{未签离数量}个访客报备车辆未离场,请前往PC端查看详细信息。
                    content = content.replace("{未签离数量}",msg);
                    sendBusinessSms(emayService,smsEmailMapper,
                            mobiles,SmsConstants.visitReport,content,0);
                    return;
                }
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }
    public static void sendVisitTimeOutSms(SystemDictDataBiz systemDictDataBiz, EmayService emayService , com.doumee.dao.business.dao.SmsEmailMapper smsEmailMapper ,
                                                 SmsConfigMapper smsConfigMapper,
                                                 String objCode, String msg,List<String> mobiles){
        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();
                //超时特殊处理
                if(smsConfig.getCode().equals(SmsConstants.visitContent.visitTimeOutSignOutNum)){
                    //今日还有{未签离数量}个访客报备车辆未离场,请前往PC端查看详细信息。
                    content = content.replace("{未签离数量}",msg);
                    sendBusinessSms(emayService,smsEmailMapper,
                            mobiles,SmsConstants.visit,content,0);
                    return;
                }
            }
        }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,String hiddenParam){
        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().replace("{隐患类型}",hiddenParam);
                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)){
                        //您的【用车申请】已被驳回,驳回原因为:{驳回原因}。如有疑问,请联系派车员。
                        if(StringUtils.isBlank(msg)){
                            msg = "其他原因";
                        }
                        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);
        }
    }
}