Skip to content

Commit

Permalink
用户注册、邮箱验证、找回密码、密码加密的功能实现
Browse files Browse the repository at this point in the history
  • Loading branch information
qwe12369 committed Jul 18, 2019
1 parent a3d835e commit 77cd57e
Show file tree
Hide file tree
Showing 190 changed files with 4,732 additions and 1 deletion.
8 changes: 8 additions & 0 deletions shop_commons/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,13 @@

<artifactId>shop_commons</artifactId>

<dependencies>
<dependency>
<groupId>org.mindrot</groupId>
<artifactId>jbcrypt</artifactId>
<version>0.4</version>
</dependency>
</dependencies>


</project>
19 changes: 19 additions & 0 deletions shop_commons/src/main/java/com/qf/pass/BCryptUtil.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package com.qf.pass;

import org.mindrot.jbcrypt.BCrypt;

/**
* @version 1.0
* @user ken
* @date 2019/7/18 16:14
*/
public class BCryptUtil {

public static String hashPassword(String password){
return BCrypt.hashpw(password, BCrypt.gensalt());
}

public static boolean checkPassword(String hash, String password){
return BCrypt.checkpw(password, hash);
}
}
22 changes: 22 additions & 0 deletions shop_entity/src/main/java/com/qf/entity/Email.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package com.qf.entity;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;

/**
* @version 1.0
* @user ken
* @date 2019/7/18 11:36
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Email implements Serializable {

private String to;//发送给谁
private String subject;//标题
private String content;//内容
}
29 changes: 29 additions & 0 deletions shop_entity/src/main/java/com/qf/entity/User.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package com.qf.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.Date;

/**
* @version 1.0
* @user ken
* @date 2019/7/18 14:19
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User implements Serializable {

@TableId(type = IdType.AUTO)
private Integer id;
private String username;
private String password;
private String nickname;
private String email;
private Date createttime = new Date();
}
53 changes: 53 additions & 0 deletions shop_service/shop_email_service/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.6.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.qf</groupId>
<artifactId>shop_email_service</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>shop_email_service</name>
<description>Demo project for Spring Boot</description>

<properties>
<java.version>1.8</java.version>
</properties>

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>

<dependency>
<groupId>com.qf</groupId>
<artifactId>shop_entity</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

</project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
package com.qf.listener;

import com.qf.entity.Email;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Component;

import javax.mail.internet.MimeMessage;
import java.util.Date;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

/**
* @version 1.0
* @user ken
* @date 2019/7/18 14:01
*/
@Component
public class MyRabbitHandler {

private ExecutorService executorService = Executors.newFixedThreadPool(5);

@Autowired
private JavaMailSender javaMailSender;

@Value("${spring.mail.username}")
private String fromEamil;

@RabbitListener(queues = "email_queue")
public void handler(Email email){
executorService.submit(() -> {
//发送邮件
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
//创建一个Spring提供的邮件帮助对象
MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage);

try {
messageHelper.setSubject(email.getSubject());

messageHelper.setFrom(fromEamil);

messageHelper.setTo(email.getTo());

messageHelper.setText(email.getContent(), true);

messageHelper.setSentDate(new Date());

//发送邮件
javaMailSender.send(mimeMessage);
} catch (Exception e) {
e.printStackTrace();
}
});
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.qf.shop_email_service;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication(scanBasePackages = "com.qf")
public class ShopEmailServiceApplication {

public static void main(String[] args) {
SpringApplication.run(ShopEmailServiceApplication.class, args);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
spring:
rabbitmq:
host: 192.168.227.188
virtual-host: /
mail:
#配置发送方邮箱的地址和smtp
host: smtp.sina.cn
username: verygoodwlk@sina.cn
password: ken123456
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.qf.shop_email_service;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@SpringBootTest
public class ShopEmailServiceApplicationTests {

@Test
public void contextLoads() {
}

}
6 changes: 6 additions & 0 deletions shop_service/shop_user_service/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,12 @@
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>

<dependency>
<groupId>com.qf</groupId>
<artifactId>shop_commons</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>

<build>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.qf.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qf.entity.User;

public interface UserMapper extends BaseMapper<User> {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
package com.qf.serviceimpl;

import com.alibaba.dubbo.config.annotation.Service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.qf.dao.UserMapper;
import com.qf.entity.User;
import com.qf.pass.BCryptUtil;
import com.qf.service.IUserService;
import org.springframework.beans.factory.annotation.Autowired;

/**
* @version 1.0
* @user ken
* @date 2019/7/18 14:25
*/
@Service
public class UserServiceImpl implements IUserService {

@Autowired
private UserMapper userMapper;

@Override
public int register(User user) {

//判断用户名是否唯一
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("username", user.getUsername());
User u = userMapper.selectOne(queryWrapper);

if(u != null){
return -1;//用户名已经存在
}

QueryWrapper queryWrapper2 = new QueryWrapper();
queryWrapper.eq("email", user.getEmail());
User u2 = userMapper.selectOne(queryWrapper);

if(u2 != null){
return -2;//邮箱已经注册
}

user.setPassword(BCryptUtil.hashPassword(user.getPassword()));

//可以注册
return userMapper.insert(user);
}

@Override
public User queryByUserName(String username) {

QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("username", username);
User user = userMapper.selectOne(queryWrapper);

return user;
}

@Override
public int updatePassword(String username, String password) {
User user = queryByUserName(username);
user.setPassword(BCryptUtil.hashPassword(password));
return userMapper.updateById(user);
}
}
12 changes: 12 additions & 0 deletions shop_service_api/src/main/java/com/qf/service/IUserService.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.qf.service;

import com.qf.entity.User;

public interface IUserService {

int register(User user);

User queryByUserName(String username);

int updatePassword(String username, String password);
}
5 changes: 4 additions & 1 deletion shop_web/shop_front/src/main/resources/templates/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,10 @@
<div class="shop_hd_topNav_all">
<!-- Header TopNav Left -->
<div class="shop_hd_topNav_all_left">
<p>您好,欢迎来到<b><a href="/">ShopCZ商城</a></b>[<a >登录</a>][<a >注册</a>]</p>
<p>
<!--xxx 您好,欢迎来到<b><a href="/">ShopCZ商城</a></b> 注销-->
[<a href="http://localhost:8084/sso/tologin">登录</a>][<a href="http://localhost:8084/sso/toregister">注册</a>]
</p>
</div>
<!-- Header TopNav Left End -->

Expand Down
Loading

0 comments on commit 77cd57e

Please sign in to comment.