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.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;
|
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<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 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();
|
}
|
|
@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<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.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<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().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<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.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<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){
|
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)){
|
//您的【用车申请】已被驳回,驳回原因为:{驳回原因}。如有疑问,请联系派车员。
|
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);
|
}
|
}
|
|
}
|