package com.fdkankan.ucenter.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.fdkankan.common.exception.BusinessException;
import com.fdkankan.ucenter.common.constants.ResultCode;
import com.fdkankan.ucenter.entity.*;
import com.fdkankan.ucenter.mapper.IMailTemplateMapper;
import com.fdkankan.ucenter.service.IMailTemplateService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fdkankan.ucenter.service.IScenePlusExtService;
import com.fdkankan.ucenter.util.SendMailUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;
/**
*
* 服务实现类
*
*
* @author
* @since 2023-01-10
*/
@Service
@Slf4j
public class MailTemplateServiceImpl extends ServiceImpl implements IMailTemplateService {
@Autowired
IScenePlusExtService scenePlusExtService;
@Override
public Boolean sendMail(String email , MailTemplate mailTemplate, String file) {
if(mailTemplate == null){
throw new BusinessException(ResultCode.FAILURE_CODE_400005,ResultCode.FAILURE_MSG_400005);
}
return SendMailUtils.sendMail(mailTemplate.getSendMail(), mailTemplate.getSendPassword(), mailTemplate.getSendHost(),
email, mailTemplate.getSubject(), mailTemplate.getMsg(), file);
}
@Override
public MailTemplate getTemplate(Integer type,String lang) {
LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
wrapper.eq(MailTemplate::getType,type);
wrapper.eq(MailTemplate::getLang,lang);
return this.getOne(wrapper);
}
@Override
public Boolean sendCodeMail(String email, String code,String lang) {
MailTemplate mailTemplate = this.getTemplate(2,lang);
if(mailTemplate != null){
String msg = mailTemplate.getMsg();
if(StringUtils.isNotBlank(code)){
msg = msg.replace("{code}",code);
}
mailTemplate.setMsg(msg);
}
return sendMail(email,mailTemplate,null);
}
@Override
public Boolean sendPeExMail(String email) {
MailTemplate mailTemplate = this.getTemplate(3,"en");
return sendMail(email,mailTemplate,null);
}
@Override
public Boolean sendPeNoExMail(String email,Integer day) {
MailTemplate mailTemplate = this.getTemplate(4,"en");
if(mailTemplate != null){
String msg = mailTemplate.getMsg();
if(day != null && day >0){
msg = msg.replace("{day}",day.toString());
}
mailTemplate.setMsg(msg);
}
return sendMail(email,mailTemplate,null);
}
@Override
public Boolean sendPeTodayExMail(String email) {
MailTemplate mailTemplate = this.getTemplate(5,"en");
return sendMail(email,mailTemplate,null);
}
@Override
public Boolean sendSceneCooperation(List proList, List plusList, String username,String lang) {
try {
if(proList.size()<=0 && plusList.size() <=0){
return false;
}
StringBuilder webSites = new StringBuilder();
for (ScenePro scenePro : proList) {
webSites.append(scenePro.getWebSite()).append("
");
}
for (ScenePlus scenePlus : plusList) {
ScenePlusExt scenePlusExt = scenePlusExtService.getByPlusId(scenePlus.getId());
if(scenePlusExt != null){
webSites.append(scenePlusExt.getWebSite()).append("
");
}
}
if(StringUtils.isBlank(webSites)){
return false;
}
MailTemplate mailTemplate = this.getTemplate(6,lang);
if(mailTemplate != null){
String msg = mailTemplate.getMsg();
if(StringUtils.isNotBlank(webSites)){
msg = msg.replace("{sceneWebSites}",webSites.toString());
}
mailTemplate.setMsg(msg);
}
return sendMail(username,mailTemplate,null);
}catch (Exception e){
log.error("邮件发送失败,type:{},error:{}","协作场景邮件",e);
}
return false;
}
@Override
public Boolean sendCameraCooperation(HashMap cameraMap, String username, String lang) {
try {
if(cameraMap.size()<=0 ){
return false;
}
StringBuilder snCodes = new StringBuilder();
for (Long cameraId : cameraMap.keySet()) {
if(cameraMap.get(cameraId) != null){
snCodes.append(cameraMap.get(cameraId).getSnCode()).append("
");
}
}
if(StringUtils.isBlank(snCodes)){
return false;
}
MailTemplate mailTemplate = this.getTemplate(8,lang);
if(mailTemplate != null){
String msg = mailTemplate.getMsg();
if(StringUtils.isNotBlank(snCodes)){
msg = msg.replace("{snCodes}",snCodes.toString());
}
mailTemplate.setMsg(msg);
}
return sendMail(username,mailTemplate,null);
}catch (Exception e){
log.error("邮件发送失败,type:{},error:{}","协作场景邮件",e);
}
return false;
}
}