ContactUsServiceImpl.java 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. package com.fdkankan.ucenter.service.impl;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.fdkankan.common.constant.ConstantUrl;
  4. import com.fdkankan.common.util.SecurityUtil;
  5. import com.fdkankan.redis.util.RedisUtil;
  6. import com.fdkankan.ucenter.common.RedisKeyUtil;
  7. import com.fdkankan.ucenter.common.SceneSourceUtil;
  8. import com.fdkankan.ucenter.common.constants.ResultCode;
  9. import com.fdkankan.ucenter.config.UcenterConfig;
  10. import com.fdkankan.ucenter.entity.*;
  11. import com.fdkankan.ucenter.exception.BusinessException;
  12. import com.fdkankan.ucenter.geo.IPUtils;
  13. import com.fdkankan.ucenter.mapper.IContactUsMapper;
  14. import com.fdkankan.ucenter.service.*;
  15. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  16. import com.fdkankan.ucenter.util.DateUserUtil;
  17. import com.fdkankan.ucenter.vo.request.RegisterParam;
  18. import com.fdkankan.ucenter.vo.response.LoginVo;
  19. import com.fdkankan.ucenter.vo.response.SceneInfoVo;
  20. import com.fdkankan.ucenter.vo.response.ScenePlusVo;
  21. import com.fdkankan.ucenter.vo.response.SceneVo;
  22. import lombok.extern.slf4j.Slf4j;
  23. import org.apache.commons.lang3.StringUtils;
  24. import org.springframework.beans.factory.annotation.Autowired;
  25. import org.springframework.http.ResponseEntity;
  26. import org.springframework.stereotype.Service;
  27. import javax.servlet.http.HttpServletResponse;
  28. import java.io.IOException;
  29. import java.util.*;
  30. import java.util.stream.Collectors;
  31. /**
  32. * <p>
  33. * 服务实现类
  34. * </p>
  35. *
  36. * @author
  37. * @since 2025-10-20
  38. */
  39. @Service
  40. @Slf4j
  41. public class ContactUsServiceImpl extends ServiceImpl<IContactUsMapper, ContactUs> implements IContactUsService {
  42. @Autowired
  43. RedisUtil redisUtil;
  44. @Autowired
  45. IMailTemplateService mailTemplateService;
  46. @Autowired
  47. IUserService userService;
  48. @Autowired
  49. LoginService loginService;
  50. @Autowired
  51. IContactUsPointService contactUsPointService;
  52. @Autowired
  53. UcenterConfig ucenterConfig;
  54. @Override
  55. public void submit(ContactUs contactUs) {
  56. if(StringUtils.isBlank(contactUs.getName()) || StringUtils.isBlank(contactUs.getTel())
  57. || StringUtils.isBlank(contactUs.getEmail()) || StringUtils.isBlank(contactUs.getCompany())){
  58. throw new BusinessException(ResultCode.PARAM_MISS);
  59. }
  60. String redisKey = String.format(RedisKeyUtil.CONTACT_US_KEY,contactUs.getEmail());
  61. if(redisUtil.hasKey(redisKey)){
  62. throw new BusinessException(ResultCode.email_submit);
  63. }
  64. String uuid = UUID.randomUUID().toString().replace("-", "");
  65. String redisKey2 = String.format(RedisKeyUtil.CONTACT_US_KEY,uuid);
  66. User user = userService.getByUserName(contactUs.getEmail());
  67. if(user !=null){
  68. return;
  69. }
  70. String callBackUrl = ucenterConfig.getContactUsCallBackUrl() + uuid;
  71. Boolean b = mailTemplateService.sendContactUs(contactUs.getEmail(),callBackUrl);
  72. if(!b){
  73. throw new BusinessException(ResultCode.email_submit_error);
  74. }
  75. contactUs.setCountry(IPUtils.getCountry(contactUs.getIpAddress()));
  76. this.save(contactUs);
  77. redisUtil.set(redisKey, uuid,7* 24 * 60 * 60);
  78. redisUtil.set(redisKey2, JSONObject.toJSONString(contactUs),7* 24 * 60 * 60);
  79. }
  80. @Override
  81. public LoginVo callBack(String uuid) {
  82. String rediskey = String.format(RedisKeyUtil.CONTACT_US_KEY,uuid);
  83. String rediskey2 = null;
  84. if(!redisUtil.hasKey(rediskey)){
  85. throw new BusinessException(ResultCode.url_exprix);
  86. }
  87. try {
  88. if(redisUtil.hasKey(rediskey) ){
  89. ContactUs contactUs = JSONObject.parseObject( redisUtil.get(rediskey),ContactUs.class);
  90. rediskey2 = String.format(RedisKeyUtil.CONTACT_US_KEY,contactUs.getEmail());
  91. User userEntity = userService.getByUserName(contactUs.getEmail());
  92. if(userEntity == null){
  93. userEntity = new User();
  94. userEntity.setPassword(SecurityUtil.MD5(ucenterConfig.getContactUsDfPassword()));
  95. userEntity.setEmail(contactUs.getEmail());
  96. userEntity.setUserName(contactUs.getEmail());
  97. userEntity.setNickName(contactUs.getName());
  98. userEntity.setHead(ConstantUrl.DEFAULT_USER_HEAD);
  99. userEntity.setStatus(1);
  100. userEntity.setIsNotice(1);
  101. userEntity.setRecStatus("A");
  102. userEntity.setCreateTime(DateUserUtil.getDate(new Date()));
  103. userEntity.setUpdateTime(DateUserUtil.getDate(new Date()));
  104. userEntity.setAgentKey("wherefor");
  105. userService.save(userEntity);
  106. }
  107. LoginVo login = loginService.login(userEntity);
  108. return login;
  109. }
  110. }catch (Exception e){
  111. log.info("contact-us-callback-error:{}",e);
  112. }finally {
  113. redisUtil.del(rediskey);
  114. if(rediskey2 != null){
  115. redisUtil.del(rediskey2);
  116. }
  117. }
  118. return null;
  119. }
  120. @Override
  121. public void point(ContactUsPoint contactUsPoint) {
  122. ContactUsPoint contactUsPoint2 = contactUsPointService.getBySessionId(contactUsPoint.getSessionId());
  123. if(contactUsPoint2 == null){
  124. contactUsPoint.setStopTime(1L);
  125. contactUsPoint.setCountry(IPUtils.getCountry(contactUsPoint.getIpAddress()));
  126. }
  127. if(contactUsPoint2 != null){
  128. contactUsPoint.setId(contactUsPoint2.getId());
  129. contactUsPoint.setStopTime(contactUsPoint2.getStopTime() + 1);
  130. }
  131. contactUsPointService.saveOrUpdate(contactUsPoint);
  132. }
  133. @Autowired
  134. IContactUsSceneService contactUsSceneService;
  135. @Autowired
  136. IScenePlusService scenePlusService;
  137. @Override
  138. public List<SceneVo> sceneList() {
  139. List<ContactUsScene> list = contactUsSceneService.list();
  140. List<String> numList = list.stream().map(ContactUsScene::getNum).collect(Collectors.toList());
  141. if(numList.isEmpty()){
  142. return new ArrayList<>();
  143. }
  144. List<SceneVo> sceneVos = scenePlusService.getVoByNumList(numList);
  145. for (SceneVo sceneVo : sceneVos) {
  146. if(SceneSourceUtil.isLaser(sceneVo.getSceneSource())){
  147. if(ucenterConfig.getActive().contains("prod")){
  148. sceneVo.setWebSite(ucenterConfig.getBasePath() +"/index.html?m="+sceneVo.getNum());
  149. }else {
  150. sceneVo.setWebSite(ucenterConfig.getBasePath() +"/uat/index.html?m="+sceneVo.getNum());
  151. }
  152. sceneVo.setSceneName(sceneVo.getLaserTitle());
  153. }
  154. }
  155. return sceneVos;
  156. }
  157. }