package com.jsl.oa.dao; import com.jsl.oa.mapper.RoleMapper; import com.jsl.oa.mapper.UserMapper; import com.jsl.oa.model.doData.RoleDO; import com.jsl.oa.model.doData.RoleUserDO; import com.jsl.oa.model.doData.UserCurrentDO; import com.jsl.oa.model.doData.UserDO; import com.jsl.oa.model.voData.UserAllCurrentVO; import com.jsl.oa.model.voData.UserEditProfileVO; import lombok.RequiredArgsConstructor; import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.NotNull; import org.springframework.stereotype.Component; import java.sql.Timestamp; import java.util.List; @Component @RequiredArgsConstructor public class UserDAO { private final UserMapper userMapper; private final RoleMapper roleMapper; /** *

用户名获取用户信息

*
* 根据用户名获取用户信息 * * @param username 用户名 * @return {@link UserDO} * @author 筱锋xiao_lfeng */ public UserDO getUserInfoByUsername(String username) { UserDO userDO = null; // 从 Redis 获取数据 // TODO: 10000-Redis: 从 Redis 获取数据 // 从数据库获取用户信息 if (userDO == null) { userDO = userMapper.getUserInfoByUsername(username); } return userDO; } /** * 根据id判断用户是否存在 * * @param id * @return */ public Boolean isExistUser(Long id) { if (userMapper.getUserById(id) == null) { return false; } else return true; } /** * 用户账号删除 * * @param id */ public void userDelete(Long id) { userMapper.userDelete(id); } /** * 用户账号锁定 * * @param id */ public void userLock(Long id,Long isLock) { userMapper.userLock(id,isLock); } public void userEditProfile(UserEditProfileVO userEditProfileVO) { userMapper.userEditProfile(userEditProfileVO); } public List userCurrentAll(UserAllCurrentVO userAllCurrentVO) { List userCurrentDO = userMapper.getAllUser(userAllCurrentVO); return this.userCurrentAll(userCurrentDO); } public List userCurrentAllLike(UserAllCurrentVO userAllCurrentVO) { List userCurrentDO = userMapper.getAllUserBySearch(userAllCurrentVO); return this.userCurrentAll(userCurrentDO); } @Contract("_ -> param1") private @NotNull List userCurrentAll(@NotNull List userCurrentDO) { userCurrentDO.forEach(it -> { it.setRole(roleMapper.getRoleUserByUid(it.getId())); if (it.getRole() == null) { RoleUserDO newRoleUserDO = new RoleUserDO(); newRoleUserDO.setRid(0L) .setUid(it.getId()) .setCreatedAt(new Timestamp(System.currentTimeMillis())); it.setRole(newRoleUserDO); } }); return userCurrentDO; } /** * 获取当前用户信息 * * @param uid 用户id * @return {@link UserCurrentDO} */ public UserCurrentDO userCurrentById(Long uid) { UserCurrentDO userCurrentDO = userMapper.getUserCurrentById(uid); return getUserCurrentForRole(userCurrentDO); } /** * 获取当前用户信息 * * @param username 用户名 * @return {@link UserCurrentDO} */ public UserCurrentDO userCurrentByUsername(String username) { UserCurrentDO userCurrentDO = userMapper.getUserCurrentByUsername(username); return getUserCurrentForRole(userCurrentDO); } /** * 获取当前用户信息 * * @param email 邮箱 * @return {@link UserCurrentDO} */ public UserCurrentDO userCurrentByEmail(String email) { UserCurrentDO userCurrentDO = userMapper.getUserCurrentByEmail(email); return getUserCurrentForRole(userCurrentDO); } /** * 获取当前用户信息 * * @param phone 手机号 * @return {@link UserCurrentDO} */ public UserCurrentDO userCurrentByPhone(String phone) { UserCurrentDO userCurrentDO = userMapper.getUserCurrentByPhone(phone); return getUserCurrentForRole(userCurrentDO); } private UserCurrentDO getUserCurrentForRole(UserCurrentDO userCurrentDO) { if (userCurrentDO != null) { RoleUserDO newRoleUserDO = new RoleUserDO(); newRoleUserDO.setRid(0L) .setUid(userCurrentDO.getId()) .setCreatedAt(new Timestamp(System.currentTimeMillis())); userCurrentDO.setRole(newRoleUserDO); return userCurrentDO; } else { return null; } } /** * @return * @Description 用户添加 * @Date: 2024/1/16 * @Param userDO: user 数据库表实体类 */ public boolean userAdd(UserDO userDO) { return userMapper.insertUser(userDO); } public void userEdit(UserDO userDO) { userMapper.updateUser(userDO); } /** * @Description 根据username检测用户是否重复 * @Date: 2024/1/16 * @Param username: 用户名 **/ public Boolean isRepeatUser(String username) { if (userMapper.getUserInfoByUsername(username) == null) { return false; } return true; } /** * @Description 检测用户工号是否重复 * @Date 2024/1/18 * @Param userNum: **/ public Boolean isRepeatUserNum(String userNum) { if (userMapper.getUserByUserNum(userNum) != null) { return true; } return false; } /** * @Description 根据用户id获取用户数据 * @Date 2024/1/17 * @Param userId **/ public UserDO getUserById(Long userId) { return userMapper.getUserById(userId); } /** * @Description 根据用户id查询对应用户权限 * @Date 2024/1/18 * @Param uid:用户id **/ public RoleUserDO getRoleFromUser(Long uid) { return userMapper.getRoleIdByUserId(uid); } /** * @Description 检验用户权限是否为管理员 * @Date 2024/1/18 * @Param null:用户id **/ public Boolean isManagerByRoleId(Long roleId) { RoleDO role = userMapper.getRoleById(roleId); if (role == null) { return false; } if (role.getRoleName().equals("admin")) { return true; } return false; } public List getRecommendUser(){ return userMapper.getRecommendUser(); } }