All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.yuweix.kuafu.permission.dao.SysAdminDaoImpl Maven / Gradle / Ivy

There is a newer version: 2.0.0
Show newest version
package com.yuweix.kuafu.permission.dao;


import com.yuweix.kuafu.dao.mybatis.BaseMapper;
import com.yuweix.kuafu.dao.mybatis.CacheableDao;
import com.yuweix.kuafu.permission.common.Properties;
import com.yuweix.kuafu.permission.mapper.SysAdminMapper;
import com.yuweix.kuafu.permission.model.SysAdmin;
import org.springframework.stereotype.Repository;

import javax.annotation.Resource;
import java.util.List;


/**
 * @author yuwei
 */
@Repository("sysAdminDao")
public class SysAdminDaoImpl extends CacheableDao implements SysAdminDao {
	@Resource
	private SysAdminMapper sysAdminMapper;
	@Resource
	private Properties properties;
	
	
	private static final String CACHE_KEY_ADMIN_BY_ACCOUNT_NO = "cache.%s.admin.by.account.no.%s";
	private static final String CACHE_KEY_HAS_PERMISSION_BY_ADMIN_ID_AND_PERMISSION_ID = "cache.%s.has.permission.by.admin.%s.and.permission.%s";
	
	
	@Override
	protected BaseMapper getMapper() {
		return sysAdminMapper;
	}

	@Override
	protected String getAppName() {
		return properties.getAppName();
	}

	@Override
	protected void onchange(SysAdmin t) {
		deleteAdminFromCache(t.getAccountNo());
	}
	
	
	@Override
	public SysAdmin findAdminByAccountNo(String accountNo) {
		String key = String.format(CACHE_KEY_ADMIN_BY_ACCOUNT_NO, getAppName(), accountNo);
		SysAdmin admin = cache.get(key);
		if (admin != null) {
			return admin;
		}
		
		admin = sysAdminMapper.findAdminByAccountNo(accountNo);
		if (admin != null) {
			cache.put(key, admin, DEFAULT_CACHE_TIMEOUT);
		}
		return admin;
	}
	
	@Override
	public void deleteAdminFromCache(String accountNo) {
		String key = String.format(CACHE_KEY_ADMIN_BY_ACCOUNT_NO, getAppName(), accountNo);
		cache.remove(key);
	}

	@Override
	public boolean hasPermission(long adminId, long permissionId) {
		String key = String.format(CACHE_KEY_HAS_PERMISSION_BY_ADMIN_ID_AND_PERMISSION_ID, getAppName(), adminId, permissionId);
		Boolean has = cache.get(key);
		if (has != null) {
			return has;
		}
		
		has = sysAdminMapper.hasPermission(adminId, permissionId);
		cache.put(key, has, DEFAULT_CACHE_TIMEOUT);
		return has;
	}

	@Override
	public void deleteHasPermissionFromCache(long adminId, long permissionId) {
		String key = String.format(CACHE_KEY_HAS_PERMISSION_BY_ADMIN_ID_AND_PERMISSION_ID, getAppName(), adminId, permissionId);
		cache.remove(key);
	}

	@Override
	public List queryPermissionIdListByAdminId(long adminId) {
		return sysAdminMapper.queryPermissionIdListByAdminId(adminId);
	}

	@Override
	public int findCountByRoleId(long roleId, String keywords) {
		return sysAdminMapper.findCountByRoleId(roleId, keywords);
	}

	@Override
	public List findListByRoleId(long roleId, String keywords, Integer pageNo, Integer pageSize) {
		return sysAdminMapper.findListByRoleId(roleId, keywords, pageNo, pageSize);
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy