|
@@ -8,6 +8,7 @@ import com.dt.oss.OSSService;
|
|
import com.dt.user.dto.UserLoginDTO;
|
|
import com.dt.user.dto.UserLoginDTO;
|
|
import com.dt.user.dto.UserRegisterDTO;
|
|
import com.dt.user.dto.UserRegisterDTO;
|
|
import com.dt.user.dto.FaceLoginEnableDTO;
|
|
import com.dt.user.dto.FaceLoginEnableDTO;
|
|
|
|
+import com.dt.user.dto.UserUpdateDTO;
|
|
import com.dt.user.mapper.UserMapper;
|
|
import com.dt.user.mapper.UserMapper;
|
|
import com.dt.user.pojo.User;
|
|
import com.dt.user.pojo.User;
|
|
import com.dt.user.service.UserService;
|
|
import com.dt.user.service.UserService;
|
|
@@ -28,6 +29,8 @@ import javax.servlet.http.HttpServletRequest;
|
|
import java.util.Date;
|
|
import java.util.Date;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
import java.util.concurrent.TimeUnit;
|
|
import java.util.concurrent.TimeUnit;
|
|
|
|
+import java.time.LocalDate;
|
|
|
|
+import java.time.ZoneId;
|
|
|
|
|
|
/**
|
|
/**
|
|
* @author 张大宇
|
|
* @author 张大宇
|
|
@@ -97,10 +100,9 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User>
|
|
// 3. 设置默认值
|
|
// 3. 设置默认值
|
|
user.setStatus(1); // 正常状态
|
|
user.setStatus(1); // 正常状态
|
|
user.setGender(0); // 性别未知
|
|
user.setGender(0); // 性别未知
|
|
|
|
+ user.setRealName(registerDTO.getUsername());
|
|
user.setCreatedAt(new Date());
|
|
user.setCreatedAt(new Date());
|
|
user.setUpdatedAt(new Date());
|
|
user.setUpdatedAt(new Date());
|
|
- user.setDeleted(0); // 未删除
|
|
|
|
-
|
|
|
|
// 4. 保存用户
|
|
// 4. 保存用户
|
|
this.save(user);
|
|
this.save(user);
|
|
}
|
|
}
|
|
@@ -139,7 +141,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User>
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
- public Result uploadFaceImage(MultipartFile faceImage, HttpServletRequest request) {
|
|
|
|
|
|
+ public Result uploadFaceImage(MultipartFile faceImage, HttpServletRequest request) {
|
|
try {
|
|
try {
|
|
// 获取当前登录用户ID
|
|
// 获取当前登录用户ID
|
|
String token = request.getHeader("token");
|
|
String token = request.getHeader("token");
|
|
@@ -167,6 +169,20 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User>
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
|
+ public Result getUserInfo(HttpServletRequest request) {
|
|
|
|
+ String token = request.getHeader("token");
|
|
|
|
+ Long userId = TokenUtils.getUserId(token);
|
|
|
|
+ if (userId == null){
|
|
|
|
+ return new Result(false, "用户未登录");
|
|
|
|
+ }
|
|
|
|
+ User user = this.getById(userId);
|
|
|
|
+ if (user == null){
|
|
|
|
+ return new Result(false, "用户不存在");
|
|
|
|
+ }
|
|
|
|
+ return new Result(true, "获取用户信息成功", user);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
public Result faceLogin(MultipartFile imageUrl2) {
|
|
public Result faceLogin(MultipartFile imageUrl2) {
|
|
try {
|
|
try {
|
|
// 查询所有启用了人脸登录的用户
|
|
// 查询所有启用了人脸登录的用户
|
|
@@ -217,6 +233,112 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User>
|
|
return new Result(false, "人脸识别失败:" + e.getMessage());
|
|
return new Result(false, "人脸识别失败:" + e.getMessage());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public Result updateUser(UserUpdateDTO userUpdateDTO, HttpServletRequest request) {
|
|
|
|
+ try {
|
|
|
|
+ String token = request.getHeader("token");
|
|
|
|
+ Long userId = TokenUtils.getUserId(token);
|
|
|
|
+ if (userId == null) {
|
|
|
|
+ return new Result(false, "用户未登录");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ User user = this.getById(userId);
|
|
|
|
+ if (user == null) {
|
|
|
|
+ return new Result(false, "用户不存在");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 更新用户信息
|
|
|
|
+ if (userUpdateDTO.getGender() != null) {
|
|
|
|
+ user.setGender(userUpdateDTO.getGender());
|
|
|
|
+ }
|
|
|
|
+ if (userUpdateDTO.getRealName() != null && !userUpdateDTO.getRealName().isEmpty()) {
|
|
|
|
+ user.setRealName(userUpdateDTO.getRealName());
|
|
|
|
+ }
|
|
|
|
+ if (userUpdateDTO.getPhone() != null && !userUpdateDTO.getPhone().isEmpty()) {
|
|
|
|
+ user.setPhone(userUpdateDTO.getPhone());
|
|
|
|
+ }
|
|
|
|
+ if (userUpdateDTO.getEmail() != null && !userUpdateDTO.getEmail().isEmpty()) {
|
|
|
|
+ user.setEmail(userUpdateDTO.getEmail());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ user.setUpdatedAt(new Date());
|
|
|
|
+ this.updateById(user);
|
|
|
|
+ return new Result(true, "用户信息更新成功");
|
|
|
|
+
|
|
|
|
+ } catch (ApiException e) {
|
|
|
|
+ return new Result(false, e.getMessage());
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ e.printStackTrace();
|
|
|
|
+ return new Result(false, "更新用户信息失败:" + e.getMessage());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public Result signIn(HttpServletRequest request) {
|
|
|
|
+ try {
|
|
|
|
+ String token = request.getHeader("token");
|
|
|
|
+ Long userId = TokenUtils.getUserId(token);
|
|
|
|
+ if (userId == null) {
|
|
|
|
+ return new Result(false, "用户未登录");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ User user = this.getById(userId);
|
|
|
|
+ if (user == null) {
|
|
|
|
+ return new Result(false, "用户不存在");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ LocalDate today = LocalDate.now();
|
|
|
|
+ LocalDate lastSignInDate = null;
|
|
|
|
+ if (user.getLastSignInTime() != null) {
|
|
|
|
+ lastSignInDate = user.getLastSignInTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (lastSignInDate != null && lastSignInDate.isEqual(today)) {
|
|
|
|
+ return new Result(false, "您今天已经签到过了");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 初始化签到数据 (如果为null)
|
|
|
|
+ if (user.getContinuousSignInDays() == null) {
|
|
|
|
+ user.setContinuousSignInDays(0);
|
|
|
|
+ }
|
|
|
|
+ if (user.getTotalSignInDays() == null) {
|
|
|
|
+ user.setTotalSignInDays(0);
|
|
|
|
+ }
|
|
|
|
+ if (user.getBeans() == null) {
|
|
|
|
+ user.setBeans(0);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 更新连续签到天数
|
|
|
|
+ if (lastSignInDate != null && lastSignInDate.isEqual(today.minusDays(1))) {
|
|
|
|
+ user.setContinuousSignInDays(user.getContinuousSignInDays() + 1);
|
|
|
|
+ } else {
|
|
|
|
+ user.setContinuousSignInDays(1);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 根据连续签到天数计算本次获得的豆豆数量
|
|
|
|
+ int gainedBeans;
|
|
|
|
+ int continuousDays = user.getContinuousSignInDays();
|
|
|
|
+ if (continuousDays >= 7) {
|
|
|
|
+ gainedBeans = 70;
|
|
|
|
+ } else {
|
|
|
|
+ gainedBeans = continuousDays * 10;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 更新累计签到天数和豆豆
|
|
|
|
+ user.setTotalSignInDays(user.getTotalSignInDays() + 1);
|
|
|
|
+ user.setLastSignInTime(new Date());
|
|
|
|
+ user.setBeans(user.getBeans() + gainedBeans);
|
|
|
|
+
|
|
|
|
+ this.updateById(user);
|
|
|
|
+
|
|
|
|
+ return new Result(true, "签到成功!获得" + gainedBeans + "豆豆,您已连续签到 " + user.getContinuousSignInDays() + " 天,累计签到 " + user.getTotalSignInDays() + " 天。");
|
|
|
|
+
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ e.printStackTrace();
|
|
|
|
+ return new Result(false, "签到失败:" + e.getMessage());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|