From 38102abcfe78b6ff73da45d041872deb683958f6 Mon Sep 17 00:00:00 2001 From: panqihua <1029559041@qq.com> Date: Thu, 5 Mar 2020 04:44:04 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=8F=91=E9=80=81=E9=82=AE?= =?UTF-8?q?=E4=BB=B6=E6=9C=8D=E5=8A=A1=20=E6=95=B4=E7=90=86=E5=8C=85?= =?UTF-8?q?=E5=90=8D=E3=80=81=E7=B1=BB=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 1 + .../pocket/api/ManagerController.java | 64 +++++++++++++------ .../community/pocket/entity/po/EmailCode.java | 26 ++++++++ .../pocket/{domain => entity/po}/Forum.java | 2 +- .../pocket/{domain => entity/po}/Manager.java | 23 ++++--- .../pocket/{domain => entity/po}/Token.java | 23 +++---- .../community/pocket/entity/vo/Common.java | 21 ++++++ .../community/pocket/entity/vo/EmailType.java | 24 +++++++ .../Res.java => entity/vo/JSONResponse.java} | 10 ++- .../form => entity/vo}/ManagerLogin.java | 2 +- .../form => entity/vo}/ManagerRegister.java | 2 +- .../pocket/{ => entity/vo}/Result.java | 2 +- .../pocket/repository/ForumRepo.java | 2 +- .../pocket/repository/ManagerDao.java | 4 +- .../pocket/repository/ManagerRepo.java | 2 +- .../community/pocket/util/EmailService.java | 39 +++++++++++ src/main/resources/application.yaml | 17 ++++- 17 files changed, 206 insertions(+), 58 deletions(-) create mode 100644 src/main/java/com/community/pocket/entity/po/EmailCode.java rename src/main/java/com/community/pocket/{domain => entity/po}/Forum.java (85%) rename src/main/java/com/community/pocket/{domain => entity/po}/Manager.java (82%) rename src/main/java/com/community/pocket/{domain => entity/po}/Token.java (73%) create mode 100644 src/main/java/com/community/pocket/entity/vo/Common.java create mode 100644 src/main/java/com/community/pocket/entity/vo/EmailType.java rename src/main/java/com/community/pocket/{domain/Res.java => entity/vo/JSONResponse.java} (80%) rename src/main/java/com/community/pocket/{domain/form => entity/vo}/ManagerLogin.java (90%) rename src/main/java/com/community/pocket/{domain/form => entity/vo}/ManagerRegister.java (96%) rename src/main/java/com/community/pocket/{ => entity/vo}/Result.java (50%) create mode 100644 src/main/java/com/community/pocket/util/EmailService.java diff --git a/build.gradle b/build.gradle index 5cab1a6..078c142 100644 --- a/build.gradle +++ b/build.gradle @@ -21,6 +21,7 @@ repositories { dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-mongodb' implementation 'org.springframework.boot:spring-boot-starter-data-rest' + implementation 'org.springframework.boot:spring-boot-starter-mail' implementation 'org.springframework.boot:spring-boot-starter-web' testImplementation 'org.springframework.boot:spring-boot-devtools' testImplementation('org.springframework.boot:spring-boot-starter-test') { diff --git a/src/main/java/com/community/pocket/api/ManagerController.java b/src/main/java/com/community/pocket/api/ManagerController.java index 304b815..be01294 100644 --- a/src/main/java/com/community/pocket/api/ManagerController.java +++ b/src/main/java/com/community/pocket/api/ManagerController.java @@ -1,12 +1,10 @@ package com.community.pocket.api; -import com.community.pocket.Result; -import com.community.pocket.domain.Manager; -import com.community.pocket.domain.Res; -import com.community.pocket.domain.Token; -import com.community.pocket.domain.form.ManagerLogin; -import com.community.pocket.domain.form.ManagerRegister; +import com.community.pocket.entity.po.Manager; +import com.community.pocket.entity.po.Token; +import com.community.pocket.entity.vo.*; import com.community.pocket.repository.ManagerDao; +import com.community.pocket.util.EmailService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.DigestUtils; import org.springframework.util.StringUtils; @@ -14,6 +12,7 @@ import org.springframework.web.bind.annotation.*; import java.util.Calendar; import java.util.Date; +import java.util.List; @RestController @RequestMapping("/api/manager") @@ -25,16 +24,22 @@ public class ManagerController { @Autowired private ManagerDao managerDao; + @Autowired + private Common common; + + @Autowired + private EmailService emailService; + // 登陆 @PostMapping("login") - public Res login(@RequestBody ManagerLogin managerLogin){ + public JSONResponse login(@RequestBody ManagerLogin managerLogin){ if(StringUtils.isEmpty(managerLogin.getManagerName())){ - return new Res<>(Result.FAIL,"管理员不能为空!",null); + return new JSONResponse<>(Result.FAIL,"管理员不能为空!",null); }else if(StringUtils.isEmpty(managerLogin.getPassword())){ - return new Res<>(Result.FAIL,"密码不能为空!",null); + return new JSONResponse<>(Result.FAIL,"密码不能为空!",null); //校验账号密码 }else if(!managerDao.login(managerLogin)){ - return new Res<>(Result.FAIL,"账号或密码错误!",null); + return new JSONResponse<>(Result.FAIL,"账号或密码错误!",null); } else{ // 验证通过生成令牌响应给服务端 @@ -47,27 +52,46 @@ public class ManagerController { token.setUseTime(c.getTimeInMillis()); // 生成token token.setToken(DigestUtils.md5DigestAsHex((token.getCreateTime()+""+token.getUseTime()+"").getBytes())); - return new Res<>(Result.OK,"登陆成功",token); + token.setManagerName(managerLogin.getManagerName()); + return new JSONResponse<>(Result.OK,"登陆成功",token); + } + } + + /** + * 获取邮箱类型 + * @return + */ + @GetMapping("emailType") + public JSONResponse> getEmailType(){ + return new JSONResponse<>(Result.OK,"获取邮箱类型成功", common.getSupportType()); + } + + @PostMapping("sendcode") + public JSONResponse sendEmail(String sender){ + if(emailService.sendCode(sender)){ + return new JSONResponse<>(Result.OK,"发送邮件成功",null); + }else{ + return new JSONResponse<>(Result.OK,"发送邮件失败",null); } } // 注册 @PostMapping("register") - public Res register(@RequestBody ManagerRegister manager){ + public JSONResponse register(@RequestBody ManagerRegister manager){ if(StringUtils.isEmpty(manager.getManagerName())){ - return new Res<>(Result.FAIL,"管理员不能为空",null); + return new JSONResponse<>(Result.FAIL,"管理员不能为空",null); }else if(StringUtils.isEmpty(manager.getPassword())){ - return new Res<>(Result.FAIL,"密码不能为空",null); + return new JSONResponse<>(Result.FAIL,"密码不能为空",null); }else if(StringUtils.isEmpty(manager.getConfirmPassword())){ - return new Res<>(Result.FAIL,"确认密码不能为空",null); + return new JSONResponse<>(Result.FAIL,"确认密码不能为空",null); }else if(!manager.getPassword().equals(manager.getConfirmPassword())){ - return new Res<>(Result.FAIL,"两次密码输入不一致",null); + return new JSONResponse<>(Result.FAIL,"两次密码输入不一致",null); }else if(StringUtils.isEmpty(manager.getMobie())){ - return new Res<>(Result.FAIL,"手机号不能为空",null); + return new JSONResponse<>(Result.FAIL,"手机号不能为空",null); }else if(StringUtils.isEmpty(manager.getEmail())){ - return new Res<>(Result.FAIL,"邮箱不能为空",null); + return new JSONResponse<>(Result.FAIL,"邮箱不能为空",null); }else if(managerDao.hasUser(manager.getManagerName())){ - return new Res<>(Result.FAIL,"用户已存在",null); + return new JSONResponse<>(Result.FAIL,"用户已存在",null); }else{ // 表单数据转换到管理员实体,调用dao层持久化到数据库 Manager m=new Manager(); @@ -76,7 +100,7 @@ public class ManagerController { m.setMobie(manager.getMobie()); m.setEmail(manager.getEmail()); managerDao.save(m); - return new Res<>(Result.OK,"注册成功",null); + return new JSONResponse<>(Result.OK,"注册成功",null); } } diff --git a/src/main/java/com/community/pocket/entity/po/EmailCode.java b/src/main/java/com/community/pocket/entity/po/EmailCode.java new file mode 100644 index 0000000..877d277 --- /dev/null +++ b/src/main/java/com/community/pocket/entity/po/EmailCode.java @@ -0,0 +1,26 @@ +package com.community.pocket.entity.po; + +/** + * 邮箱验证码 + */ +public class EmailCode { + //发送邮箱 + private String emailAddress; + //验证码 + private String code; + //发送时间 + private Long sendTime=System.currentTimeMillis(); + //有效时间 + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public void setEmailAddress(String emailAddress) { + this.emailAddress = emailAddress; + } +} diff --git a/src/main/java/com/community/pocket/domain/Forum.java b/src/main/java/com/community/pocket/entity/po/Forum.java similarity index 85% rename from src/main/java/com/community/pocket/domain/Forum.java rename to src/main/java/com/community/pocket/entity/po/Forum.java index 38318b0..aed7367 100644 --- a/src/main/java/com/community/pocket/domain/Forum.java +++ b/src/main/java/com/community/pocket/entity/po/Forum.java @@ -1,4 +1,4 @@ -package com.community.pocket.domain; +package com.community.pocket.entity.po; import org.springframework.data.annotation.Id; diff --git a/src/main/java/com/community/pocket/domain/Manager.java b/src/main/java/com/community/pocket/entity/po/Manager.java similarity index 82% rename from src/main/java/com/community/pocket/domain/Manager.java rename to src/main/java/com/community/pocket/entity/po/Manager.java index 2179541..4b1c092 100644 --- a/src/main/java/com/community/pocket/domain/Manager.java +++ b/src/main/java/com/community/pocket/entity/po/Manager.java @@ -1,12 +1,11 @@ -package com.community.pocket.domain; +package com.community.pocket.entity.po; import org.springframework.data.annotation.Id; //管理员 public class Manager { - @Id - private String id; // 管理员 + @Id private String managerName; // 密码 private String password; @@ -15,15 +14,7 @@ public class Manager { // 邮箱 private String email; - private String a; - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } + private Token token; public String getManagerName() { return managerName; @@ -56,4 +47,12 @@ public class Manager { public void setEmail(String email) { this.email = email; } + + public Token getToken() { + return token; + } + + public void setToken(Token token) { + this.token = token; + } } diff --git a/src/main/java/com/community/pocket/domain/Token.java b/src/main/java/com/community/pocket/entity/po/Token.java similarity index 73% rename from src/main/java/com/community/pocket/domain/Token.java rename to src/main/java/com/community/pocket/entity/po/Token.java index 50a4e66..b280403 100644 --- a/src/main/java/com/community/pocket/domain/Token.java +++ b/src/main/java/com/community/pocket/entity/po/Token.java @@ -1,25 +1,18 @@ -package com.community.pocket.domain; +package com.community.pocket.entity.po; import org.springframework.data.annotation.Id; //登陆成功记录的令牌信息 public class Token { - @Id - private String id; //令牌 + @Id private String token; //创建时间 private Long createTime; // 有效时间 private Long useTime; - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } + // 管理员名 + private String managerName; public String getToken() { return token; @@ -44,4 +37,12 @@ public class Token { public void setUseTime(Long useTime) { this.useTime = useTime; } + + public String getManagerName() { + return managerName; + } + + public void setManagerName(String managerName) { + this.managerName = managerName; + } } diff --git a/src/main/java/com/community/pocket/entity/vo/Common.java b/src/main/java/com/community/pocket/entity/vo/Common.java new file mode 100644 index 0000000..6e451a0 --- /dev/null +++ b/src/main/java/com/community/pocket/entity/vo/Common.java @@ -0,0 +1,21 @@ +package com.community.pocket.entity.vo; + +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +import java.util.List; + +@Component +@ConfigurationProperties(prefix = "email") +public class Common { + + private List supportType; + + public List getSupportType() { + return supportType; + } + + public void setSupportType(List supportType) { + this.supportType = supportType; + } +} diff --git a/src/main/java/com/community/pocket/entity/vo/EmailType.java b/src/main/java/com/community/pocket/entity/vo/EmailType.java new file mode 100644 index 0000000..6c0dc1d --- /dev/null +++ b/src/main/java/com/community/pocket/entity/vo/EmailType.java @@ -0,0 +1,24 @@ +package com.community.pocket.entity.vo; + +public class EmailType { + //邮箱标志 + private String name; + //邮箱后缀 + private String suffix; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getSuffix() { + return suffix; + } + + public void setSuffix(String suffix) { + this.suffix = suffix; + } +} diff --git a/src/main/java/com/community/pocket/domain/Res.java b/src/main/java/com/community/pocket/entity/vo/JSONResponse.java similarity index 80% rename from src/main/java/com/community/pocket/domain/Res.java rename to src/main/java/com/community/pocket/entity/vo/JSONResponse.java index 8c4dd5b..065b4f1 100644 --- a/src/main/java/com/community/pocket/domain/Res.java +++ b/src/main/java/com/community/pocket/entity/vo/JSONResponse.java @@ -1,9 +1,7 @@ -package com.community.pocket.domain; - -import com.community.pocket.Result; +package com.community.pocket.entity.vo; //接口统一返回json响应体 -public class Res { +public class JSONResponse { // 响应结果 private Result result; // 响应详细结果 @@ -11,10 +9,10 @@ public class Res { // 自定义其他响应信息 private T body; - public Res() { + public JSONResponse() { } - public Res(Result result, String message, T body) { + public JSONResponse(Result result, String message, T body) { this.result = result; this.message = message; this.body = body; diff --git a/src/main/java/com/community/pocket/domain/form/ManagerLogin.java b/src/main/java/com/community/pocket/entity/vo/ManagerLogin.java similarity index 90% rename from src/main/java/com/community/pocket/domain/form/ManagerLogin.java rename to src/main/java/com/community/pocket/entity/vo/ManagerLogin.java index e5bea39..f2f0c40 100644 --- a/src/main/java/com/community/pocket/domain/form/ManagerLogin.java +++ b/src/main/java/com/community/pocket/entity/vo/ManagerLogin.java @@ -1,4 +1,4 @@ -package com.community.pocket.domain.form; +package com.community.pocket.entity.vo; public class ManagerLogin { private String managerName; diff --git a/src/main/java/com/community/pocket/domain/form/ManagerRegister.java b/src/main/java/com/community/pocket/entity/vo/ManagerRegister.java similarity index 96% rename from src/main/java/com/community/pocket/domain/form/ManagerRegister.java rename to src/main/java/com/community/pocket/entity/vo/ManagerRegister.java index 1c13794..5642751 100644 --- a/src/main/java/com/community/pocket/domain/form/ManagerRegister.java +++ b/src/main/java/com/community/pocket/entity/vo/ManagerRegister.java @@ -1,4 +1,4 @@ -package com.community.pocket.domain.form; +package com.community.pocket.entity.vo; public class ManagerRegister { // 管理员 diff --git a/src/main/java/com/community/pocket/Result.java b/src/main/java/com/community/pocket/entity/vo/Result.java similarity index 50% rename from src/main/java/com/community/pocket/Result.java rename to src/main/java/com/community/pocket/entity/vo/Result.java index 56cd525..dee43aa 100644 --- a/src/main/java/com/community/pocket/Result.java +++ b/src/main/java/com/community/pocket/entity/vo/Result.java @@ -1,4 +1,4 @@ -package com.community.pocket; +package com.community.pocket.entity.vo; public enum Result { OK, diff --git a/src/main/java/com/community/pocket/repository/ForumRepo.java b/src/main/java/com/community/pocket/repository/ForumRepo.java index e46472a..563d27c 100644 --- a/src/main/java/com/community/pocket/repository/ForumRepo.java +++ b/src/main/java/com/community/pocket/repository/ForumRepo.java @@ -1,6 +1,6 @@ package com.community.pocket.repository; -import com.community.pocket.domain.Forum; +import com.community.pocket.entity.po.Forum; import org.springframework.data.mongodb.repository.MongoRepository; import org.springframework.data.rest.core.annotation.RepositoryRestResource; diff --git a/src/main/java/com/community/pocket/repository/ManagerDao.java b/src/main/java/com/community/pocket/repository/ManagerDao.java index e08a7ed..4cf2719 100644 --- a/src/main/java/com/community/pocket/repository/ManagerDao.java +++ b/src/main/java/com/community/pocket/repository/ManagerDao.java @@ -1,8 +1,8 @@ package com.community.pocket.repository; -import com.community.pocket.domain.Manager; -import com.community.pocket.domain.form.ManagerLogin; +import com.community.pocket.entity.po.Manager; +import com.community.pocket.entity.vo.ManagerLogin; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.query.Criteria; diff --git a/src/main/java/com/community/pocket/repository/ManagerRepo.java b/src/main/java/com/community/pocket/repository/ManagerRepo.java index f73832f..9a9e57f 100644 --- a/src/main/java/com/community/pocket/repository/ManagerRepo.java +++ b/src/main/java/com/community/pocket/repository/ManagerRepo.java @@ -1,7 +1,7 @@ package com.community.pocket.repository; -import com.community.pocket.domain.Manager; +import com.community.pocket.entity.po.Manager; import org.springframework.data.mongodb.repository.MongoRepository; import org.springframework.data.rest.core.annotation.RepositoryRestResource; diff --git a/src/main/java/com/community/pocket/util/EmailService.java b/src/main/java/com/community/pocket/util/EmailService.java new file mode 100644 index 0000000..83e8cb7 --- /dev/null +++ b/src/main/java/com/community/pocket/util/EmailService.java @@ -0,0 +1,39 @@ +package com.community.pocket.util; + +import com.community.pocket.entity.po.EmailCode; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.mongodb.core.MongoTemplate; +import org.springframework.mail.MailException; +import org.springframework.mail.SimpleMailMessage; +import org.springframework.mail.javamail.JavaMailSenderImpl; +import org.springframework.stereotype.Service; + +import java.util.Random; + +@Service +public class EmailService { + @Autowired + private JavaMailSenderImpl javaMailSender; + + @Autowired + private MongoTemplate mongoTemplate; + + public boolean sendCode(String sender) { + SimpleMailMessage message = new SimpleMailMessage(); + message.setSubject("口袋社区激活邮箱"); + message.setText("欢迎注册口袋社区后台服务,您获取到的验证码是:xxxx"); + message.setTo(sender); + message.setFrom("15920722180@163.com"); + try { + javaMailSender.send(message); + EmailCode emailCode=new EmailCode(); + emailCode.setCode(new Random().nextInt(1000)+""); + emailCode.setEmailAddress(sender); + mongoTemplate.save(emailCode); + return true; + } catch (MailException e) { + e.printStackTrace(); + return false; + } + } +} diff --git a/src/main/resources/application.yaml b/src/main/resources/application.yaml index f76cfdd..9a16588 100644 --- a/src/main/resources/application.yaml +++ b/src/main/resources/application.yaml @@ -2,4 +2,19 @@ spring: data: mongodb: - database: demo \ No newline at end of file + database: demo + mail: + username: + password: + host: smtp.163.com + properties: + mail: + smtp: + ssl: + enable: true + +#邮箱配置 +email: + supportType: + - name: 网易 + suffix: '@163.com' \ No newline at end of file