Newer
Older
EMS-WEB-3.0 / src / main / java / com / casic / accessControl / user / manager / UserManager.java
package com.casic.accessControl.user.manager;

import com.casic.accessControl.core.hibernate.HibernateEntityDao;
import com.casic.accessControl.core.page.Page;
import com.casic.accessControl.core.util.StringUtils;
import com.casic.accessControl.user.domain.Company;
import com.casic.accessControl.user.domain.Role;
import com.casic.accessControl.user.domain.User;
import com.casic.accessControl.user.dto.UserDto;
import com.casic.accessControl.util.DataTable;
import com.casic.accessControl.util.DataTableParameter;
import com.casic.accessControl.util.DataTableUtils;
import org.apache.commons.collections.CollectionUtils;
import org.hibernate.Criteria;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;

import javax.servlet.http.HttpSession;
import java.util.List;

/**
 * Created by lenovo on 2016/4/20.
 */
@Service("userInfoManager")
public class UserManager extends HibernateEntityDao<User> {
    private Logger logger = LoggerFactory.getLogger(this.getClass());

    /**
     * 用户登录
     *
     * @param user
     * @return
     */
    public User login(User user) throws Exception{
        Criteria criteria = this.createCriteria(User.class);
        criteria.add(Restrictions.eq("userName", user.getUserName()));
        criteria.add(Restrictions.eq("password", user.getPassword()));
        criteria.add(Restrictions.eq("isValid", 1));
        if (CollectionUtils.isEmpty(criteria.list())) {
            return null;
        }
        return (User) criteria.list().get(0);
    }

    /**
     * 以分页方式获取用户列表
     *
     * @param params json格式的请求参数
     * @param user   登录用户的信息
     * @return
     */
    public DataTable<UserDto> pageUser(String params, User user) {
        DataTable<UserDto> result = new DataTable<UserDto>();
        DataTableParameter parameter = DataTableUtils.getDataTableParameterByJsonParam(params);
        int start = parameter.getiDisplayStart();
        int pageSize = parameter.getiDisplayLength();
        int pageNo = (start / pageSize) + 1;
        Criteria criteria = this.createCriteria(User.class);
        criteria.addOrder(Order.desc("id"));
        criteria.add(Restrictions.eq("isValid", 1));
        if (StringUtils.isNotBlank(parameter.getsSearch())) {
            criteria.add(Restrictions.like("userName", "%" + parameter.getsSearch() + "%"));
        }
        Page page = pagedQuery(criteria, pageNo, pageSize);
        List<UserDto> userDtos = UserDto.Converts((List<User>) page.getResult());
        result.setAaData(userDtos);
        result.setiTotalDisplayRecords((int) page.getTotalCount());
        result.setiTotalRecords((int) page.getTotalCount());
        result.setsEcho(parameter.getsEcho());
        return result;
    }

    /**
     * 根据用户id获取用户信息
     *
     * @param userId
     * @return
     */
    public UserDto getUserDtoById(Long userId) {
        User user = getUserById(userId);
        return UserDto.Convert(user);
    }

    public User getUserById(Long userId) {
        if (userId == null) {//参数不合法
            logger.error("ERROR,UserInfoManager's method -> getUserInfoById(Long userId) ,the parameter userId is null");
            return null;
        }
        Criteria criteria = this.createCriteria(User.class);
        criteria.add(Restrictions.eq("id", userId)).add(Restrictions.eq("isValid", 1));
        User user = (User) criteria.uniqueResult();
        return user;
    }

    /**
     * 保存或更新用户信息
     *
     * @param user
     */
    public void saveUser(User user, HttpSession session) {
        if (user == null) {
            logger.error("UserInfoService->saveUserInfo ERROR,userInfo is null!");
            return;
        }
        if (user.getId() == null) {//新增
            user.setIsValid(1);
        }
        this.getSession().saveOrUpdate(user);
    }

    /**
     * 删除用户
     *
     * @param userId
     */
    public boolean deleteUserById(Long userId) {
        Criteria criteria = this.createCriteria(User.class);
        criteria.add(Restrictions.eq("id", userId));
        if (CollectionUtils.isEmpty(criteria.list())) {
            return false;
        }
        try {
            User user = (User) criteria.list().get(0);
            user.setIsValid(0);
            save(user);
        } catch (Exception e) {
            return false;
        }

        return true;
    }


    /**
     * @param user
     * @param newPassword
     */
    public void changePassword(User user, String newPassword) {
        user.setPassword(newPassword.trim());
        save(user);
    }

    /**
     * 根据用户名查询用户,用以限制唯一用户名
     *
     * @param userName
     * @return
     */
    public User getUserByName(String userName) {
        Criteria criteria = this.createCriteria(User.class);
        criteria.add(Restrictions.eq("userName", userName));
        criteria.add(Restrictions.eq("isValid", 1));
        List<User> users = criteria.list();
        if (CollectionUtils.isEmpty(users)) {
            return null;
        } else {
            users.get(0).getCompany().toString();
            return users.get(0);
        }
    }

    /**
     * 根据用户名查询用户,用以限制唯一用户名
     *
     * @param userName
     * @return
     */
    public User getPatrolerByName(String userName, Role role) {
        Criteria criteria = this.createCriteria(User.class);
        criteria.add(Restrictions.eq("userName", userName));
//        criteria.add(Restrictions.eq("role", role));
        criteria.add(Restrictions.eq("isValid", 1));
        List<User> users = criteria.list();
        if (CollectionUtils.isEmpty(users)) {
            return null;
        } else {
            users.get(0).getCompany().toString();
            return users.get(0);
        }
    }

    public List<User> getPatrolerByCompany(Company company, Role role) {
        Criteria criteria = this.createCriteria(User.class);
        criteria.add(Restrictions.eq("company", company));
//        criteria.add(Restrictions.eq("role", role));//两个角色,巡检员的权限最小,所以都有巡检的权限,暂时注释掉
        criteria.add(Restrictions.eq("isValid", 1));
        List<User> users = criteria.list();
        if (CollectionUtils.isEmpty(users)) {
            return null;
        }
        return users;
    }


}