Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[feat] 根据uuid查询用户信息 #24

Open
wants to merge 9 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@

import com.frontleaves.fantasticeditor.exceptions.BusinessException;
import com.frontleaves.fantasticeditor.models.vo.api.user.UserMailVerifyVO;
import com.frontleaves.fantasticeditor.models.vo.api.user.UserPublicInfoVO;
import com.frontleaves.fantasticeditor.services.interfaces.UserService;
import com.frontleaves.fantasticeditor.utility.BaseResponse;
import com.frontleaves.fantasticeditor.utility.ErrorCode;
Expand All @@ -31,50 +32,72 @@
* <hr>
* 用户控制器,用于处理用户相关的请求;
*
* @since v1.0.0
* @version v1.0.0
* @author xiao_lfeng
* @version v1.0.0
* @since v1.0.0
*/
@Slf4j
@RestController
@RequiredArgsConstructor
@RequestMapping("/api/v1/user")
public class UserController {
private final UserService userService;
private final UserService userService;

/**
* 邮箱验证
* <hr>
* 用户邮箱验证的地址,用于验证用户的邮箱是否合法;邮箱验证码的发送会根据用户在注册后,执行 authResendMailVerify 方法时的邮箱地址发送;
* 验证码的有效时间为 15 分钟;获取到的验证码在当前接口进行验证;
*
* @return 注册结果
*/
@PostMapping("/mail/verify")
public ResponseEntity<BaseResponse<Void>> userMailVerify(
@RequestBody @Validated final UserMailVerifyVO userMailVerifyVO
) {
userService.checkMailVerify(userMailVerifyVO.getEmail(), userMailVerifyVO.getVerifyCode());
return ResultUtil.success("验证成功");
}

/**
* 重发邮件验证码
* <hr>
* 用于用户在注册时,未收到验证码或者验证码失效时,重新发送验证码;
*
* @param email 邮箱地址
* @return 重发结果
*/
@GetMapping("/mail/resend")
public ResponseEntity<BaseResponse<Void>> authResendMailVerify(
@RequestParam("email") final String email
) {
if (email.matches("^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$")) {
userService.sendMailVerify(email);
return ResultUtil.success("发送成功");
} else {
throw new BusinessException("邮箱格式错误", ErrorCode.REQUEST_BODY_PARAMETERS_ERROR);
}
}

/**
* 通过uuid获取用户信息
* <hr>
* 根据uuid参数查询用户的基本信息,信息包括:角色组信息,权限信息,付费会员信息,以及个人其他信息
*
* @param uuid 用户uuid
* @return 用户公开信息
*/
@GetMapping("/info/get/ByUUID/{uuid}")
public ResponseEntity<BaseResponse<UserPublicInfoVO>> getMyUserProfileInfo(
@PathVariable("uuid") final String uuid
) {

if (uuid == null || uuid.isEmpty()) {
throw new BusinessException("uuid参数为空", ErrorCode.REQUEST_PARAMETERS_ERROR);
}

/**
* 邮箱验证
* <hr>
* 用户邮箱验证的地址,用于验证用户的邮箱是否合法;邮箱验证码的发送会根据用户在注册后,执行 authResendMailVerify 方法时的邮箱地址发送;
* 验证码的有效时间为 15 分钟;获取到的验证码在当前接口进行验证;
*
* @return 注册结果
*/
@PostMapping("/mail/verify")
public ResponseEntity<BaseResponse<Void>> userMailVerify(
@RequestBody @Validated final UserMailVerifyVO userMailVerifyVO
) {
userService.checkMailVerify(userMailVerifyVO.getEmail(), userMailVerifyVO.getVerifyCode());
return ResultUtil.success("验证成功");
}
UserPublicInfoVO userVO = userService.getMyUserProfileInfo(uuid);
return ResultUtil.success("获取当前用户信息成功", userVO);
}

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

该部分内容不可删除

/**
* 重发邮件验证码
* <hr>
* 用于用户在注册时,未收到验证码或者验证码失效时,重新发送验证码;
*
* @param email 邮箱地址
* @return 重发结果
*/
@GetMapping("/mail/resend")
public ResponseEntity<BaseResponse<Void>> authResendMailVerify(
@RequestParam("email") final String email
) {
if (email.matches("^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$")) {
userService.sendMailVerify(email);
return ResultUtil.success("发送成功");
} else {
throw new BusinessException("邮箱格式错误", ErrorCode.REQUEST_BODY_PARAMETERS_ERROR);
}
}
}
56 changes: 56 additions & 0 deletions src/main/kotlin/com/frontleaves/fantasticeditor/dao/VipDAO.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
/*
* *******************************************************************************
* Copyright (C) 2024-NOW(至今) 妙笔智编
* Author: 锋楪技术团队
*
* 本文件包含 妙笔智编「FantasticEditor」 的源代码,该项目的所有源代码均遵循MIT开源许可证协议。
* 本代码仅允许在十三届软件杯比赛授权比赛方可直接使用
* *******************************************************************************
* 免责声明:
* 使用本软件的风险由用户自担。作者或版权持有人在法律允许的最大范围内,
* 对因使用本软件内容而导致的任何直接或间接的损失不承担任何责任。
* *******************************************************************************
*/

package com.frontleaves.fantasticeditor.dao

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
import com.baomidou.mybatisplus.extension.service.IService
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
import com.frontleaves.fantasticeditor.mappers.VipMapper
import com.frontleaves.fantasticeditor.models.entity.sql.SqlVipDO
import com.frontleaves.fantasticeditor.utility.Util
import com.frontleaves.fantasticeditor.utility.redis.RedisUtil
import org.springframework.stereotype.Repository

/**
* # 会员数据访问对象
* 用于定义会员数据访问对象;
*
* @since v1.0.0
* @see ServiceImpl
* @property VipMapper 会员映射器
* @property SqlVipDO 会员实体类
* @constructor 创建一个会员数据访问对象
* @author zrx
*/
@Repository
class VipDAO(private val redisUtil: RedisUtil) :
ServiceImpl<VipMapper, SqlVipDO>(), IService<SqlVipDO> {

/**
* ## 通过UUID获取会员
* 通过UUID获取会员的基本信息
*
* @param vuuid 会员UUID
* @return 会员实体类
*/
fun getVipByVUUID(vuuid: String): SqlVipDO? {
return redisUtil.hashGet("vip:vuuid:$vuuid")
.takeIf { !it.isNullOrEmpty() }?.let {
Util.mapToObject(it, SqlVipDO::class.java)
} ?: run {
this.getOne(QueryWrapper<SqlVipDO>().eq("vuuid", vuuid))
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
/*
* *******************************************************************************
* Copyright (C) 2024-NOW(至今) 妙笔智编
* Author: 锋楪技术团队
*
* 本文件包含 妙笔智编「FantasticEditor」 的源代码,该项目的所有源代码均遵循MIT开源许可证协议。
* 本代码仅允许在十三届软件杯比赛授权比赛方可直接使用
* *******************************************************************************
* 免责声明:
* 使用本软件的风险由用户自担。作者或版权持有人在法律允许的最大范围内,
* 对因使用本软件内容而导致的任何直接或间接的损失不承担任何责任。
* *******************************************************************************
*/

package com.frontleaves.fantasticeditor.mappers

import com.baomidou.mybatisplus.core.mapper.BaseMapper
import com.frontleaves.fantasticeditor.models.entity.sql.SqlVipDO
import org.apache.ibatis.annotations.Mapper

/**
* # 会员映射器
* 用于定义会员映射器;
*
* @since v1.0.0
* @constructor 创建一个会员映射器
* @author zrx
*/
@Mapper
interface VipMapper : BaseMapper<SqlVipDO>
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
/*
* *******************************************************************************
* Copyright (C) 2024-NOW(至今) 妙笔智编
* Author: 锋楪技术团队
*
* 本文件包含 妙笔智编「FantasticEditor」 的源代码,该项目的所有源代码均遵循MIT开源许可证协议。
* 本代码仅允许在十三届软件杯比赛授权比赛方可直接使用
* *******************************************************************************
* 免责声明:
* 使用本软件的风险由用户自担。作者或版权持有人在法律允许的最大范围内,
* 对因使用本软件内容而导致的任何直接或间接的损失不承担任何责任。
* *******************************************************************************
*/

package com.frontleaves.fantasticeditor.models.entity.redis;

import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

/**
* Redis用户基本信息实体
* <p>
* 用于存储用户基本信息的实体
* @since v1.0.0
* @version v1.0.0
* @author zrx
* @date 2024/6/1 8:45
*/
@Data
@NoArgsConstructor
@Accessors(chain = true)
public class RedisUserPublicInfoDO {

public String uuid;

public String username;

public String email;

public String phone;

public String basicInformation;

public String roleId;

public String roleName;

public String vipId;

public String vipName;

}


Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
/*
* *******************************************************************************
* Copyright (C) 2024-NOW(至今) 妙笔智编
* Author: 锋楪技术团队
*
* 本文件包含 妙笔智编「FantasticEditor」 的源代码,该项目的所有源代码均遵循MIT开源许可证协议。
* 本代码仅允许在十三届软件杯比赛授权比赛方可直接使用
* *******************************************************************************
* 免责声明:
* 使用本软件的风险由用户自担。作者或版权持有人在法律允许的最大范围内,
* 对因使用本软件内容而导致的任何直接或间接的损失不承担任何责任。
* *******************************************************************************
*/

package com.frontleaves.fantasticeditor.models.vo.api.user;

import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

/**
* 用户基本信息
* <p>
*
* @author zrx
* @date 2024/5/31 21:33
* @since v1.0.0
*/
@Data
@NoArgsConstructor
@Accessors(chain = true)
public class UserPublicInfoVO {
public String uuid;

public String username;

public String email;

public String phone;

public String basicInformation;

public String roleId;

public String roleName;

public String vipId;

public String vipName;
}


Loading