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 + -
显示快捷键?