ContactUsServiceImpl.java 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  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.constants.ResultCode;
  8. import com.fdkankan.ucenter.config.UcenterConfig;
  9. import com.fdkankan.ucenter.entity.ContactUs;
  10. import com.fdkankan.ucenter.entity.ContactUsPoint;
  11. import com.fdkankan.ucenter.entity.MailTemplate;
  12. import com.fdkankan.ucenter.entity.User;
  13. import com.fdkankan.ucenter.exception.BusinessException;
  14. import com.fdkankan.ucenter.geo.IPUtils;
  15. import com.fdkankan.ucenter.mapper.IContactUsMapper;
  16. import com.fdkankan.ucenter.service.IContactUsPointService;
  17. import com.fdkankan.ucenter.service.IContactUsService;
  18. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  19. import com.fdkankan.ucenter.service.IMailTemplateService;
  20. import com.fdkankan.ucenter.service.IUserService;
  21. import com.fdkankan.ucenter.util.DateUserUtil;
  22. import com.fdkankan.ucenter.vo.request.RegisterParam;
  23. import com.fdkankan.ucenter.vo.response.LoginVo;
  24. import lombok.extern.slf4j.Slf4j;
  25. import org.apache.commons.lang3.StringUtils;
  26. import org.springframework.beans.factory.annotation.Autowired;
  27. import org.springframework.http.ResponseEntity;
  28. import org.springframework.stereotype.Service;
  29. import javax.servlet.http.HttpServletResponse;
  30. import java.util.Date;
  31. import java.util.HashMap;
  32. import java.util.Map;
  33. import java.util.UUID;
  34. /**
  35. * <p>
  36. * 服务实现类
  37. * </p>
  38. *
  39. * @author
  40. * @since 2025-10-20
  41. */
  42. @Service
  43. @Slf4j
  44. public class ContactUsServiceImpl extends ServiceImpl<IContactUsMapper, ContactUs> implements IContactUsService {
  45. @Autowired
  46. RedisUtil redisUtil;
  47. @Autowired
  48. IMailTemplateService mailTemplateService;
  49. @Autowired
  50. IUserService userService;
  51. @Autowired
  52. LoginService loginService;
  53. @Autowired
  54. IContactUsPointService contactUsPointService;
  55. @Autowired
  56. UcenterConfig ucenterConfig;
  57. @Override
  58. public void submit(ContactUs contactUs) {
  59. if(StringUtils.isBlank(contactUs.getName()) || StringUtils.isBlank(contactUs.getTel())
  60. || StringUtils.isBlank(contactUs.getEmail()) || StringUtils.isBlank(contactUs.getCompany())){
  61. throw new BusinessException(ResultCode.PARAM_MISS);
  62. }
  63. String redisKey = String.format(RedisKeyUtil.CONTACT_US_KEY,contactUs.getEmail());
  64. if(redisUtil.hasKey(redisKey)){
  65. throw new BusinessException(ResultCode.email_submit);
  66. }
  67. String uuid = UUID.randomUUID().toString().replace("-", "");
  68. String redisKey2 = String.format(RedisKeyUtil.CONTACT_US_KEY,uuid);
  69. User user = userService.getByUserName(contactUs.getEmail());
  70. if(user !=null){
  71. return;
  72. }
  73. String callBackUrl = ucenterConfig.getContactUsCallBackUrl()+contactUs.getEmail();
  74. Boolean b = mailTemplateService.sendContactUs(contactUs.getEmail(),callBackUrl);
  75. if(!b){
  76. throw new BusinessException(ResultCode.email_submit_error);
  77. }
  78. redisUtil.set(redisKey, uuid,15 * 60);
  79. redisUtil.set(redisKey2, JSONObject.toJSONString(contactUs),15 * 60);
  80. }
  81. @Override
  82. public void callBack(String uuid, HttpServletResponse response) {
  83. String rediskey = String.format(RedisKeyUtil.CONTACT_US_KEY,uuid);
  84. String rediskey2 = null;
  85. try {
  86. if(redisUtil.hasKey(rediskey)){
  87. ContactUs contactUs = JSONObject.parseObject(redisUtil.get(rediskey),ContactUs.class);
  88. contactUs.setCountry(IPUtils.getCountry(contactUs.getIpAddress()));
  89. this.save(contactUs);
  90. rediskey2 = String.format(RedisKeyUtil.CONTACT_US_KEY,contactUs.getEmail());
  91. User user = userService.getByUserName(contactUs.getEmail());
  92. if(user !=null){
  93. return;
  94. }
  95. User userEntity = new User();
  96. userEntity.setPassword(SecurityUtil.MD5("4Dage168."));
  97. userEntity.setEmail(contactUs.getEmail());
  98. userEntity.setUserName(contactUs.getEmail());
  99. userEntity.setNickName(contactUs.getName());
  100. userEntity.setHead(ConstantUrl.DEFAULT_USER_HEAD);
  101. userEntity.setStatus(1);
  102. userEntity.setIsNotice(1);
  103. userEntity.setRecStatus("A");
  104. userEntity.setCreateTime(DateUserUtil.getDate(new Date()));
  105. userEntity.setUpdateTime(DateUserUtil.getDate(new Date()));
  106. userEntity.setAgentKey("wherefor");
  107. userService.save(userEntity);
  108. LoginVo login = loginService.login(userEntity);
  109. response.setHeader("token", login.getToken());
  110. response.sendRedirect(contactUs.getRedirectUrl());
  111. }
  112. }catch (Exception e){
  113. log.info("contact-us-callback-error:{}",e);
  114. }finally {
  115. redisUtil.del(rediskey);
  116. if(rediskey2 != null){
  117. redisUtil.del(rediskey2);
  118. }
  119. }
  120. }
  121. @Override
  122. public void point(ContactUsPoint contactUsPoint) {
  123. ContactUsPoint contactUsPoint2 = contactUsPointService.getBySessionId(contactUsPoint.getSessionId());
  124. if(contactUsPoint2 == null){
  125. contactUsPoint.setStopTime(1L);
  126. contactUsPoint.setCountry(IPUtils.getCountry(contactUsPoint.getIpAddress()));
  127. }
  128. if(contactUsPoint2 != null){
  129. contactUsPoint.setId(contactUsPoint2.getId());
  130. contactUsPoint.setStopTime(contactUsPoint2.getStopTime() + 1);
  131. }
  132. contactUsPointService.saveOrUpdate(contactUsPoint);
  133. }
  134. }