rk
2 天以前 5df732ffe16b3f162422c2db61a78458e28c7f8d
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/SmsEmailServiceImpl.java
@@ -8,15 +8,24 @@
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;
@@ -37,6 +46,10 @@
    @Autowired
    private SmsEmailMapper smsEmailMapper;
    @Autowired
    private SystemUserMapper systemUserMapper;
    @Autowired
    private MemberMapper memberMapper;
    @Autowired
    private SystemDictDataBiz systemDictDataBiz;
    @Autowired
@@ -76,6 +89,49 @@
    @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);
        return smsEmail.getId();
@@ -83,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");
@@ -219,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());
@@ -236,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));
    }
@@ -259,25 +316,38 @@
        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);
                        model.setStatus(Constants.ONE);//发送成功
                        model.setRemark("微信通知发送成功");
                    }else{
                        model.setStatus(Constants.THREE);//发送成功
                        model.setRemark("微信通知发送失败");
                    }
                }else{
                    continue;
                }
                model.setEditDate(new Date());
                smsEmailMapper.updateById(model);
            }
        }
    }
    /**
     * 访客申请业务短信通知
     * @param systemDictDataBiz
@@ -291,17 +361,21 @@
     * @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){
                                    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.selectById(objId);
                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());
@@ -320,6 +394,10 @@
                        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,
@@ -345,26 +423,31 @@
     * @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){
                                          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.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"));
@@ -446,13 +529,13 @@
     * @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){
                                           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();
                String content = systemDictDataBiz.queryByCode(Constants.SMS,Constants.SMS_COMNAME).getCode() + smsConfig.getContent().replace("{隐患类型}",hiddenParam);
                HiddenDanger hiddenDanger = hiddenDangerMapper.selectById(objId);
                //您有一条【隐患随手拍-消防隐患】需要处理,详细信息请前往微信公众号查看
                //您提交的【隐患随手拍-消防隐患】已经处理完毕,详细信息请前往微信公众号查看。