Skip to content

Commit

Permalink
refactor(user): add quota field
Browse files Browse the repository at this point in the history
  • Loading branch information
novohit committed Nov 5, 2023
1 parent fea864a commit e5e9e63
Show file tree
Hide file tree
Showing 11 changed files with 88 additions and 21 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

import cn.hutool.core.util.RandomUtil;
import cn.hutool.crypto.SecureUtil;
import com.cloudshare.server.common.constant.BizConstant;
import com.cloudshare.server.user.enums.PlanLevel;
import com.cloudshare.server.user.model.User;
import com.cloudshare.server.user.repository.UserRepository;
import org.springframework.boot.CommandLineRunner;
Expand Down Expand Up @@ -40,6 +42,9 @@ private User genUser(String username, String password) {
user.setSalt(salt);
user.setPassword(cryptPassword);
user.setAvatar("https://zwx-images-1305338888.cos.ap-guangzhou.myqcloud.com/common/avatar-2023.jpg");
user.setPlan(PlanLevel.FREE);
user.setTotalQuota(BizConstant.FREE_PLAN_QUOTA);
user.setUsedQuota(0L);
return user;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ public record UserContext(
String username,
String phone,
String avatar,
Integer scope
Integer scope,
Long totalQuota,
Long usedQuota
) {
}
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,9 @@ public boolean preHandle(HttpServletRequest request, HttpServletResponse respons
user.getUsername(),
user.getPhone(),
user.getAvatar(),
1
1,
user.getTotalQuota(),
user.getUsedQuota()
);
BeanUtils.copyProperties(user, userContext);
log.info("登录用户 user:[{}]", userContext);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,8 @@ public final class BizConstant {

public static final Long ROOT_PARENT_ID = 0L;

/**
* 默认空间 1GB
*/
public static final Long FREE_PLAN_QUOTA = 1024 * 1024 * 1024L;
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.cloudshare.server.user.controller;

import com.cloudshare.server.user.controller.request.UserInfoRepDTO;
import com.cloudshare.server.user.controller.request.UserInfoRepVO;
import com.cloudshare.server.user.controller.request.UserLoginReqDTO;
import com.cloudshare.server.user.controller.request.UserRegisterReqDTO;
import com.cloudshare.server.user.controller.request.UserUpdateReqDTO;
Expand Down Expand Up @@ -40,8 +40,8 @@ public Response<Boolean> checkUsername(@RequestParam("username") @NotBlank Strin
}

@GetMapping
public Response<UserInfoRepDTO> getUserInfo() {
UserInfoRepDTO repDTO = userService.getUserInfo();
public Response<UserInfoRepVO> getUserInfo() {
UserInfoRepVO repDTO = userService.getUserInfo();
return Response.success(repDTO);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,14 @@
* @author novo
* @since 2023/10/6
*/
public record UserInfoRepDTO(
public record UserInfoRepVO(
Long id,
String username,
String phone,
String avatar,
Long rootId,
String rootName
String rootName,
Long totalQuota,
Long usedQuota
) {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package com.cloudshare.server.user.convert;

import com.cloudshare.server.auth.UserContext;
import com.cloudshare.server.user.controller.request.UserInfoRepVO;
import com.cloudshare.server.user.model.User;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;

/**
* @author novo
* @since 2023/10/8
*/
@Mapper(componentModel = "spring")
public interface UserConverter {

UserInfoRepVO DO2VO(User user);

@Mapping(target = "rootName", constant = "/")
@Mapping(target = "rootId", constant = "0L")
UserInfoRepVO Context2VO(UserContext user);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.cloudshare.server.user.enums;

/**
* @author novo
* @since 2023/11/5
*/
public enum PlanLevel {

FREE,

PLUS,

;

}
13 changes: 13 additions & 0 deletions server/src/main/java/com/cloudshare/server/user/model/User.java
Original file line number Diff line number Diff line change
@@ -1,12 +1,15 @@
package com.cloudshare.server.user.model;

import com.cloudshare.server.common.BaseModel;
import com.cloudshare.server.user.enums.PlanLevel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.annotations.Comment;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
Expand Down Expand Up @@ -48,4 +51,14 @@ public class User extends BaseModel {
@Column(length = 255)
@Comment("头像")
private String avatar;

@Comment("会员等级")
@Enumerated(value = EnumType.STRING)
private PlanLevel plan;

@Comment("总空间")
private Long totalQuota;

@Comment("已使用空间")
private Long usedQuota;
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.cloudshare.server.user.service;

import com.cloudshare.server.user.controller.request.UserInfoRepDTO;
import com.cloudshare.server.user.controller.request.UserInfoRepVO;
import com.cloudshare.server.user.controller.request.UserLoginReqDTO;
import com.cloudshare.server.user.controller.request.UserRegisterReqDTO;
import com.cloudshare.server.user.controller.request.UserUpdateReqDTO;
Expand All @@ -21,7 +21,7 @@ public interface UserService {

User findById(Long userId);

UserInfoRepDTO getUserInfo();
UserInfoRepVO getUserInfo();

String login(LoginType loginType, AuthUser authUser);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,14 @@
import com.cloudshare.lock.lock.ILock;
import com.cloudshare.server.auth.UserContext;
import com.cloudshare.server.auth.UserContextThreadHolder;
import com.cloudshare.server.user.controller.request.UserInfoRepDTO;
import com.cloudshare.server.common.constant.BizConstant;
import com.cloudshare.server.user.controller.request.UserInfoRepVO;
import com.cloudshare.server.user.controller.request.UserLoginReqDTO;
import com.cloudshare.server.user.controller.request.UserRegisterReqDTO;
import com.cloudshare.server.user.controller.request.UserUpdateReqDTO;
import com.cloudshare.server.user.convert.UserConverter;
import com.cloudshare.server.user.enums.LoginType;
import com.cloudshare.server.user.enums.PlanLevel;
import com.cloudshare.server.user.model.User;
import com.cloudshare.server.user.model.UserAuth;
import com.cloudshare.server.user.repository.UserAuthRepository;
Expand All @@ -23,7 +26,6 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.Objects;
import java.util.Optional;

/**
Expand All @@ -39,10 +41,14 @@ public class UserServiceImpl implements UserService {

private final ILock lock;

public UserServiceImpl(UserRepository userRepository, UserAuthRepository userAuthRepository, ILock lock) {
private final UserConverter userConverter;

public UserServiceImpl(UserRepository userRepository, UserAuthRepository userAuthRepository, ILock lock,
UserConverter userConverter) {
this.userRepository = userRepository;
this.userAuthRepository = userAuthRepository;
this.lock = lock;
this.userConverter = userConverter;
}

@Override
Expand All @@ -60,6 +66,9 @@ public Long register(UserRegisterReqDTO reqDTO) {
String cryptPassword = SecureUtil.md5(salt + reqDTO.password());
user.setSalt(salt);
user.setPassword(cryptPassword);
user.setPlan(PlanLevel.FREE);
user.setTotalQuota(BizConstant.FREE_PLAN_QUOTA);
user.setUsedQuota(0L);
userRepository.save(user);
return user.getId();
} finally {
Expand Down Expand Up @@ -99,16 +108,10 @@ public User findById(Long userId) {
}

@Override
public UserInfoRepDTO getUserInfo() {
public UserInfoRepVO getUserInfo() {
UserContext userContext = UserContextThreadHolder.getUserContext();
UserInfoRepDTO repDTO = new UserInfoRepDTO(
userContext.id(),
userContext.username(),
userContext.phone(),
userContext.avatar(),
0L,
"/");
return repDTO;
UserInfoRepVO resp = userConverter.Context2VO(userContext);
return resp;
}

@Override
Expand Down

0 comments on commit e5e9e63

Please sign in to comment.