| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- package nju.seec.helper.service.impl;
- import nju.seec.helper.aspect.auth.LoginUser;
- import nju.seec.helper.dao.AdminDAO;
- import nju.seec.helper.dao.UserDAO;
- import nju.seec.helper.entity.User;
- import nju.seec.helper.enums.ExceptionType;
- import nju.seec.helper.enums.UserState;
- import nju.seec.helper.enums.UserType;
- import nju.seec.helper.exception.HelperException;
- import nju.seec.helper.service.AdminService;
- import nju.seec.helper.util.EncryptUtils;
- import nju.seec.helper.util.StringUtils;
- import nju.seec.helper.vo.AdminVO;
- import nju.seec.helper.vo.UserVO;
- import org.springframework.data.domain.Page;
- import org.springframework.data.domain.Pageable;
- import org.springframework.data.jpa.domain.Specification;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- /**
- * @author cst
- */
- @Service
- public class AdminServiceImpl implements AdminService {
- private final AdminDAO adminDAO;
- private final UserDAO userDAO;
- public AdminServiceImpl(AdminDAO adminDAO, UserDAO userDAO) {
- this.adminDAO = adminDAO;
- this.userDAO = userDAO;
- }
- @Transactional(readOnly = true)
- @Override
- public AdminVO getAdminByUsernameAndPassword(String username, String password) {
- return adminDAO.findByUsernameAndPassword(username, EncryptUtils.encode(password))
- .map(AdminVO::new)
- .orElseThrow(() -> HelperException.of(ExceptionType.NOT_FOUND, "用户名密码错误"));
- }
- @Transactional(readOnly = true)
- @Override
- public Page<UserVO> getUsers(UserType type, UserState state, String key, Pageable pageable) {
- return findUsersByTypeAndStateAndKey(type, state, key, pageable).map(UserVO::new);
- }
- @Transactional(rollbackFor = Exception.class)
- @Override
- public void passUser(LoginUser admin, Long userId) {
- User user = userDAO.findUserById(userId);
- if (user.getState() != UserState.CHECKING) {
- throw HelperException.of(ExceptionType.FORBIDDEN, "该帐号暂时无法审核通过");
- }
- userDAO.save(user.setState(UserState.NORMAL));
- }
- @Transactional(rollbackFor = Exception.class)
- @Override
- public void lockUser(LoginUser admin, Long userId) {
- userDAO.save(userDAO.findUserById(userId).setState(UserState.LOCKED));
- }
- @Transactional(rollbackFor = Exception.class)
- @Override
- public void unlockUser(LoginUser admin, Long userId) {
- User user = userDAO.findUserById(userId);
- if (user.getState() != UserState.LOCKED) {
- throw HelperException.of(ExceptionType.FORBIDDEN, "该帐号暂时无法解封");
- }
- userDAO.save(user.setState(UserState.NORMAL));
- }
- private Page<User> findUsersByTypeAndStateAndKey(UserType userType, UserState userState, String key, Pageable pageable) {
- final String keyPattern = StringUtils.keyPattern(key);
- return userDAO.findAll(
- (Specification<User>) (root, query, cb) -> cb.and(
- cb.equal(root.get("type").as(UserType.class), userType)
- , cb.equal(root.get("state").as(UserState.class), userState)
- , cb.or(cb.like(root.get("email"), keyPattern), cb.like(root.get("phone"), keyPattern), cb.like(root.get("name"), keyPattern))
- )
- , pageable);
- }
- }
|