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.NacosProperty;
import com.fdkankan.ucenter.common.constants.ResultCodeMsg;
import com.fdkankan.ucenter.entity.*;
import com.fdkankan.ucenter.mapper.IMailTemplateMapper;
import com.fdkankan.ucenter.mq.vo.LaserSendMail;
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(ResultCodeMsg.FAILURE_CODE_400005, ResultCodeMsg.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) {
if(NacosProperty.uploadType.equals("aws")){
lang = "en";
}else {
lang = "zh";
}
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,String memberLevels) {
MailTemplate mailTemplate = this.getTemplate(3,"en");
if(mailTemplate != null){
String msg = mailTemplate.getMsg();
if(StringUtils.isNotBlank(memberLevels)){
msg = msg.replace("{memberLevels}",getMemberLeversMsg(memberLevels));
msg = msg.replace("{money}",getMoney(memberLevels));
msg = msg.replace("{time}",getTime(memberLevels));
}
mailTemplate.setMsg(msg);
}
return sendMail(email,mailTemplate,null);
}
@Override
public Boolean sendPeNoExMail(String email,Integer day,String memberLevels) {
MailTemplate mailTemplate = this.getTemplate(4,"en");
if(mailTemplate != null){
String msg = mailTemplate.getMsg();
if(StringUtils.isNotBlank(memberLevels)){
msg = msg.replace("{memberLevels}",getMemberLeversMsg(memberLevels));
msg = msg.replace("{money}",getMoney(memberLevels));
msg = msg.replace("{time}",getTime(memberLevels));
}
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,String memberLevels) {
MailTemplate mailTemplate = this.getTemplate(5,"en");
if(mailTemplate != null){
String msg = mailTemplate.getMsg();
if(StringUtils.isNotBlank(memberLevels)){
msg = msg.replace("{memberLevels}",getMemberLeversMsg(memberLevels));
msg = msg.replace("{money}",getMoney(memberLevels));
msg = msg.replace("{time}",getTime(memberLevels));
}
mailTemplate.setMsg(msg);
}
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 sendSceneCooperation(List vos) {
try {
if(vos.isEmpty()){
return false;
}
StringBuilder webSites = new StringBuilder();
String username = null;
for (LaserSendMail vo : vos) {
username = vo.getUserName();
webSites.append(vo.getWebSite()).append("
");
}
if(StringUtils.isBlank(username)){
return false;
}
if(StringUtils.isBlank(webSites)){
return false;
}
MailTemplate mailTemplate = this.getTemplate(6,"en");
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).getWifiName()).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;
}
@Override
public void sendPayErrorMail(String email,String memberLevels) {
MailTemplate mailTemplate = this.getTemplate(9,"en");
if(mailTemplate != null){
String msg = mailTemplate.getMsg();
if(StringUtils.isNotBlank(memberLevels)){
msg = msg.replace("{memberLevels}",getMemberLeversMsg(memberLevels));
msg = msg.replace("{money}",getMoney(memberLevels));
msg = msg.replace("{time}",getTime(memberLevels));
}
mailTemplate.setMsg(msg);
}
sendMail(email,mailTemplate,null);
}
@Override
public void sendSubcriptionCancelledMail(String email, String memberLevels) {
MailTemplate mailTemplate = this.getTemplate(10,"en");
if(mailTemplate != null){
String msg = mailTemplate.getMsg();
if(StringUtils.isNotBlank(memberLevels)){
//PREMIUM/SENIOR
msg = msg.replace("{memberLevels}",getMemberLeversMsg(memberLevels));
}
mailTemplate.setMsg(msg);
}
sendMail(email,mailTemplate,null);
}
public String getMemberLeversMsg(String memberLevels){
switch (memberLevels){
case "PR" :return "PREMIUM";
case "SE" :return "SENIOR";
}
return "PREMIUM/SENIOR";
}
public String getTime(String memberLevels){
switch (memberLevels){
case "PR" :return "year";
case "SE" :return "month";
}
return "year/month";
}
public String getMoney(String memberLevels){
switch (memberLevels){
case "PR" :return "$980";
case "SE" :return "$40";
}
return "$980/$40";
}
}