whyczh
2021-07-01 2e0bc686f2100782fa1d331cc98b5f65ba19c206
src/main/java/com/whyc/service/UserService.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.extension.api.R;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.whyc.dto.Response;
@@ -10,6 +11,9 @@
import com.whyc.pojo.User;
import com.whyc.util.DigestsUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.subject.Subject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Service;
@@ -35,6 +39,7 @@
    @Resource
    private UserBridgeService userBridgeService;
    @Autowired
    private ApplicationContext applicationContext;
@@ -54,15 +59,15 @@
            } else {
                return new Response<>().set(1, false, "添加失败");
            }
        }catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
            return new Response<>().set(0);
        }
    }
    public boolean addBatch(List<User> roles) {
        return userMapper.insertBatchSomeColumn(roles)==roles.size();
    }
    public boolean addBatch(List<User> roles) {
        return userMapper.insertBatchSomeColumn(roles) == roles.size();
    }
    public User getById(int id) {
@@ -71,7 +76,9 @@
    public List<User> getAll() {
        List<User> users = userMapper.selectList(null);
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.ne("name","superuser");
        List<User> users = userMapper.selectList(queryWrapper);
        return users;
    }
@@ -79,82 +86,103 @@
        return userMapper.selectPage(page, null);
    }
    public Response<IPage<User>> getPageByCondition(int pageNum,int pageSize,User user){
    public Response<IPage<User>> getPageByCondition(int pageNum, int pageSize, User user) {
        QueryWrapper<User> queryWrapper = new QueryWrapper<>(user);
        queryWrapper.or().like(!user.getSearch().isEmpty(),"name",user.getSearch());
        queryWrapper.or().like(!user.getSearch().isEmpty(),"real_name",user.getSearch());
        queryWrapper.or().like(!user.getSearch().isEmpty(),"phone",user.getSearch());
        queryWrapper.or().like(!user.getSearch().isEmpty(),"email",user.getSearch());
        IPage<User> page = userMapper.selectPage(new Page<>(pageNum,pageSize),queryWrapper);
        return new Response<IPage<User>>().set(1,page);
        queryWrapper.or().like(StringUtils.isNotEmpty(user.getSearch()), "name", user.getSearch());
        queryWrapper.or().like(StringUtils.isNotEmpty(user.getSearch()), "real_name", user.getSearch());
        queryWrapper.or().like(StringUtils.isNotEmpty(user.getSearch()), "phone", user.getSearch());
        queryWrapper.or().like(StringUtils.isNotEmpty(user.getSearch()), "email", user.getSearch());
        queryWrapper.ne("name","superuser");
        IPage<User> page = userMapper.selectPage(new Page<>(pageNum, pageSize), queryWrapper);
        return new Response<IPage<User>>().set(1, page);
    }
    public boolean validatePassword(int id, String password) {
        User user = userMapper.selectById(id);
        boolean result = user.getPassword().equals(DigestsUtil.sha1(password, user.getSalt()));
        return result;
    }
    public Response updatePassword(int id,String password){
        User user = userMapper.selectById(id);
        String saltPassword = DigestsUtil.sha1(password,user.getSalt());
        user.setPassword(saltPassword);
        if (userMapper.updateById(user) > 0) {
            return new Response().setMsg(1, "修改成功");
        } else {
            return new Response().setMsg(0, "修改失败");
        }
    }
    public Response resetPassword(int id){
        return updatePassword(id,"123456");
    }
    public Response update(User user) {
        if(userMapper.updateById(user)>0){
            return new Response().setMsg(1,"更新成功");
        }else {
            return new Response().setMsg(0,"更新失败");
        }
    }
    public Response updateUserFreeze(int id,int state){
        User user =userMapper.selectById(id);
        user.setState(state);
        if(userMapper.updateById(user)>0){
            if (state==0){
                return new Response().setMsg(1,"启用成功");
            }else{
                return new Response().setMsg(1,"冻结成功");
            }
        }else {
            return new Response().setMsg(0,"更新失败");
        if (userMapper.updateById(user) > 0) {
            return new Response().setMsg(1, "更新成功");
        } else {
            return new Response().setMsg(0, "更新失败");
        }
    }
    /*public Response deleteUser(int id){
        User user =userMapper.selectById(id);
        user.setState(2);
        if(userMapper.updateById(user)>0){
            return new Response().setMsg(1,"删除成功");
        }else {
            return new Response().setMsg(0,"删除失败");
    public Response updateUserFreeze(int id, int state) {
        User user = userMapper.selectById(id);
        if ("superuser".equals(user.getName())){
            return new Response().setMsg(0, "更新失败");
        }
    }*/
        user.setState(state);
        if (userMapper.updateById(user) > 0) {
            if (state == 0) {
                return new Response().setMsg(1, "启用成功");
            } else {
                return new Response().setMsg(1, "冻结成功");
            }
        } else {
            return new Response().setMsg(0, "更新失败");
        }
    }
    public Response delete(int id) {
        if(userMapper.deleteById(id)>0){
            return new Response().setMsg(1,"删除成功");
        }else {
            return new Response().setMsg(0,"删除失败");
        User user = userMapper.selectById(id);
        if ("superuser".equals(user.getName())){
            return new Response().setMsg(0, "删除失败");
        }
        if (userMapper.deleteById(id) > 0) {
            return new Response().setMsg(1, "删除成功");
        } else {
            return new Response().setMsg(0, "删除失败");
        }
    }
    public boolean login(String username, String password , HttpServletRequest request) {
        boolean flag=false;
    public boolean login(String username, String password, HttpServletRequest request) {
        boolean flag = false;
        //查询用户名和密码是否正确
        QueryWrapper<User> queryWrapper = query();
        queryWrapper.eq("name",username).eq("password",password);
        queryWrapper.eq("name", username).eq("password", password);
        User user = userMapper.selectOne(queryWrapper);
        if (user!=null){
            flag=true;
        if (user != null) {
            flag = true;
            //session中存储用户信息,设置有效期30分钟
            HttpSession session = request.getSession();
            long timestamp = System.currentTimeMillis();
            session.setAttribute("user",user);
            session.setAttribute("timestamp",timestamp);
            session.setAttribute("user", user);
            session.setAttribute("timestamp", timestamp);
            session.setMaxInactiveInterval(1800);
            //servletContext中存储用户信息
            ServletContext servletContext = request.getServletContext();
           Map<String,UserLoginInfo> userMap = (Map<String, UserLoginInfo>) servletContext.getAttribute("users");
            if(userMap==null){
            Map<String, UserLoginInfo> userMap = (Map<String, UserLoginInfo>) servletContext.getAttribute("users");
            if (userMap == null) {
                log.info("servletContext首次存值");
                userMap = new HashMap<>();
                userMap.put(username,new UserLoginInfo(username,timestamp));
                servletContext.setAttribute("users",userMap);
            }else{
                userMap.put(username, new UserLoginInfo(username, timestamp));
                servletContext.setAttribute("users", userMap);
            } else {
                log.info("servletContext已经有值");
                userMap.put(username,new UserLoginInfo(username,timestamp));
                servletContext.setAttribute("users",userMap);
                userMap.put(username, new UserLoginInfo(username, timestamp));
                servletContext.setAttribute("users", userMap);
            }
        }
        return flag;
@@ -169,15 +197,15 @@
        User user = (User) session.getAttribute("user");
        Long timestamp = (Long) session.getAttribute("timestamp");
        if(user==null){
        if (user == null) {
            return false;
        }
        Map<String,UserLoginInfo> userMap = (Map<String, UserLoginInfo>) servletContext.getAttribute("users");
        Map<String, UserLoginInfo> userMap = (Map<String, UserLoginInfo>) servletContext.getAttribute("users");
        UserLoginInfo userLoginInfo = userMap.get(user.getName());
        if(userLoginInfo.getUsername().equals(user.getName()) && userLoginInfo.getTimestamp().compareTo(timestamp)==0){
                //说明没有从其他地方登录
        }else{
        if (userLoginInfo.getUsername().equals(user.getName()) && userLoginInfo.getTimestamp().compareTo(timestamp) == 0) {
            //说明没有从其他地方登录
        } else {
            //说明从其他地方登录了,当前用户的session清除
            flag = true;
            session.invalidate();