blob: 59865c29a94be0abda9ad3912ca3158ce65c26bb [file] [log] [blame]
刘嘉昕f28ea232025-04-15 16:55:43 +08001package com.pt5.pthouduan.service;
Sure2338188c5d2025-05-28 11:43:06 +08002import com.pt5.pthouduan.entity.Invites;
刘嘉昕f28ea232025-04-15 16:55:43 +08003import com.pt5.pthouduan.entity.User;
Sure2338188c5d2025-05-28 11:43:06 +08004import com.pt5.pthouduan.mapper.InvitesMapper;
5import org.springframework.beans.factory.annotation.Autowired;
6import com.pt5.pthouduan.mapper.UserMapper;
7import org.springframework.stereotype.Service;
8import org.springframework.util.DigestUtils;
9import org.springframework.util.StringUtils;
10import java.security.SecureRandom;
刘嘉昕f28ea232025-04-15 16:55:43 +080011
Sure2338188c5d2025-05-28 11:43:06 +080012import java.util.HashMap;
13import java.util.Map;
14import java.util.UUID;
刘嘉昕f28ea232025-04-15 16:55:43 +080015
Sure2338188c5d2025-05-28 11:43:06 +080016@Service
17public class UserService {
18 @Autowired
19 private UserMapper userMapper;
20 @Autowired
21 private InvitesMapper invitesMapper;
21301050c519f712025-06-04 17:03:04 +080022 @Autowired
23 private EmailService emailService;
24 //发送验证码
25 public Map<String, Object> sendCode(String email){
26 Map<String, Object> result = new HashMap<>();
27 emailService.sendVerificationCode(email);
28 result.put("success", true);
29 result.put("message", "验证码发送成功");
30 return result;
31 }
Sure2338188c5d2025-05-28 11:43:06 +080032 // 注册业务
21301050c519f712025-06-04 17:03:04 +080033 public Map<String, Object> register(User user,String code,String emailcode) {
Sure2338188c5d2025-05-28 11:43:06 +080034 Map<String, Object> result = new HashMap<>();
刘嘉昕f28ea232025-04-15 16:55:43 +080035
Sure2338188c5d2025-05-28 11:43:06 +080036 // 参数校验
37 if (!StringUtils.hasText(user.getUsername())){
38 result.put("success", false);
39 result.put("message", "用户名不能为空");
40 return result;
41 }
42
43 if (!StringUtils.hasText(user.getPassword())) {
44 result.put("success", false);
45 result.put("message", "密码不能为空");
46 return result;
47 }
48
49 // 检查用户名是否已存在
50 if (userMapper.selectByUsername(user.getUsername()) != null) {
51 result.put("success", false);
52 result.put("message", "用户名已存在");
53 return result;
54 }
55
56 // 检查邮箱是否已存在
57 if (userMapper.selectByEmail(user.getEmail()) != null) {
58 result.put("success", false);
59 result.put("message", "邮箱已注册");
60 return result;
61 }
62 //检查邀请码是否有效
63 Invites invite= invitesMapper.selectByCode(code);
64 if(invite==null){//邀请码不存在
65 result.put("success", false);
66 result.put("message","无效的邀请码");
67 return result;
68 }
69 if(invite.getIsUsed()==1){//邀请码已被使用
70 result.put("success", false);
71 result.put("message","邀请码已被使用");
72 return result;
73 }
21301050c519f712025-06-04 17:03:04 +080074 //邮箱验证码验证
75 if (!emailService.verifyCode(user.getEmail(), emailcode)) {
76 result.put("success", false);
77 result.put("message","验证码错误");
78 return result;
79 }
Sure2338188c5d2025-05-28 11:43:06 +080080 //生成passkey
81 SecureRandom random = new SecureRandom();
82 user.setPasskey(String.valueOf(10000000 + random.nextInt(90000000)));
83 // 保存用户
84 userMapper.insert(user);
85 invitesMapper.updateInviteByCode(code,user.getUsername());
86 result.put("success", true);
87 result.put("message", "注册成功");
88 return result;
89 }
21301050c519f712025-06-04 17:03:04 +080090 //
Sure2338188c5d2025-05-28 11:43:06 +080091
92 // 登录业务
93 public Map<String, Object> login(String username, String password) {
94 Map<String, Object> result = new HashMap<>();
95
96 User user = userMapper.selectByUsername(username);//首先验证用户名
97 if (user == null) {
98 result.put("success", false);
99 result.put("message", "用户不存在");
100 return result;
101 }
102
103 //验证密码
104 if(!password.equals(user.getPassword())){
105 result.put("success", false);
106 result.put("message","密码错误,请检查后重新输入");
107 return result;
108 }
109 // 登录成功,返回用户信息(密码置空)
110 user.setPassword(null);
111 result.put("success", true);
112 result.put("message", "登录成功");
113 result.put("user", user);
114 return result;
115 }
116 //更新用户等级
117 public Map<String, Object> CalGrade(String username){
118 Map<String, Object> result = new HashMap<>();
119 //上传量+下载量0-500000 一级 510000-2000000 二级 2010000-3500000 三级 3510000-6500000 四级 6500000以上 五级
120 User user = userMapper.selectByUsername(username);
121 if(user.getUserUpload()+user.getUserDownload()<=500000*1024){
122 user.setGradeId(1);
123 }else if(user.getUserUpload()+user.getUserDownload()<=2000000*1024){
124 user.setGradeId(2);
125 }else if(user.getUserUpload()+user.getUserDownload()<= 3500000L *1024){
126 user.setGradeId(3);
127 }else if(user.getUserUpload()+user.getUserDownload()<= 6500000L *1024){
128 user.setGradeId(4);
129 }else{ user.setGradeId(5);}
130 userMapper.updateGrade(username,user.getGradeId());
131 result.put("success", true);
132 result.put("message", "等级更新成功");
133 result.put("grade", user.getGradeId());
134 return result;
135 }
136 //设置性别
137 public Map<String, Object> changesex(String username,String sex){
138 Map<String, Object> result = new HashMap<>();
139 userMapper.updatesex(username,sex);
140 result.put("success", true);
141 result.put("message", "性别设置成功");
142 return result;
143 }
144 //设置头像
145 public Map<String, Object> changeImage(String username,String image){
146 Map<String, Object> result = new HashMap<>();
147 userMapper.updateimage(username,image);
148 result.put("success", true);
149 result.put("message", "头像设置成功");
150 return result;
151 }
152 //更改密码
153 public Map<String, Object> changePassword(String username,String oldpassword,String newpassword){
154 Map<String, Object> result = new HashMap<>();
155 User user = userMapper.selectByUsername(username);//首先验证用户名
156 if (user == null) {
157 result.put("success", false);
158 result.put("message", "用户不存在");
159 return result;
160 }
161
162 //验证密码
163 if(!oldpassword.equals(user.getPassword())){
164 result.put("success", false);
165 result.put("message","密码错误,请检查后重新输入");
166 return result;
167 }
168 //更改数据库中的密码
169 userMapper.updatePassword(username,newpassword);
170 result.put("success", true);
171 result.put("message", "密码重置成功");
172 return result;
173 }
21301050c519f712025-06-04 17:03:04 +0800174 //获取用户信息(前端)
175 public Map<String, Object> UserInfo(String username){
176 Map<String, Object> result = new HashMap<>();
177 User user = userMapper.selectByUsername(username);
178 result.put("success", true);
179 result.put("message", "用户信息获取成功");
180 result.put("user", user);
181 return result;
182 }
183 //直接创建用户
184 public Map<String, Object> CreateUser(User user){
185 Map<String, Object> result = new HashMap<>();
186 userMapper.insert(user);
187 result.put("success", true);
188 result.put("message", "用户创建成功");
189 return result;
190 }
191 //直接删除用户
192 public Map<String, Object> DeleteUser(String username){
193 Map<String, Object> result = new HashMap<>();
194 userMapper.deleteByUsername(username);
195 result.put("success", true);
196 result.put("message", "用户删除成功");
197 return result;
198 }
199
刘嘉昕f28ea232025-04-15 16:55:43 +0800200}