|
@ -0,0 +1,132 @@
|
|
|
package com.yihu.jw.base.endpoint.open.register;
|
|
|
|
|
|
import com.yihu.jw.base.service.saas.SaasService;
|
|
|
import com.yihu.jw.base.service.saas.SaasTypeDictService;
|
|
|
import com.yihu.jw.base.service.user.UserService;
|
|
|
import com.yihu.jw.base.util.ErrorCodeUtil;
|
|
|
import com.yihu.jw.entity.base.saas.SaasDO;
|
|
|
import com.yihu.jw.entity.base.saas.SaasTypeDictDO;
|
|
|
import com.yihu.jw.entity.base.user.UserDO;
|
|
|
import com.yihu.jw.exception.code.BaseErrorCode;
|
|
|
import com.yihu.jw.restmodel.base.saas.SaasTypeDictVO;
|
|
|
import com.yihu.jw.restmodel.web.Envelop;
|
|
|
import com.yihu.jw.restmodel.web.ListEnvelop;
|
|
|
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
|
|
|
import com.yihu.jw.rm.base.BaseRequestMapping;
|
|
|
import io.swagger.annotations.Api;
|
|
|
import io.swagger.annotations.ApiOperation;
|
|
|
import io.swagger.annotations.ApiParam;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
import org.springframework.data.redis.core.StringRedisTemplate;
|
|
|
import org.springframework.http.MediaType;
|
|
|
import org.springframework.mail.SimpleMailMessage;
|
|
|
import org.springframework.mail.javamail.JavaMailSender;
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
|
|
import java.util.List;
|
|
|
import java.util.concurrent.TimeUnit;
|
|
|
|
|
|
/**
|
|
|
* @author yeshijie on 2018/10/16.
|
|
|
*/
|
|
|
@RestController
|
|
|
@RequestMapping(value = BaseRequestMapping.RegisterSaas.PREFIX)
|
|
|
@Api(value = "注册Saas管理", description = "注册Saas管理服务接口", tags = {"wlyy基础服务 - 注册Saas管理服务接口"})
|
|
|
public class RegisterEndpoint extends EnvelopRestEndpoint {
|
|
|
|
|
|
@Autowired
|
|
|
private SaasService saasService;
|
|
|
@Autowired
|
|
|
private UserService userService;
|
|
|
@Autowired
|
|
|
private ErrorCodeUtil errorCodeUtil;
|
|
|
@Autowired
|
|
|
private JavaMailSender jms;
|
|
|
@Value("${spring.mail.username}")
|
|
|
private String username;
|
|
|
@Autowired
|
|
|
private StringRedisTemplate redisTemplate;
|
|
|
@Autowired
|
|
|
private SaasTypeDictService saasTypeDictService;
|
|
|
|
|
|
/**
|
|
|
* 验证码redis前缀
|
|
|
*/
|
|
|
private final String redisPrefix = "verificationCode:";
|
|
|
|
|
|
@PostMapping(value = BaseRequestMapping.RegisterSaas.REGISTER, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
|
|
|
@ApiOperation(value = "注册租户")
|
|
|
public Envelop create (
|
|
|
@ApiParam(name = "jsonSaas", value = "租户数据", required = true)
|
|
|
@RequestParam String jsonSaas,
|
|
|
@ApiParam(name = "captcha", value = "验证码", required = true)
|
|
|
@RequestParam String captcha) throws Exception {
|
|
|
SaasDO saasDO = toEntity(jsonSaas, SaasDO.class);
|
|
|
UserDO userDO = new UserDO();
|
|
|
userDO.setEmail(saasDO.getEmail());
|
|
|
userDO.setMobile(saasDO.getMobile());
|
|
|
userDO.setName(saasDO.getManagerName());
|
|
|
userDO.setUsername(userDO.getEmail());
|
|
|
|
|
|
String redisKey = redisPrefix + userDO.getEmail();
|
|
|
String verificationCode = redisTemplate.opsForValue().get(redisKey);
|
|
|
if(!captcha.equals(verificationCode)){
|
|
|
return failed(errorCodeUtil.getErrorMsg(BaseErrorCode.Saas.CAPTCHA_IS_ERROR), Envelop.class);
|
|
|
}
|
|
|
if (saasService.search("name=" + saasDO.getName()).size() > 0) {
|
|
|
return failed(errorCodeUtil.getErrorMsg(BaseErrorCode.Saas.NAME_IS_EXIST), Envelop.class);
|
|
|
}
|
|
|
if (userService.search("mobile=" + userDO.getMobile()).size() > 0) {
|
|
|
return failed(errorCodeUtil.getErrorMsg(BaseErrorCode.Saas.MOBILE_IS_EXIST), Envelop.class);
|
|
|
}
|
|
|
if (userService.search("username=" + userDO.getEmail()).size() > 0) {
|
|
|
return failed(errorCodeUtil.getErrorMsg(BaseErrorCode.Saas.EMAIL_IS_EXIST), Envelop.class);
|
|
|
}
|
|
|
saasService.save(saasDO, userDO);
|
|
|
//注册成功后 吧key删除
|
|
|
redisTemplate.delete(redisKey);
|
|
|
return success("注册成功");
|
|
|
}
|
|
|
|
|
|
@GetMapping(value = BaseRequestMapping.RegisterSaas.SAAS_TYPE_DICT)
|
|
|
@ApiOperation(value = "获取列表")
|
|
|
public ListEnvelop<SaasTypeDictVO> list() throws Exception {
|
|
|
List<SaasTypeDictDO> saasTypeDictDOS = saasTypeDictService.search(null, "status="+SaasTypeDictDO.Status.effective, null);
|
|
|
return success(saasTypeDictDOS, SaasTypeDictVO.class);
|
|
|
}
|
|
|
|
|
|
@PostMapping(value = BaseRequestMapping.RegisterSaas.NAME_IS_EXIST)
|
|
|
@ApiOperation(value = "租户名称是否存在")
|
|
|
public Envelop create (
|
|
|
@ApiParam(name = "name", value = "租户名称", required = true)
|
|
|
@RequestParam String name) throws Exception {
|
|
|
if (saasService.search("name=" + name).size() > 0) {
|
|
|
return failed(errorCodeUtil.getErrorMsg(BaseErrorCode.Saas.NAME_IS_EXIST2), Envelop.class);
|
|
|
}
|
|
|
return success("查询成功");
|
|
|
}
|
|
|
|
|
|
@PostMapping(value = BaseRequestMapping.RegisterSaas.SEND_EMAIL)
|
|
|
@ApiOperation(value = "邮件发送")
|
|
|
public Envelop send(@ApiParam(name = "email", value = "邮箱地址", required = true)
|
|
|
@RequestParam String email) throws Exception {
|
|
|
//建立邮件消息
|
|
|
SimpleMailMessage mainMessage = new SimpleMailMessage();
|
|
|
//发送者
|
|
|
mainMessage.setFrom(username);
|
|
|
//接收者
|
|
|
mainMessage.setTo(email);
|
|
|
//发送的标题
|
|
|
mainMessage.setSubject("租户注册-验证码");
|
|
|
//发送的内容
|
|
|
StringBuilder content = new StringBuilder("您好!\n感谢您注册健康之路城市i健康。\n");
|
|
|
String captcha = String.valueOf(Math.random()).substring(2, 8);
|
|
|
content.append("您的验证码是:").append(captcha);
|
|
|
content.append("。 (验证码10分钟内有效)");
|
|
|
mainMessage.setText(content.toString());
|
|
|
jms.send(mainMessage);
|
|
|
redisTemplate.opsForValue().set(redisPrefix + email, captcha, 10, TimeUnit.MINUTES);
|
|
|
return success("发送成功");
|
|
|
}
|
|
|
}
|