com.yuga.ygplatform.modules.sys.utils.UserUtils.java Source code

Java tutorial

Introduction

Here is the source code for com.yuga.ygplatform.modules.sys.utils.UserUtils.java

Source

/**
 * Copyright &copy; 2012-2013 <a href="https://github.com/thinkgem/jeesite">JeeSite</a> All rights reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 */
package com.yuga.ygplatform.modules.sys.utils;

import java.util.List;
import java.util.Map;

import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;

import com.google.common.collect.Maps;
import com.yuga.ygplatform.common.service.BaseService;
import com.yuga.ygplatform.common.utils.SpringContextHolder;
import com.yuga.ygplatform.modules.sys.dao.AreaDao;
import com.yuga.ygplatform.modules.sys.dao.MenuDao;
import com.yuga.ygplatform.modules.sys.dao.OfficeDao;
import com.yuga.ygplatform.modules.sys.dao.UserDao;
import com.yuga.ygplatform.modules.sys.entity.Area;
import com.yuga.ygplatform.modules.sys.entity.Menu;
import com.yuga.ygplatform.modules.sys.entity.Office;
import com.yuga.ygplatform.modules.sys.entity.User;

/**
 * 
 * 
 * @author ThinkGem
 * @version 2013-5-29
 */
public class UserUtils extends BaseService {

    private static UserDao userDao = SpringContextHolder.getBean(UserDao.class);
    private static MenuDao menuDao = SpringContextHolder.getBean(MenuDao.class);
    private static AreaDao areaDao = SpringContextHolder.getBean(AreaDao.class);
    private static OfficeDao officeDao = SpringContextHolder.getBean(OfficeDao.class);

    public static final String CACHE_USER = "user";
    public static final String CACHE_MENU_LIST = "menuList";
    public static final String CACHE_AREA_LIST = "areaList";
    public static final String CACHE_OFFICE_LIST = "officeList";

    public static User getUser() {
        User user = new User();
        user.setId(1L);
        user.setLoginName("Jack");
        return user;
    }

    public static User getUser(boolean isRefresh) {
        if (isRefresh) {
            removeCache(CACHE_USER);
        }
        return getUser();
    }

    public static List<Menu> getMenuList() {
        @SuppressWarnings("unchecked")
        List<Menu> menuList = (List<Menu>) getCache(CACHE_MENU_LIST);
        if (menuList == null) {
            User user = getUser();
            if (user.isAdmin()) {
                menuList = menuDao.findAllList();
            } else {
                menuList = menuDao.findByUserId(user.getId());
            }
            putCache(CACHE_MENU_LIST, menuList);
        }
        return menuList;
    }

    public static List<Area> getAreaList() {
        @SuppressWarnings("unchecked")
        List<Area> areaList = (List<Area>) getCache(CACHE_AREA_LIST);
        if (areaList == null) {
            // User user = getUser();
            // if (user.isAdmin()){
            areaList = areaDao.findAllList();
            // }else{
            // areaList = areaDao.findAllChild(user.getArea().getId(), "%,"+user.getArea().getId()+",%");
            // }
            putCache(CACHE_AREA_LIST, areaList);
        }
        return areaList;
    }

    public static List<Office> getOfficeList() {
        @SuppressWarnings("unchecked")
        List<Office> officeList = (List<Office>) getCache(CACHE_OFFICE_LIST);
        if (officeList == null) {
            User user = getUser();
            // if (user.isAdmin()){
            // officeList = officeDao.findAllList();
            // }else{
            // officeList = officeDao.findAllChild(user.getOffice().getId(), "%,"+user.getOffice().getId()+",%");
            // }
            DetachedCriteria dc = officeDao.createDetachedCriteria();
            dc.add(dataScopeFilter(user, dc.getAlias(), ""));
            dc.add(Restrictions.eq("delFlag", Office.DEL_FLAG_NORMAL));
            dc.addOrder(Order.asc("code"));
            officeList = officeDao.find(dc);
            putCache(CACHE_OFFICE_LIST, officeList);
        }
        return officeList;
    }

    // ============== User Cache ==============

    public static Object getCache(String key) {
        return getCache(key, null);
    }

    public static Object getCache(String key, Object defaultValue) {
        Object obj = getCacheMap().get(key);
        return obj == null ? defaultValue : obj;
    }

    public static void putCache(String key, Object value) {
        getCacheMap().put(key, value);
    }

    public static void removeCache(String key) {
        getCacheMap().remove(key);
    }

    public static Map<String, Object> getCacheMap() {
        Map<String, Object> map = Maps.newHashMap();
        return map;
    }
}