⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 useraction.java

📁 java电信经典-学习例子源代码
💻 JAVA
字号:
package netctoss.selfservice.actions;

import exceptions.FeeQueryDetailException;
import exceptions.FeeQueryException;
import exceptions.UserLoginException;
import exceptions.UserUpdateException;
import global.ModuleMenu;
import global.PageParameters;
import global.RightMenu;
import global.SortMenu;

import java.util.Arrays;
import java.util.GregorianCalendar;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.Vector;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import netctoss.dao.AdminsDAO;
import netctoss.dao.ModulesDAO;
import netctoss.entities.Adminroles;
import netctoss.entities.Admins;
import netctoss.entities.Modules;
import netctoss.entities.Rights;
import netctoss.entities.Rolerights;
import netctoss.selfservice.entities.User;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;
import netctoss.selfservice.dao.UserDAO;
import netctoss.selfservice.forms.UserFeeQueryCondForm;

/**
 * 这个类主要负责响应用户请求,根据不同的请求调用数据访问对象中的不同方法, 完成对用户的响应。
 * 
 * @author liyan
 */
public class UserAction extends DispatchAction {
	private Modules getOperationMenuByRight(Integer  id){
		ModulesDAO dao= new ModulesDAO();
		dao.getSession().flush();
		return dao.findById(id);
	}
	//处理权限菜单
	public ActionForward index(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		String moduleid=request.getParameter("moduleid");
		if(moduleid!=null){
			Modules tmpmodule=getOperationMenuByRight(new Integer(moduleid));
			ModuleMenu module=new ModuleMenu();
			module.setId(tmpmodule.getId());
			module.setName(tmpmodule.getName());
			module.setUrl(tmpmodule.getUrl());
			request.getSession().setAttribute("module", module);
			String adminid=request.getSession().getAttribute("adminid").toString();
			//得到该用户的角色->权限->过滤得到
			AdminsDAO daoadmin=new AdminsDAO();
			//得到管理员
			Admins admin=daoadmin.findById(new Integer(adminid));
			//存放权限,便于过滤
			List<Rights> listallright=new Vector<Rights>();
			//得到用户角色集合
			Set  setadminroles=admin.getAdminroles();
			Iterator  it=setadminroles.iterator();
			//循环找出角色的所有权限
			while(it.hasNext()){
				Adminroles adminrole=(Adminroles)it.next();
				Set  setroleright=adminrole.getRoleid().getRolerights();
				Iterator itroleright=setroleright.iterator();
				while(itroleright.hasNext()){
					Rolerights   rr=(Rolerights)itroleright.next();
					if(rr.getRightid().getModuleid().getId().equals(new Integer(moduleid))){
						listallright.add(rr.getRightid());
					}
					
				}
			}
			//这里过滤重复的权限。
			Set setrights=new HashSet();
			for(Object obj:listallright){
				setrights.add(obj);
			}
			RightMenu[]  rm=new RightMenu[setrights.size()];
			
			Object[] obj=setrights.toArray();
			for(int i=0;i<obj.length;i++){
				rm[i]=new RightMenu();
				rm[i].setId(((Rights)obj[i]).getId());
				rm[i].setName(((Rights)obj[i]).getName());
				rm[i].setUrl(((Rights)obj[i]).getUrl());
			}
			//权限排序。
			Arrays.sort(rm,new SortMenu());
			//设置权限菜单到session,便于下步导航			
			request.getSession().setAttribute("menu", rm);
		}
		else{
			return mapping.findForward("back");
		}
		//根据提交的方法确定数据处理
		return mapping.findForward("goindex");
	}
	
	/**
	 * 当用户发出更新用户信息请求时调用此方法,在此方法中会调用
	 * @see selfservice.dao.UserDAO#update(AccountForm)方法,
	 * 进行更新。
	 */
	
	/**
	 * 当用户发出查询帐单请求时调用此方法,在此方法中会调用
	 * @see selfservice.dao.UserDAO#getFeeByMonth(UserFeeQueryCondForm, String)方法,
	 * 把得到的结果放到request中。
	 */
	public ActionForward browseFeeByMonth(ActionMapping mapping,
			ActionForm form, HttpServletRequest request,
			HttpServletResponse response) throws Exception {
		//获取查询条件表单数据
		UserFeeQueryCondForm  cond = (UserFeeQueryCondForm) form;
		GregorianCalendar  gc=new GregorianCalendar();
		int curenty=gc.get(gc.YEAR);
		int curentm=gc.get(gc.MONTH)+1;
		int year=cond.getYear();
		int month=cond.getMonth();
		//年,月,可能为0,则数据表不存在会报错误,则直接返回空数据
		//如果登录名为空,不进行任何查询
		//帐务帐号名称名称。
		if(cond.getLoginName()==null || cond.getLoginName().equals("")){
			//直接跳转到现实页面
			//并显示列表为空
			month=month==0?curentm:month;
			year=year==0?curenty:year;
			request.setAttribute("year", curenty);
			request.setAttribute("month", curentm);
			request.setAttribute("queryDetailYears", new Vector());
			request.setAttribute("years", new int[]{curenty-2,curenty-1,curenty});
			return mapping.findForward("gobrowsebymonth");
		}
		//处理输入登录名,年月的情况
		int currentpage=0;//默认当前页为0		
		UserDAO dao = new UserDAO();//访问数据查询	
		
		currentpage=cond.getPage();
		currentpage=currentpage==0?1:currentpage;//currentpage不可能为0
		String loginname=cond.getLoginName();
		//返回的对象不会为null,但size可能为0
		List queryDetailYears = dao.getFeeByMonth(year,month,currentpage-1,loginname);	
		request.getSession().setAttribute("userloginname", loginname);
		request.setAttribute("detailYear", queryDetailYears);
		request.setAttribute("years", new int[]{curenty-2,curenty-1,curenty});
		
		request.setAttribute("year", year);
		request.setAttribute("month", month);
		
		//导航条
		int totals=dao.getCount(year,month,loginname);
		int totalpages=totals%PageParameters.ITEMS_EACH_PAGE==0?totals/PageParameters.ITEMS_EACH_PAGE:totals/PageParameters.ITEMS_EACH_PAGE +1;
		String pagenav=PageParameters.pageNavigator(totalpages, currentpage, request.getContextPath()+ request.getServletPath()+"?method=browseFeeByMonth");
		request.setAttribute("pagenav", pagenav);
		return mapping.findForward("gobrowsebymonth");
	}

	/**
	 * 当用户发出查询帐单明细请求时调用此方法,在此方法中会调用
	 * @see selfservice.dao.UserDAO#getFeeDetailByMonth(UserFeeDetailForm)方法,
	 * 把得到的明细结果放到request中。
	 */
	public ActionForward browseFeeDetailByMonth(ActionMapping mapping,
			ActionForm form, HttpServletRequest request,
			HttpServletResponse response) throws Exception {
		//明细查询
		UserFeeQueryCondForm detail = (UserFeeQueryCondForm) form;
		UserDAO dao = new UserDAO();
		//应该知道业务帐号,实验室IP,年,月,帐务帐号不是必须的。
		int currentpage=1;
		//得到业务帐号,实验室IP,年,月
		String loginname=detail.getLoginName();
		String labip=detail.getLabip();
		int year=detail.getYear();
		int month=detail.getMonth();
		currentpage=detail.getPage();
		currentpage=currentpage<=0?1:currentpage;
		//返回的数据不会为null,但可能内容为空。
		List queryDetailMonth = dao.getFeeDetailByMonth(loginname,labip,year,month,currentpage-1);
		
		request.setAttribute("loginname", loginname);
		request.setAttribute("labip", labip);
		request.setAttribute("year", year);
		request.setAttribute("month", month);
		request.setAttribute("queryDetailMonth", queryDetailMonth);
		int totals=dao.getDetailCount(loginname,labip,year,month);
		
		if(detail.getPage()!=0)
			currentpage=detail.getPage();
		int totalpages=totals%PageParameters.ITEMS_EACH_PAGE==0?totals/PageParameters.ITEMS_EACH_PAGE:totals/PageParameters.ITEMS_EACH_PAGE +1;
		String pagenav=PageParameters.pageNavigator(totalpages, currentpage, request.getContextPath()+ request.getServletPath()+"?method=browseFeeDetailByMonth");
		request.setAttribute("pagenav", pagenav);
		return mapping.findForward("gobrowswdetail");
	}

}

⌨️ 快捷键说明

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