diff --git a/pom.xml b/pom.xml index 0c0aae4..dcd9ffc 100644 --- a/pom.xml +++ b/pom.xml @@ -48,6 +48,28 @@ commons-lang 2.6 + + + org.springframework.boot + spring-boot-starter-mail + + + + org.jsoup + jsoup + 1.11.3 + + + commons-lang + commons-lang + 2.6 + + + org.apache.commons + commons-lang3 + 3.4 + + @@ -59,6 +81,7 @@ import + diff --git a/src/main/java/com/lovenav/controller/UserController.java b/src/main/java/com/lovenav/controller/UserController.java new file mode 100644 index 0000000..0e5369e --- /dev/null +++ b/src/main/java/com/lovenav/controller/UserController.java @@ -0,0 +1,4 @@ +package com.lovenav.controller; + +public class UserController { +} diff --git a/src/main/java/com/lovenav/entity/User.java b/src/main/java/com/lovenav/entity/User.java index e4103f6..c9e2023 100644 --- a/src/main/java/com/lovenav/entity/User.java +++ b/src/main/java/com/lovenav/entity/User.java @@ -49,6 +49,86 @@ public class User implements Serializable { */ private Byte userStatus; + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getUserLogin() { + return userLogin; + } + + public void setUserLogin(String userLogin) { + this.userLogin = userLogin; + } + + public String getUserPassword() { + return userPassword; + } + + public void setUserPassword(String userPassword) { + this.userPassword = userPassword; + } + + public Long getPhone() { + return phone; + } + + public void setPhone(Long phone) { + this.phone = phone; + } + + public String getAvatar() { + return avatar; + } + + public void setAvatar(String avatar) { + this.avatar = avatar; + } + + public String getNickname() { + return nickname; + } + + public void setNickname(String nickname) { + this.nickname = nickname; + } + + public String getUserEmail() { + return userEmail; + } + + public void setUserEmail(String userEmail) { + this.userEmail = userEmail; + } + + public Byte getUserStatus() { + return userStatus; + } + + public void setUserStatus(Byte userStatus) { + this.userStatus = userStatus; + } + + public Date getUserRegistered() { + return userRegistered; + } + + public void setUserRegistered(Date userRegistered) { + this.userRegistered = userRegistered; + } + + public Byte getRoleId() { + return roleId; + } + + public void setRoleId(Byte roleId) { + this.roleId = roleId; + } + /** * 用户注册时间 */ diff --git a/src/main/java/com/lovenav/mapper/UserDao.java b/src/main/java/com/lovenav/mapper/UserDao.java index c08eb55..1fae17e 100644 --- a/src/main/java/com/lovenav/mapper/UserDao.java +++ b/src/main/java/com/lovenav/mapper/UserDao.java @@ -16,4 +16,7 @@ public interface UserDao { int updateByPrimaryKeySelective(User record); int updateByPrimaryKey(User record); + + + } \ No newline at end of file diff --git a/src/main/java/com/lovenav/service/UserService.java b/src/main/java/com/lovenav/service/UserService.java new file mode 100644 index 0000000..aaa9593 --- /dev/null +++ b/src/main/java/com/lovenav/service/UserService.java @@ -0,0 +1,9 @@ +package com.lovenav.service; + +import com.lovenav.entity.User; + +public interface UserService { + public void sendEmailActivecode(User user,String activecode); + + +} diff --git a/src/main/java/com/lovenav/service/serviceImpl/UserServiceImpl.java b/src/main/java/com/lovenav/service/serviceImpl/UserServiceImpl.java new file mode 100644 index 0000000..4f398f6 --- /dev/null +++ b/src/main/java/com/lovenav/service/serviceImpl/UserServiceImpl.java @@ -0,0 +1,14 @@ +package com.lovenav.service.serviceImpl; + + +import com.lovenav.utls.EmailUtils; +import com.lovenav.entity.User; +import com.lovenav.service.UserService; + + +public class UserServiceImpl implements UserService { + @Override + public void sendEmailActivecode(User user,String activecode) { + EmailUtils.sendEmail(user,activecode); + } +} diff --git a/src/main/java/com/lovenav/utls/EmailUtils.java b/src/main/java/com/lovenav/utls/EmailUtils.java new file mode 100644 index 0000000..dba8f04 --- /dev/null +++ b/src/main/java/com/lovenav/utls/EmailUtils.java @@ -0,0 +1,100 @@ +package com.lovenav.utls; + + + + + +import com.lovenav.entity.User; +import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; + +import javax.mail.Session; +import javax.mail.Transport; +import javax.mail.internet.InternetAddress; +import javax.mail.internet.MimeMessage; +import java.io.File; +import java.util.Date; +import java.util.Properties; + +/* + * 基于JDK实现邮件发送 + * 主要是实现激活码的发送 + * */ +public class EmailUtils { + + public static void sendEmail(User user,String activecode) { + //邮箱 lx_teach@163.com + String myAccount = "482370576@qq.com"; + //授权码 java168 + String myPass = "rgggscegbprzbhcc"; + //邮箱服务器 + String SMTPHost = "smtp.qq.com"; + //设置属性信息 + Properties prop = new Properties(); + //设置协议 + prop.setProperty("mail.transport.protocol", "smtp"); + //邮件服务器 + prop.setProperty("mail.smtp.host", SMTPHost); + //认证 + prop.setProperty("mail.smtp.auth", "true"); + //1、创建会话 + Session session = Session.getDefaultInstance(prop); + //设置是否需要调试 + session.setDebug(false); + //2、创建发送信息 + MimeMessage message = createMsg(session, myAccount, user, activecode); + //4发送信息操作 + try { + Transport tran = session.getTransport(); + //连接 + tran.connect(myAccount, myPass); + //发送消息 + tran.sendMessage(message, message.getAllRecipients()); + //关闭 + tran.close(); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + //生成邮件消息 + private static MimeMessage createMsg(Session session, String myAccount, User user,String activecode) { + //创建消息对象 + MimeMessage message = new MimeMessage(session); + //设置 + try { + //3.1发送方 + message.setFrom(new InternetAddress(myAccount, "官方邮件", "utf-8")); + //3.2设置接收方 + /* + * MimeMessage.RecipientType.TO + * MimeMessage.RecipientType.CC + * MimeMessage.RecipientType.BCC + * */ + message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(user.getUserEmail())); + //3.3 设置主题 + message.setSubject("激活码", "utf-8"); + //获取本机的ip地址 +// String ip = Inet4Address.getLocalHost().getHostAddress(); +// String url = "http://" + ip + ":80/activate?e=" + Base64Utils.encode(user.getEmail()) + "&c=" + Base64Utils.encode(user.getActivatecode()); + //设置正文信息 +// message.setContent(user.getUsername() + ",欢迎你加入我们
为了更好体验我们的产品,请点击激活 " + url + "", "text/html;charset=utf-8"); + File file=new File("src/main/resources/static/sendEmailActivecode.html"); + Document document= Jsoup.parse(file,"utf-8"); + document.getElementById("0").getElementsByClass("button").append(String.valueOf(activecode.charAt(0))); + document.getElementById("1").getElementsByClass("button").append(String.valueOf(activecode.charAt(1))); + document.getElementById("2").getElementsByClass("button").append(String.valueOf(activecode.charAt(2))); + document.getElementById("3").getElementsByClass("button").append(String.valueOf(activecode.charAt(3))); + message.setContent( document.toString(), "text/html;charset=utf-8"); + //设置日期 + message.setSentDate(new Date()); + //保存 + message.saveChanges(); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return message; + } +} diff --git a/src/main/java/com/lovenav/utls/FileUtils.java b/src/main/java/com/lovenav/utls/FileUtils.java new file mode 100644 index 0000000..22d4e5e --- /dev/null +++ b/src/main/java/com/lovenav/utls/FileUtils.java @@ -0,0 +1,41 @@ + +package com.lovenav.utls; + +import java.io.File; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.UUID; + +/** + * @Title: FileUtils.java + * @Package com.qfedu.common.utils + * @Description: TODO(用一句话描述该文件做什么) + * @author Feri + * @date 2018年5月29日 + * @version V1.0 + * 文件工具类 + */ +public class FileUtils { + + //创建文件夹 一个月一个文件夹 + public static File createDir(String dir) { + //子文件名称:201805 201806 + String month = new SimpleDateFormat("yyyyMM").format(new Date()); + File dir1 = new File(new File(dir).getParent(), "fmwimages"); + File dir2 = new File(dir1, month); + if (!dir2.exists()) { + dir2.mkdirs(); + } + return dir2; + } + + //创建唯一名称 + public static String createFileName(String fn) { + if (fn.length() > 30) { + fn = fn.substring(fn.length() - 30); + } + return UUID.randomUUID().toString() + "_" + fn; + } + + +} diff --git a/src/main/java/com/lovenav/utls/MD5Utils.java b/src/main/java/com/lovenav/utls/MD5Utils.java new file mode 100644 index 0000000..1b35c35 --- /dev/null +++ b/src/main/java/com/lovenav/utls/MD5Utils.java @@ -0,0 +1,23 @@ +package com.lovenav.utls; + +import java.math.BigInteger; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; + +//MD5 摘要算法 签名或者简易加解密 +public class MD5Utils { + public static String md5(String password) { + try { + //获取摘要对象 + MessageDigest md = MessageDigest.getInstance("MD5"); + //设置要签名的内容 + md.update(password.getBytes()); + //获取摘要结果 + return new BigInteger(1, md.digest()).toString(16); + } catch (NoSuchAlgorithmException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return null; + } +} diff --git a/src/main/java/com/lovenav/utls/RandomUtils.java b/src/main/java/com/lovenav/utls/RandomUtils.java new file mode 100644 index 0000000..6c0283a --- /dev/null +++ b/src/main/java/com/lovenav/utls/RandomUtils.java @@ -0,0 +1,41 @@ +package com.lovenav.utls; + +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Random; +import java.util.UUID; + +//随机数 +public class RandomUtils { + //生成激活码 + public static String createActive() { + // 生成4位随机数字+字母, + String val = ""; + Random random = new Random(); + // 参数length,表示生成几位随机数 + for (int i = 0; i < 4; i++) { + String charOrNum = random.nextInt(2) % 2 == 0 ? "char" : "num"; + // 输出字母还是数字 + if ("char".equalsIgnoreCase(charOrNum)) { + // 输出是大写字母还是小写字母 + int temp = random.nextInt(2) % 2 == 0 ? 65 : 97; + val += (char) (random.nextInt(26) + temp); + } else if ("num".equalsIgnoreCase(charOrNum)) { + val += String.valueOf(random.nextInt(10)); + } + } + return val; + + + } + + //设置时间戳 + public static String getTime() { + return new SimpleDateFormat("yyyyMMddHHmmssSSS").format(Calendar.getInstance().getTime()); + } + + //生成订单编号 + public static String createOrderId() { + return getTime() + UUID.randomUUID().toString(); + } +} diff --git a/src/main/java/com/lovenav/utls/SessionUtils.java b/src/main/java/com/lovenav/utls/SessionUtils.java new file mode 100644 index 0000000..e0d35e5 --- /dev/null +++ b/src/main/java/com/lovenav/utls/SessionUtils.java @@ -0,0 +1,25 @@ +package com.lovenav.utls; + + +import com.lovenav.entity.User; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import javax.servlet.http.HttpSession; + +public class SessionUtils { + private static final String USERKEY = "sessionUser"; + + public static HttpSession session() { + ServletRequestAttributes attr = (ServletRequestAttributes) RequestContextHolder.currentRequestAttributes(); + return attr.getRequest().getSession(true); // true == allow create + } + + public static User getCurrentUserInfo() { + return (User) session().getAttribute(USERKEY); + } + + public static void saveCurrentUserInfo(User User) { + session().setAttribute(USERKEY, User); + } +} diff --git a/src/main/java/com/lovenav/utls/StrUtils.java b/src/main/java/com/lovenav/utls/StrUtils.java new file mode 100644 index 0000000..2e3ec7d --- /dev/null +++ b/src/main/java/com/lovenav/utls/StrUtils.java @@ -0,0 +1,18 @@ +package com.lovenav.utls; +//字符串的各种校验 +public class StrUtils { + + /** + * 是否为空的校验 + * @return true 空 false 非空*/ + public static boolean empty(String...msg){ + boolean res = false; + for(String s:msg){ + res = (s==null|| s.length()==0); + if(res) { + break; + } + } + return res; + } +} diff --git a/src/main/resources/static/sendEmailActivecode.html b/src/main/resources/static/sendEmailActivecode.html new file mode 100644 index 0000000..8275d82 --- /dev/null +++ b/src/main/resources/static/sendEmailActivecode.html @@ -0,0 +1,148 @@ + + + + + 邮箱验证码 + + + + + + + + + +
+
+ + +
+
+
+
+ 尊敬的用户:您好! + + 您正在进行注册账号操作,请在验证码中输入以下验证码完成操作: + +
+ + + + +
+
+
+ + 注意:此操作可能会修改您的密码、登录邮箱或绑定手机。如非本人操作,请及时登录并修改密码以保证帐户安全 +
(工作人员不会向你索取此验证码,请勿泄漏!) +
+
+
+
+
+

此为系统邮件,请勿回复
+ 请保管好您的邮箱,避免账号被他人盗用 +

+

——LoveNav

+
+
+
+