用户类完善 商城功能
Change-Id: I2fa4cecee4203114998d7f9f24e956660a2da5ec
diff --git a/src/main/java/com/pt5/pthouduan/service/EmailService.java b/src/main/java/com/pt5/pthouduan/service/EmailService.java
new file mode 100644
index 0000000..492ade0
--- /dev/null
+++ b/src/main/java/com/pt5/pthouduan/service/EmailService.java
@@ -0,0 +1,75 @@
+package com.pt5.pthouduan.service;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.mail.SimpleMailMessage;
+import org.springframework.mail.javamail.JavaMailSender;
+import org.springframework.stereotype.Service;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Random;
+
+@Service
+public class EmailService {
+
+ @Autowired
+ private JavaMailSender mailSender;
+
+ // 存储邮箱和验证码的映射(实际项目中应该用Redis等缓存)
+ private final Map<String, String> emailCodeMap = new HashMap<>();
+
+ /**
+ * 发送验证码到指定邮箱
+ * @param email 目标邮箱
+ * @return 是否发送成功
+ */
+ public boolean sendVerificationCode(String email) {
+ // 生成6位随机验证码
+ String code = generateRandomCode(6);
+
+ // 存储验证码(5分钟有效)
+ emailCodeMap.put(email, code);
+
+ try {
+ SimpleMailMessage message = new SimpleMailMessage();
+ message.setFrom("zhutai940@163.com"); // 发件人
+ message.setTo(email); // 收件人
+ message.setSubject("您的注册验证码"); // 主题
+ message.setText("您的验证码是: " + code + ",5分钟内有效。"); // 内容
+
+ mailSender.send(message);
+ return true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+
+ /**
+ * 验证邮箱和验证码是否匹配
+ * @param email 邮箱
+ * @param code 验证码
+ * @return 是否验证通过
+ */
+ public boolean verifyCode(String email, String code) {
+ String storedCode = emailCodeMap.get(email);
+ return storedCode != null && storedCode.equals(code);
+ }
+
+ /**
+ * 生成随机验证码
+ * @param length 验证码长度
+ * @return 验证码字符串
+ */
+ private String generateRandomCode(int length) {
+ String numbers = "0123456789";
+ Random random = new Random();
+ StringBuilder sb = new StringBuilder();
+
+ for (int i = 0; i < length; i++) {
+ sb.append(numbers.charAt(random.nextInt(numbers.length())));
+ }
+
+ return sb.toString();
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/pt5/pthouduan/service/ShopService.java b/src/main/java/com/pt5/pthouduan/service/ShopService.java
new file mode 100644
index 0000000..a85b5ef
--- /dev/null
+++ b/src/main/java/com/pt5/pthouduan/service/ShopService.java
@@ -0,0 +1,78 @@
+package com.pt5.pthouduan.service;
+
+import com.pt5.pthouduan.entity.Invites;
+import com.pt5.pthouduan.mapper.InvitesMapper;
+import com.pt5.pthouduan.mapper.ShopMapper;
+import com.pt5.pthouduan.mapper.UserMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.HashMap;
+import java.util.Map;
+
+@Service
+public class ShopService {
+ @Autowired
+ private InvitesMapper invitesMapper;
+ @Autowired
+ private UserMapper userMapper;
+ //外观类订单
+ public Map<String, Object> buyDecoration(String buyername,String decoration,int price){//decoration指的是外观编号或id
+ Map<String, Object> result = new HashMap<>();
+ //首先查询用户是否拥有足够的保种积分
+ int credit=userMapper.getcreditByUsername(buyername);
+ if(credit<price){
+ result.put("success", false);
+ result.put("message", "余额不足");
+ return result;
+ }
+ //更新用户保种积分
+ userMapper.deductCreditByUsername(buyername,price);
+ //更新用户数据库
+ userMapper.appendUserDecoration(buyername,decoration);
+ //更新订单数据库 To do...
+ result.put("success", true);
+ result.put("message", "外观购买成功");
+ return result;
+ }
+ //上传量类订单
+ public Map<String, Object> buyUpload(String buyername,int price,int upload){
+ Map<String, Object> result = new HashMap<>();
+ //首先查询用户是否拥有足够的保种积分
+ int credit=userMapper.getcreditByUsername(buyername);
+ if(credit<price){
+ result.put("success", false);
+ result.put("message", "余额不足");
+ return result;
+ }
+ //更新用户保种积分
+ userMapper.deductCreditByUsername(buyername,price);
+ //更新用户上传量
+ userMapper.increaseUploadByUsername(buyername,upload);
+ result.put("success", true);
+ result.put("message", "上传量购买成功");
+ return result;
+ }
+ //购买邀请码
+ public Map<String, Object> setbuyername(String buyername,int price){
+ Map<String, Object> result = new HashMap<>();
+ //首先查询用户是否拥有足够的保种积分
+ int credit=userMapper.getcreditByUsername(buyername);
+ if(credit<price){
+ result.put("success", false);
+ result.put("message", "余额不足");
+ return result;
+ }
+ //更新用户保种积分
+ userMapper.deductCreditByUsername(buyername,price);
+ Invites invite=invitesMapper.selectFirstEmptyBuyername();
+ invitesMapper.updatebuyer(invite.getCode(),buyername);
+ result.put("success", true);
+ result.put("invitecode", invite.getCode());
+ result.put("message", "邀请码购买成功");
+ return result;
+ }
+
+
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/pt5/pthouduan/service/UserService.java b/src/main/java/com/pt5/pthouduan/service/UserService.java
index 365580f..59865c2 100644
--- a/src/main/java/com/pt5/pthouduan/service/UserService.java
+++ b/src/main/java/com/pt5/pthouduan/service/UserService.java
@@ -19,8 +19,18 @@
private UserMapper userMapper;
@Autowired
private InvitesMapper invitesMapper;
+ @Autowired
+ private EmailService emailService;
+ //发送验证码
+ public Map<String, Object> sendCode(String email){
+ Map<String, Object> result = new HashMap<>();
+ emailService.sendVerificationCode(email);
+ result.put("success", true);
+ result.put("message", "验证码发送成功");
+ return result;
+ }
// 注册业务
- public Map<String, Object> register(User user,String code) {
+ public Map<String, Object> register(User user,String code,String emailcode) {
Map<String, Object> result = new HashMap<>();
// 参数校验
@@ -61,8 +71,12 @@
result.put("message","邀请码已被使用");
return result;
}
- //邮箱发送验证码验证
- //To do... ..
+ //邮箱验证码验证
+ if (!emailService.verifyCode(user.getEmail(), emailcode)) {
+ result.put("success", false);
+ result.put("message","验证码错误");
+ return result;
+ }
//生成passkey
SecureRandom random = new SecureRandom();
user.setPasskey(String.valueOf(10000000 + random.nextInt(90000000)));
@@ -73,6 +87,7 @@
result.put("message", "注册成功");
return result;
}
+ //
// 登录业务
public Map<String, Object> login(String username, String password) {
@@ -156,4 +171,30 @@
result.put("message", "密码重置成功");
return result;
}
+ //获取用户信息(前端)
+ public Map<String, Object> UserInfo(String username){
+ Map<String, Object> result = new HashMap<>();
+ User user = userMapper.selectByUsername(username);
+ result.put("success", true);
+ result.put("message", "用户信息获取成功");
+ result.put("user", user);
+ return result;
+ }
+ //直接创建用户
+ public Map<String, Object> CreateUser(User user){
+ Map<String, Object> result = new HashMap<>();
+ userMapper.insert(user);
+ result.put("success", true);
+ result.put("message", "用户创建成功");
+ return result;
+ }
+ //直接删除用户
+ public Map<String, Object> DeleteUser(String username){
+ Map<String, Object> result = new HashMap<>();
+ userMapper.deleteByUsername(username);
+ result.put("success", true);
+ result.put("message", "用户删除成功");
+ return result;
+ }
+
}