📄 useraction.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 + -