MailTemplateServiceImpl.java 9.8 KB

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