pull/4/head
zhouyu 12 months ago
parent dbef78e534
commit c53e71327a

@ -26,16 +26,63 @@ import java.util.concurrent.TimeUnit;
* @CONTACT 317758022@qq.com
* @DESC code=1,msg=xxx code=0,data=UserRespVO
*/
// @Service注解用于将当前类标记为Spring框架中的服务层组件表明该类是一个业务逻辑处理类会被Spring容器管理
// 方便在其他组件(如控制器层)中通过依赖注入的方式进行调用,实现业务逻辑与其他层的解耦。
@Service
// @Slf4j注解是lombok提供的一个便捷方式用于自动在类中生成一个名为log的日志记录器对象
// 可以通过它方便地记录不同级别如info、error等的日志信息便于在程序运行过程中对业务流程、异常情况等进行记录和跟踪方便后续的调试与监控。
@Slf4j
// 该类实现了IUserService接口意味着它需要按照接口中定义的方法契约来实现具体的业务逻辑
// 这样的设计符合面向接口编程的原则,使得代码结构更加清晰,便于替换不同的实现类(例如在测试环境或不同业务场景下使用不同的实现逻辑),
// 同时也方便其他代码依赖于接口进行调用,而不用关心具体的实现细节。
public class UserServiceImpl implements IUserService {
// 通过Spring的依赖注入机制使用@Autowired注解自动装配一个UserMapper类型的实例。
// UserMapper通常是一个MyBatis的Mapper接口定义了与数据库中用户表进行交互的各种方法比如查询用户信息、插入用户记录等操作
// 在这里被注入后,就可以在业务逻辑方法中调用它的方法来实现与数据库的数据交互,以完成诸如登录验证、注册用户等业务功能。
@Autowired
private UserMapper userMapper;
// 同样使用@Autowired注解注入CuratorFramework类型的实例CuratorFramework是一个用于与Zookeeper进行交互的客户端框架相关的类
// 在本代码中可能是用于实现分布式锁功能结合后续代码逻辑来看通过与Zookeeper的协作来保证在分布式环境下关键业务操作如用户注册的原子性和并发控制
// 避免多个实例同时操作产生的数据不一致等问题。
@Autowired
private CuratorFramework zkClient;
// 注入CommonCacheUtil类型的实例CommonCacheUtil是一个用于缓存操作的工具类
// 大概率是用于和缓存系统如Redis进行交互实现对常用数据比如用户登录状态信息、临时验证信息等的缓存管理
// 通过缓存数据可以减少对数据库的频繁访问,提高系统的整体性能和响应速度。
@Autowired
private CommonCacheUtil commonCacheUtil;
/**
*
*
*
* StringUtils.isEmpty
* SnailmallException
*
*
* userMapperselectByUsername
* 0
* SnailmallException
*
*
* MD5Util.MD5EncodeUtf8MD5
* 使userMapperselectByUsernameAndPasswd
* null
* SnailmallException
*
*
* UserResVO
* resultUserID
* UserResVOnew Date()
* ServerResponse.createBySuccessServerResponseUserResVO
*
*
* @param username
* @param password
* @return ServerResponse<UserResVO>UserResVO
* 便
*/
@Override
public ServerResponse<UserResVO> login(String username, String password) {
// 1.校验参数不能为空
@ -68,6 +115,44 @@ public class UserServiceImpl implements IUserService{
return ServerResponse.createBySuccess("用户登陆成功", userResVO);
}
/**
*
*
* 1.
* User
* StringUtils.isBlankSnailmallException
*
*
* 2.
* - InterProcessLockInterProcessMutexzkClientConstants.USER_REGISTER_DISTRIBUTE_LOCK_PATH
* 线
* - do-whilelock.acquire3000TimeUnit.MILLISECONDS
*
* - log.info线便线
* - this.checkValidConstants.USERNAME
* ServerResponse
* - this.checkValidConstants.EMAIL
* 使
* - Constants.Role.ROLE_CUSTOME
* MD5使MD5Util.MD5EncodeUtf8userMapperinsert
* retryfalse
* log.info...
*
*
* 3.
* finally
* locknulllock.releaselog.info线便
* e.printStackTrace便
*
* 4.
*
* ServerResponse.createBySuccessMessageServerResponse
*
* @param user User
*
* @return ServerResponse
* 便
*/
@Override
public ServerResponse register(User user) {
// 1.校验参数是否为空
@ -125,6 +210,33 @@ public class UserServiceImpl implements IUserService{
return ServerResponse.createBySuccessMessage("注册成功");
}
/**
*
*
* 1.
* StringUtils.isBlankstrtypestr
* SnailmallException
*
* 2.
* typeConstants.USERNAME
* userMapperselectByUsernamestr
* 0使ServerResponse.createByErrorMessageServerResponse
* 使
*
* typeConstants.EMAIL
* userMapperselectByEmailstr
* 0使ServerResponse.createByErrorMessageServerResponse
* 使
*
* 3.
* 0
* ServerResponse.createBySuccessServerResponse
*
*
* @param str type
* @param type strConstants
* @return ServerResponse便
*/
@Override
public ServerResponse checkValid(String str, String type) {
//校验参数是否为空
@ -149,6 +261,33 @@ public class UserServiceImpl implements IUserService{
return ServerResponse.createBySuccess("校验成功,用户名和邮箱都合法");
}
/**
*
*
* 1.
* StringUtils.isBlank
* ServerResponse.createByErrorMessageServerResponse
*
*
* 2.
* userMappergetUserByUsernameUseruser
* nullServerResponse.createByErrorMessageServerResponse
*
*
* 3.
* usernulluser.getQuestion
* StringUtils.isBlank
* ServerResponse.createByErrorMessageServerResponse
*
*
* 4.
* ServerResponse.createBySuccessServerResponse
* 便便
*
* @param username
* @return ServerResponse
* 便
*/
@Override
public ServerResponse getQuestionByUsername(String username) {
//1.校验参数
@ -167,6 +306,38 @@ public class UserServiceImpl implements IUserService{
return ServerResponse.createBySuccess(question);
}
/**
* token
*
* 1.
* StringUtils.isBlank
* ServerResponse.createByErrorMessageServerResponse
* token
*
* 2. token
* userMappergetUserByUsernameQuestionAnswer
* Useruserusernulltoken
*
* - RedistokencommonCacheUtilgetCacheValueConstants.TOKEN_PREFIXkeytoken
* tokenforgetToken
* - StringUtils.isNotBlankforgetTokenRedistoken
* ServerResponse.createBySuccesstokenServerResponse
* 使tokentoken
* - RedisforgetTokentokentoken
* tokenUUID.randomUUID().toStringtoken
* commonCacheUtilcacheNxExpiretokenConstants.TOKEN_PREFIXkeyRedis60 * 60 * 1212
* ServerResponse.createBySuccesstokenServerResponse便使token
*
* 3.
* usernull
* ServerResponse.createByErrorMessageServerResponse
*
* @param username token
* @param question
* @param answer
* @return ServerResponsetokentokentoken
* 便
*/
@Override
public ServerResponse checkAnswer(String username, String question, String answer) {
//1.校验参数是否正确
@ -189,6 +360,99 @@ public class UserServiceImpl implements IUserService{
return ServerResponse.createByErrorMessage("问题答案有误");
}
/**
*
*
* 1.
* StringUtils.isBlanktoken
* ServerResponse.createByErrorMessageServerResponse
*
*
* 2.
* userMappergetUserByUsernameUseruser
* nullServerResponse.createByErrorMessageServerResponse
*
*
* 3. token
* usernullRedistokencommonCacheUtilgetCacheValueConstants.TOKEN_PREFIXkeytoken
* tokenredisToken
* redisTokennullRedistokentokenServerResponse.createByErrorMessagetokenServerResponse
* token
*
* 4. token
* redisTokenStringUtils.equalsforgetTokenRedisredisToken
* tokenServerResponse.createByErrorMessagetokenServerResponse
* token
*
* 5.
* tokenMD5Util.MD5EncodeUtf8MD5MD5Passwd
* user.getPassword().equals
* ServerResponse.createByErrorMessage使ServerResponse
* 使
*
* 6.
* user.setPasswordMD5Passwd
* userMapperupdateByPrimaryKeySelectiveuserID
* resultresult0ServerResponse.createBySuccessMessageServerResponse
*
*
* 7.
* result0ServerResponse.createByErrorMessageServerResponse
*
*
* @param username token
* @param passwordNew
* @param forgetToken tokenRedistoken
* @return ServerResponsetoken
* 便
*/
/**
*
*
* 1.
* 使StringUtils.isBlankusernamepasswordNewtokenforgetToken
* ServerResponse.createByErrorMessageServerResponse
*
*
* 2.
* userMappergetUserByUsernameUseruser
* usernull
* ServerResponse.createByErrorMessageServerResponse
*
* 3. token
* usernullcommonCacheUtilgetCacheValueConstants.TOKEN_PREFIXkey
* RedistokenredisToken
* redisTokennullRedistokentokenServerResponse.createByErrorMessagetokenServerResponse
* tokentoken
*
* 4. token
* RedisredisToken使StringUtils.equalsforgetTokenRedisredisToken
* tokenServerResponse.createByErrorMessagetokenServerResponse
* tokentoken
*
* 5.
* tokenpasswordNewMD5Util.MD5EncodeUtf8MD5MD5Passwd
* 使user.getPassword().equalsMD5Passwduser
* ServerResponse.createByErrorMessage使ServerResponse
* 使
*
* 6.
* token
* user.setPassworduserMD5PasswduserMapperupdateByPrimaryKeySelective
* userID
* updateCountupdateCount0
* ServerResponse.createBySuccessMessageServerResponse
*
* 7.
* updateCount0
* ServerResponse.createByErrorMessageServerResponse
*
* @param username token
* @param passwordNew
* @param forgetToken tokenRedistoken
* @return ServerResponsetoken
* 便
*/
@Override
public ServerResponse forgetResetPasswd(String username, String passwordNew, String forgetToken) {
//1.校验参数
@ -216,37 +480,54 @@ public class UserServiceImpl implements IUserService{
}
//6.重置密码
user.setPassword(MD5Passwd);
int result = userMapper.updateByPrimaryKeySelective(user);
if(result > 0){
return ServerResponse.createBySuccessMessage("修改密码成功");
}
return ServerResponse.createByErrorMessage("修改密码失败");
}
@Override
public ServerResponse resetPasswd(String passwordOld, String passwordNew, int userId) {
//1.校验参数
if(StringUtils.isBlank(passwordOld) || StringUtils.isBlank(passwordNew)){
return ServerResponse.createByErrorMessage("参数有误");
}
User user = userMapper.selectByPrimaryKey(userId);
if (user == null){
return ServerResponse.createByErrorMessage("无用户登陆");
}
//2.校验老的密码
String passwordOldMD5 = MD5Util.MD5EncodeUtf8(passwordOld);
if(!StringUtils.equals(passwordOldMD5,user.getPassword())){
return ServerResponse.createByErrorMessage("老密码输错啦...");
}
//3.重置新的密码
user.setPassword(MD5Util.MD5EncodeUtf8(passwordNew));
int updateCount = userMapper.updateByPrimaryKeySelective(user);
if (updateCount > 0) {
return ServerResponse.createBySuccessMessage("更新密码成功");
return ServerResponse.createBySuccessMessage("修改密码成功");
}
return ServerResponse.createByErrorMessage("更新密码失败");
return ServerResponse.createByErrorMessage("修改密码失败");
}
/**
*
*
* 1.
* userMapperselectByPrimaryKeyIDuserIdUseruser
* usernullIDID
* ServerResponse.createByErrorMessageServerResponse
*
*
* 2.
* 使StringUtils.isBlankemailphonequestionanswer
*
* ServerResponse.createByErrorMessage!ServerResponse
*
*
* 3.
* 使
* userMappercheckEmailValidemailIDuserId使
* queryCount0使
* ServerResponse.createByErrorMessage~ServerResponse使
*
* 4.
* UserupdateUsersetIDIDuserId
* emailphonequestionanswer
* userMapperupdateByPrimaryKeySelectiveupdateUseruserId
* updateCount
*
* 5.
* updateCount0ServerResponse.createBySuccessMessageServerResponse
*
* updateCount0
* ServerResponse.createByErrorMessageServerResponse
*
* @param email
* @param phone
* @param question
* @param answer
* @param userId
* @return ServerResponse
* 便
*/
@Override
public ServerResponse updateInfomation(String email, String phone, String question, String answer, Integer userId) {
//1.获取当前登陆用户
@ -283,6 +564,20 @@ public class UserServiceImpl implements IUserService{
return ServerResponse.createByErrorMessage("更新用户信息失败");
}
/**
* IDUserResVO
*
* UserResVOuserResVO
* userMapperselectByPrimaryKeyIDuserIdUseruserDB
* userDBnullID
* userResVOsetUserResVO
* userResVO便
* userDBnullUserResVO
*
* @param userId
* @return UserResVOID便
* UserResVO
*/
@Override
public UserResVO getUserInfoFromDB(Integer userId) {
UserResVO userResVO = new UserResVO();
@ -300,6 +595,3 @@ public class UserServiceImpl implements IUserService{
}
return userResVO;
}
}

Loading…
Cancel
Save