MailTemplateServiceImpl.java 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296
  1. package com.fdkankan.ucenter.service.impl;
  2. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  3. import com.fdkankan.common.exception.BusinessException;
  4. import com.fdkankan.ucenter.common.constants.NacosProperty;
  5. import com.fdkankan.ucenter.common.constants.ResultCodeMsg;
  6. import com.fdkankan.ucenter.entity.*;
  7. import com.fdkankan.ucenter.mapper.IMailTemplateMapper;
  8. import com.fdkankan.ucenter.mq.vo.LaserSendMail;
  9. import com.fdkankan.ucenter.service.IMailTemplateService;
  10. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  11. import com.fdkankan.ucenter.service.IScenePlusExtService;
  12. import com.fdkankan.ucenter.util.SendMailUtils;
  13. import lombok.extern.slf4j.Slf4j;
  14. import org.apache.commons.lang3.StringUtils;
  15. import org.aspectj.apache.bcel.generic.RET;
  16. import org.springframework.beans.factory.annotation.Autowired;
  17. import org.springframework.stereotype.Service;
  18. import java.util.HashMap;
  19. import java.util.List;
  20. /**
  21. * <p>
  22. * 服务实现类
  23. * </p>
  24. *
  25. * @author
  26. * @since 2023-01-10
  27. */
  28. @Service
  29. @Slf4j
  30. public class MailTemplateServiceImpl extends ServiceImpl<IMailTemplateMapper, MailTemplate> implements IMailTemplateService {
  31. @Autowired
  32. IScenePlusExtService scenePlusExtService;
  33. @Override
  34. public Boolean sendMail(String email , MailTemplate mailTemplate, String file) {
  35. if(mailTemplate == null){
  36. throw new BusinessException(ResultCodeMsg.FAILURE_CODE_400005, ResultCodeMsg.FAILURE_MSG_400005);
  37. }
  38. return SendMailUtils.sendMail(mailTemplate.getSendMail(), mailTemplate.getSendPassword(), mailTemplate.getSendHost(),
  39. email, mailTemplate.getSubject(), mailTemplate.getMsg(), file);
  40. }
  41. @Override
  42. public MailTemplate getTemplate(Integer type,String lang) {
  43. if(NacosProperty.uploadType.equals("aws")){
  44. lang = "en";
  45. }else {
  46. lang = "zh";
  47. }
  48. LambdaQueryWrapper<MailTemplate> wrapper = new LambdaQueryWrapper<>();
  49. wrapper.eq(MailTemplate::getType,type);
  50. wrapper.eq(MailTemplate::getLang,lang);
  51. return this.getOne(wrapper);
  52. }
  53. public MailTemplate getTemplateEn(Integer type) {
  54. LambdaQueryWrapper<MailTemplate> wrapper = new LambdaQueryWrapper<>();
  55. wrapper.eq(MailTemplate::getType,type);
  56. wrapper.eq(MailTemplate::getLang,"en");
  57. return this.getOne(wrapper);
  58. }
  59. @Override
  60. public Boolean sendCodeMail(String email, String code,String lang) {
  61. MailTemplate mailTemplate = this.getTemplate(2,lang);
  62. if(mailTemplate != null){
  63. String msg = mailTemplate.getMsg();
  64. if(StringUtils.isNotBlank(code)){
  65. msg = msg.replace("{code}",code);
  66. }
  67. mailTemplate.setMsg(msg);
  68. }
  69. return sendMail(email,mailTemplate,null);
  70. }
  71. @Override
  72. public Boolean sendPeExMail(String email,String memberLevels) {
  73. MailTemplate mailTemplate = this.getTemplate(3,"en");
  74. if(mailTemplate != null){
  75. String msg = mailTemplate.getMsg();
  76. if(StringUtils.isNotBlank(memberLevels)){
  77. msg = msg.replace("{memberLevels}",getMemberLeversMsg(memberLevels));
  78. msg = msg.replace("{money}",getMoney(memberLevels));
  79. msg = msg.replace("{time}",getTime(memberLevels));
  80. }
  81. mailTemplate.setMsg(msg);
  82. }
  83. return sendMail(email,mailTemplate,null);
  84. }
  85. @Override
  86. public Boolean sendPeNoExMail(String email,Integer day,String memberLevels) {
  87. MailTemplate mailTemplate = this.getTemplate(4,"en");
  88. if(mailTemplate != null){
  89. String msg = mailTemplate.getMsg();
  90. if(StringUtils.isNotBlank(memberLevels)){
  91. msg = msg.replace("{memberLevels}",getMemberLeversMsg(memberLevels));
  92. msg = msg.replace("{money}",getMoney(memberLevels));
  93. msg = msg.replace("{time}",getTime(memberLevels));
  94. }
  95. if(day != null && day >0){
  96. msg = msg.replace("{day}",day.toString());
  97. }
  98. mailTemplate.setMsg(msg);
  99. }
  100. return sendMail(email,mailTemplate,null);
  101. }
  102. @Override
  103. public Boolean sendPeTodayExMail(String email,String memberLevels) {
  104. MailTemplate mailTemplate = this.getTemplate(5,"en");
  105. if(mailTemplate != null){
  106. String msg = mailTemplate.getMsg();
  107. if(StringUtils.isNotBlank(memberLevels)){
  108. msg = msg.replace("{memberLevels}",getMemberLeversMsg(memberLevels));
  109. msg = msg.replace("{money}",getMoney(memberLevels));
  110. msg = msg.replace("{time}",getTime(memberLevels));
  111. }
  112. mailTemplate.setMsg(msg);
  113. }
  114. return sendMail(email,mailTemplate,null);
  115. }
  116. @Override
  117. public Boolean sendSceneCooperation(List<ScenePro> proList, List<ScenePlus> plusList, String username,String lang) {
  118. try {
  119. if(proList.size()<=0 && plusList.size() <=0){
  120. return false;
  121. }
  122. StringBuilder webSites = new StringBuilder();
  123. for (ScenePro scenePro : proList) {
  124. webSites.append(scenePro.getWebSite()).append("<br>");
  125. }
  126. for (ScenePlus scenePlus : plusList) {
  127. ScenePlusExt scenePlusExt = scenePlusExtService.getByPlusId(scenePlus.getId());
  128. if(scenePlusExt != null){
  129. webSites.append(scenePlusExt.getWebSite()).append("<br>");
  130. }
  131. }
  132. if(StringUtils.isBlank(webSites)){
  133. return false;
  134. }
  135. MailTemplate mailTemplate = this.getTemplate(6,lang);
  136. if(mailTemplate != null){
  137. String msg = mailTemplate.getMsg();
  138. if(StringUtils.isNotBlank(webSites)){
  139. msg = msg.replace("{sceneWebSites}",webSites.toString());
  140. }
  141. mailTemplate.setMsg(msg);
  142. }
  143. return sendMail(username,mailTemplate,null);
  144. }catch (Exception e){
  145. log.error("邮件发送失败,type:{},error:{}","协作场景邮件",e);
  146. }
  147. return false;
  148. }
  149. @Override
  150. public Boolean sendSceneCooperation(List<LaserSendMail> vos) {
  151. try {
  152. if(vos.isEmpty()){
  153. return false;
  154. }
  155. StringBuilder webSites = new StringBuilder();
  156. String username = null;
  157. for (LaserSendMail vo : vos) {
  158. username = vo.getUserName();
  159. webSites.append(vo.getWebSite()).append("<br>");
  160. }
  161. if(StringUtils.isBlank(username)){
  162. return false;
  163. }
  164. if(StringUtils.isBlank(webSites)){
  165. return false;
  166. }
  167. MailTemplate mailTemplate = this.getTemplate(6,"en");
  168. if(mailTemplate != null){
  169. String msg = mailTemplate.getMsg();
  170. if(StringUtils.isNotBlank(webSites)){
  171. msg = msg.replace("{sceneWebSites}",webSites.toString());
  172. }
  173. mailTemplate.setMsg(msg);
  174. }
  175. return sendMail(username,mailTemplate,null);
  176. }catch (Exception e){
  177. log.error("邮件发送失败,type:{},error:{}","协作场景邮件",e);
  178. }
  179. return false;
  180. }
  181. @Override
  182. public Boolean sendCameraCooperation(HashMap<Long, Camera> cameraMap, String username, String lang) {
  183. try {
  184. if(cameraMap.size()<=0 ){
  185. return false;
  186. }
  187. StringBuilder snCodes = new StringBuilder();
  188. for (Long cameraId : cameraMap.keySet()) {
  189. if(cameraMap.get(cameraId) != null){
  190. snCodes.append(cameraMap.get(cameraId).getWifiName()).append("<br>");
  191. }
  192. }
  193. if(StringUtils.isBlank(snCodes)){
  194. return false;
  195. }
  196. MailTemplate mailTemplate = this.getTemplate(8,lang);
  197. if(mailTemplate != null){
  198. String msg = mailTemplate.getMsg();
  199. if(StringUtils.isNotBlank(snCodes)){
  200. msg = msg.replace("{snCodes}",snCodes.toString());
  201. }
  202. mailTemplate.setMsg(msg);
  203. }
  204. return sendMail(username,mailTemplate,null);
  205. }catch (Exception e){
  206. log.error("邮件发送失败,type:{},error:{}","协作场景邮件",e);
  207. }
  208. return false;
  209. }
  210. @Override
  211. public void sendPayErrorMail(String email,String memberLevels) {
  212. MailTemplate mailTemplate = this.getTemplate(9,"en");
  213. if(mailTemplate != null){
  214. String msg = mailTemplate.getMsg();
  215. if(StringUtils.isNotBlank(memberLevels)){
  216. msg = msg.replace("{memberLevels}",getMemberLeversMsg(memberLevels));
  217. msg = msg.replace("{money}",getMoney(memberLevels));
  218. msg = msg.replace("{time}",getTime(memberLevels));
  219. }
  220. mailTemplate.setMsg(msg);
  221. }
  222. sendMail(email,mailTemplate,null);
  223. }
  224. @Override
  225. public void sendSubcriptionCancelledMail(String email, String memberLevels) {
  226. MailTemplate mailTemplate = this.getTemplate(10,"en");
  227. if(mailTemplate != null){
  228. String msg = mailTemplate.getMsg();
  229. if(StringUtils.isNotBlank(memberLevels)){
  230. //PREMIUM/SENIOR
  231. msg = msg.replace("{memberLevels}",getMemberLeversMsg(memberLevels));
  232. }
  233. mailTemplate.setMsg(msg);
  234. }
  235. sendMail(email,mailTemplate,null);
  236. }
  237. @Override
  238. public Boolean sendContactUs(String email,String callBackUrl) {
  239. MailTemplate mailTemplate = this.getTemplateEn(12);
  240. //<a href="{callBackUrl}" target="_blank" rel="noopener">{callBackUrl}</a>
  241. if(mailTemplate != null){
  242. String msg = mailTemplate.getMsg();
  243. if(StringUtils.isNotBlank(callBackUrl)){
  244. msg = msg.replace("{callBackUrl}",callBackUrl);
  245. }
  246. mailTemplate.setMsg(msg);
  247. }
  248. return sendMail(email,mailTemplate,null);
  249. }
  250. @Override
  251. public void sendContactUs2(String email,Integer type) {
  252. MailTemplate mailTemplate = this.getTemplateEn(type);
  253. sendMail(email,mailTemplate,null);
  254. }
  255. public String getMemberLeversMsg(String memberLevels){
  256. switch (memberLevels){
  257. case "PR" :return "PREMIUM";
  258. case "SE" :return "SENIOR";
  259. }
  260. return "PREMIUM/SENIOR";
  261. }
  262. public String getTime(String memberLevels){
  263. switch (memberLevels){
  264. case "PR" :return "year";
  265. case "SE" :return "month";
  266. }
  267. return "year/month";
  268. }
  269. public String getMoney(String memberLevels){
  270. switch (memberLevels){
  271. case "PR" :return "$980";
  272. case "SE" :return "$40";
  273. }
  274. return "$980/$40";
  275. }
  276. }