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.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.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 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(com.doumee.dao.business.dao.SmsEmailMapper smsEmailMapper, String phone, String captche) { SmsEmail model = smsEmailMapper.selectOne(new QueryWrapper().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 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().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); return smsEmail.getId(); } @Override public Integer sendSms(SmsEmail smsEmail) { 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"); if(smsEmailMapper.selectCount(new QueryWrapper().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().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(); } } 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 deleteWrapper = new UpdateWrapper<>(smsEmail); smsEmailMapper.delete(deleteWrapper); } @Override public void deleteByIdInBatch(List ids) { if (CollectionUtils.isEmpty(ids)) { return; } smsEmailMapper.deleteBatchIds(ids); } @Override public void updateById(SmsEmail smsEmail) { smsEmailMapper.updateById(smsEmail); } @Override public void updateByIdInBatch(List 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 wrapper = new QueryWrapper<>(smsEmail); return smsEmailMapper.selectOne(wrapper); } @Override public List findList(SmsEmail smsEmail) { QueryWrapper wrapper = new QueryWrapper<>(smsEmail); return smsEmailMapper.selectList(wrapper); } @Override public PageData findPage(PageWrap pageWrap) { IPage page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); QueryWrapper 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().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()); } 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()); } 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)); } @Override public long count(SmsEmail smsEmail) { QueryWrapper wrapper = new QueryWrapper<>(smsEmail); return smsEmailMapper.selectCount(wrapper); } @Override public void sendWaitingSmsNotice(){ LambdaQueryWrapper wrapper = new LambdaQueryWrapper() .eq(SmsEmail::getIsdeleted,Constants.ZERO) .eq(SmsEmail::getStatus,Constants.TWO); List smsEmails = smsEmailMapper.selectList(wrapper); if(smsEmails!=null && smsEmails.size()>0){ for(SmsEmail model : smsEmails){ if(Constants.equalsInteger(model.getType(),Constants.ONE)){ 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,systemDictDataBiz.queryByCode(Constants.WX_PLATFORM, Constants.WX_PLATFORM_ACCESS_TOKEN).getCode()); 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 auditUser){ try{ SmsConfig smsConfig = smsConfigMapper.selectOne(new QueryWrapper().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().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 auditUser){ try{ SmsConfig smsConfig = smsConfigMapper.selectOne(new QueryWrapper().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().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 mobiles){ try{ SmsConfig smsConfig = smsConfigMapper.selectOne(new QueryWrapper().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 mobiles){ try{ SmsConfig smsConfig = smsConfigMapper.selectOne(new QueryWrapper().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 auditUser){ try{ SmsConfig smsConfig = smsConfigMapper.selectOne(new QueryWrapper().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 userList){ //您有一条【用车申请】需要处理,详细信息请前往微信公众号查看。 try{ SmsConfig smsConfig = smsConfigMapper.selectOne(new QueryWrapper().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 auditUser){ try{ SmsConfig smsConfig = smsConfigMapper.selectOne(new QueryWrapper().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().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 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); } } }