groupserviceimpl.java

来自「社区文章采用的是平板、树形自由选择的两种展示方式」· Java 代码 · 共 238 行

JAVA
238
字号
/* 
 * Created on 2007-2-23
 * Last modified on 2008-1-1
 * Powered by YeQiangWei.com
 */
package com.yeqiangwei.club.service.security;

import java.util.List;

import org.apache.log4j.Logger;

import com.yeqiangwei.cache.Cache;
import com.yeqiangwei.club.cache.CacheRegion;
import com.yeqiangwei.cache.singleton.CacheFactory;
import com.yeqiangwei.club.cache.CacheKeys;
import com.yeqiangwei.club.dao.DAOLocator;
import com.yeqiangwei.club.dao.DAOWrapper;
import com.yeqiangwei.club.dao.GroupDAO;
import com.yeqiangwei.club.model.Group;
import com.yeqiangwei.club.exception.ClubException;
import com.yeqiangwei.club.param.GroupParameter;
import com.yeqiangwei.club.service.ServiceLocator;
import com.yeqiangwei.club.service.ServiceWrapper;
import com.yeqiangwei.club.model.GroupOfForum;
import com.yeqiangwei.club.model.User;
import com.yeqiangwei.club.util.BeanUtils;
import com.yeqiangwei.club.util.MessageUtils;
import com.yeqiangwei.util.Validator;
import com.yeqiangwei.util.TypeChange;

public class GroupServiceImpl implements GroupService {
	
	private static final Logger logger = Logger.getLogger(GroupServiceImpl.class.getName());

	private static final Cache<Group> CACHE_GROUP = CacheFactory.<Group>creator(CacheRegion.GROUP);

	public static void main(String args[]){
		com.yeqiangwei.club.dao.hibernate.ConnectionManager.init();
		GroupServiceImpl s = new GroupServiceImpl();
		Group m = s.userInGroup(null,10);
		System.out.println(m.getGroupName());
		//m.getGroupName();
	}
	/**
	 * 登录用户所在的用户组
	 */
	public Group userInGroup(User user, int forumId) {
		if(!Validator.isEmpty(user)){
			/*
			StringBuffer cacheKey = new StringBuffer(); 
			cacheKey.append("userInGroup:userId=");
			cacheKey.append(user.getUserId());
			cacheKey.append(",forumId=");
			cacheKey.append(forumId);
			Group group = (Group) USER_GROUP_CACHE.get(cacheKey.toString());
			if(!Validator.isEmpty(group)){
				return group;
			}
			*/
			Group group = null; //缓存到前端 UserPower 类下 
			if(forumId>0){
				//根据用户ID和版面ID取出用户所在版面的用户组ID
				GroupOfForum groupOfForum = this.getGroupOfForumService().findByForumIdAndUserId(forumId,user.getUserId()); 
				if(!Validator.isEmpty(groupOfForum)){
					//重新确定用户所在的用户组 
					//如果设定组高于用户所在版面组则以设定的全局组为准
					if(groupOfForum.getGroupId()<user.getGroupId()){
						group = this.findById(groupOfForum.getGroupId());
						logger.debug("设定组ID高于用户所在版面组:Group.groupId="
								+group.getGroupId()
								+",User.groupId="+user.getGroupId());
					}
				}
			}
			if(Validator.isEmpty(group)){
				//查看用户所在用户组是否是全局权限
				group = this.findById(user.getGroupId());
				logger.debug("forumId:"+forumId);
				logger.debug("用户所在用户组ID:"+user.getGroupId());
			}
			//USER_GROUP_CACHE.put(cacheKey.toString(),group);
			return group;
		}else{//过客组
			logger.debug("用户默认过客组");
			return  this.findByGuestDefault();
		}
	}

	public Group findById(int id) {
		if(id>0){
			Group model = CACHE_GROUP.get(CacheKeys.getGroupKey(id));
			if(Validator.isEmpty(model)){
				model = this.getGroupDAO().findById(id);
				if(!Validator.isEmpty(model)){
					CACHE_GROUP.put(CacheKeys.getGroupKey(id),model);
					
				}
			}
			return model;
		}else{
			return null;
		}
	}

	public void createOrUpdate(Group model) throws ClubException {
		if(model.getGroupId()>0){
			this.update(model);
		}else{
			this.create(model);
		}
	}

	public void create(Group model) throws ClubException {
		if(Validator.isEmpty(model.getGroupName())){
			throw new ClubException(MessageUtils.getMessage("error_empty"));
		}
		this.getGroupDAO().create(model);
		CACHE_GROUP.put(CacheKeys.getKey(model),model);
		if(model.getGuestDefault()){
			CACHE_GROUP.put(CacheKeys.getGroupKeyByGuestDefault(),model);
			this.getGroupDAO().updateGuestDefaultNoId(model.getGroupId(),false);
		}
		if(model.getRegisterDefault()){
			CACHE_GROUP.put(CacheKeys.getGroupKeyByRegisterDefault(),model);
			this.getGroupDAO().updateRegisterDefaultNoId(model.getGroupId(),false);
		}
		//USER_CACHE_GROUP.clear();
	}

	public void update(Group model) throws ClubException {
		if(Validator.isEmpty(model.getGroupName())){
			throw new ClubException(MessageUtils.getMessage("error_empty"));
		}else{
			Group item = this.getGroupDAO().findById(model.getGroupId());
			if(Validator.isEmpty(item)){
				throw new ClubException(MessageUtils.getMessage("error_system"));
			}else{
				BeanUtils.copyProperties(item,model);
				this.getGroupDAO().update(item);
				model.setGroupId(item.getGroupId());
				CACHE_GROUP.put(CacheKeys.getKey(model),model);
				if(item.getGuestDefault()){
					CACHE_GROUP.put(CacheKeys.getGroupKeyByGuestDefault(),model);
					this.getGroupDAO().updateGuestDefaultNoId(item.getGroupId(),false);
				}
				if(item.getRegisterDefault()){
					CACHE_GROUP.put(CacheKeys.getGroupKeyByRegisterDefault(),model);
					this.getGroupDAO().updateRegisterDefaultNoId(item.getGroupId(),false);
				}
			}
		}
	}

	public int delete(Group model) throws ClubException {
		if(model.getGroupId()==0){
			throw new ClubException(MessageUtils.getMessage("error_parameter"));
		}
		model = this.findById(model.getGroupId());
		if(Validator.isEmpty(model)){
			throw new ClubException(MessageUtils.getMessage("error_delete_noid"));
		}else{
			if(model.getGuestDefault()){
				throw new ClubException(MessageUtils.getMessage("error_delete_guestDefault"));
			}
			else if(model.getRegisterDefault()){
				throw new ClubException(MessageUtils.getMessage("error_delete_registerDefault"));
			}else{
				Group item = new Group();
				item.setGroupId(model.getGroupId());
				int c = this.getGroupDAO().delete(item);
				CACHE_GROUP.remove(CacheKeys.getKey(model));
				if(item.getGuestDefault()){
					CACHE_GROUP.remove(CacheKeys.getGroupKeyByGuestDefault());
				}
				if(item.getRegisterDefault()){
					CACHE_GROUP.remove(CacheKeys.getGroupKeyByRegisterDefault());
				}
				return c;
			}
		}
	}

	public int delete(String[] ids) throws ClubException {
		if(Validator.isEmpty(ids)){
			throw new ClubException(MessageUtils.getMessage("error_parameter"));
		}else{
			int c = 0;
			for(int i=0; i<ids.length; i++){
				int id = TypeChange.stringToInt(ids[i]);
				Group model = new Group();
				model.setGroupId(id);
				try {
					c += this.delete(model);
				} catch (ClubException e) {
					logger.error(e.toString());
				}
			}
			return c;
		}
	}

	public List<Group> findByParameter(GroupParameter param) {
		return this.getGroupDAO().findByParameter(param);
	}

	public long countByParameter(GroupParameter param) {
		return this.getGroupDAO().countByParameter(param);
	}

	public GroupDAO getGroupDAO() {
		return DAOWrapper.<GroupDAO>getSingletonInstance(DAOLocator.GROUP);
	}
	

	public Group findByGuestDefault() {
		Group model = CACHE_GROUP.get(CacheKeys.getGroupKeyByGuestDefault());
		if(Validator.isEmpty(model)){
			model = this.getGroupDAO().findByGuestDefault();
			CACHE_GROUP.put(CacheKeys.getGroupKeyByGuestDefault(),model);
		}
		return model;
	}

	public Group findByRegisterDefault() {
		Group model = CACHE_GROUP.get(CacheKeys.getGroupKeyByRegisterDefault());
		if(Validator.isEmpty(model)){
			model = this.getGroupDAO().findByRegisterDefault();
			CACHE_GROUP.put(CacheKeys.getGroupKeyByRegisterDefault(),model);
		}
		return model;
	}
	
	public GroupOfForumService getGroupOfForumService() {
		return ServiceWrapper.<GroupOfForumService>getSingletonInstance(ServiceLocator.GROUPOFFORUM);
	}

}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?