|  |  | 
 |  |  | 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.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.springframework.beans.factory.annotation.Autowired; | 
 |  |  | import org.springframework.beans.factory.annotation.Value; | 
 |  |  | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private SmsEmailMapper smsEmailMapper; | 
 |  |  |     @Autowired | 
 |  |  |     private SystemUserMapper systemUserMapper; | 
 |  |  |     @Autowired | 
 |  |  |     private MemberMapper memberMapper; | 
 |  |  |     @Autowired | 
 |  |  |     private SystemDictDataBiz systemDictDataBiz; | 
 |  |  |     @Autowired | 
 |  |  | 
 |  |  |        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); | 
 |  |  |         return smsEmail.getId(); | 
 |  |  | 
 |  |  |  | 
 |  |  |     @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"); | 
 |  |  | 
 |  |  |             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()); | 
 |  |  | 
 |  |  |         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)); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | 
 |  |  |         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){ | 
 |  |  |                 if(Constants.equalsInteger(model.getType(),Constants.ZERO)){ | 
 |  |  |                     if(model.getPhone() == null){ | 
 |  |  |                         model.setStatus(Constants.THREE);//发送失败 | 
 |  |  |                         model.setRemark("短信任务发送失败!"+e.getMessage()); | 
 |  |  |                         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 | 
 |  |  | 
 |  |  |             //开启短信通知 | 
 |  |  |             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); | 
 |  |  |                 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.getPhone().split(",")),SmsConstants.visitReport,content,visits.getId()); | 
 |  |  |                                 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.getPhone().split(",")),SmsConstants.visitReport,content,visits.getId()); | 
 |  |  |                                 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")); |