}
public BizResult login(Map<String,String> input){
String username = input.get("username");
String password = input.get("password");
BizResult data = this.dao.query("usr_userinfo", null, "ui_username = '"+username+"' and ui_password = '"+password+"'");
Map<String,Object> user = data.getData();
if(null == user){
data.setType((String.valueOf(ResultType.REDIRECT)));
data.setPage("login.jsp");
this.setReqAttr("msg", "用户名或密码错误!");
return data;
}
if(!"admin".equals(username)){
this.setSionAttr("models", this.dao.injoin(
new String[]{"usr_obs o","sys_securityrole r","sys_securitygroup g","sys_r_sg_sr rr","mdl_security ms","sys_model m"},
new String[]{"rr.*,m.*"},
"o.o_role = r.sr_id and r.sr_id = rr.r_r and g.sg_id = rr.r_g and ms.ts_sg = g.sg_id and ms.ts_model = m.m_id",
"rr.r_read = 1 and o.o_id = "+user.get("ui_dept"),
null,100, 0).getData());
}else{
this.setSionAttr("models", this.dao.list("sys_model",null,null,null,100, 0).getData());
}
Object dept = user.get("ui_dept");
Map<String,Object> obs = null;
//获取到用户部门的相应仪表板和配置信息
if(null!=dept){
data = this.dao.query("usr_obs", new String[]{"o_desktop","o_profile"}, "o_id = "+dept.toString());
obs = data.getData();
if(obs!=null){
String tmp_pid = obs.get("o_profile").toString();
String tmp_did = obs.get("o_desktop").toString();
obs.clear();
if(!StringUtil.isNullOrEmpty(tmp_did)){
data = this.dao.injoin(new String[]{"usr_desktop d","usr_dashboard b"},
new String[]{"b.*"}, "d.d_id = b.d_desktop",
"d.d_id = "+tmp_did, " b.d_id ", 100, 0);
obs.put("dashboard", data.getData());
}
if(!StringUtil.isNullOrEmpty(tmp_pid)){
data = this.dao.query("usr_profile",null,"p_id = "+tmp_pid);
Map<String,Object> tmp_map = data.getData();
if(tmp_map.containsKey("p_profile")){
obs.put("profile",profile(tmp_map.get("p_profile").toString()));
}
}
//将部门的相应配置信息保存至SESSION中
this.setSionAttr(GlobalKey.OBS, obs);
}
}
//用户的配置信息
String pid = user.get("ui_profile").toString();
if(!StringUtil.isNullOrEmpty(pid)){
data = this.dao.query("usr_profile",null,"p_id = "+pid);
Map<String,Object> tmp_map = data.getData();
if(tmp_map.containsKey("p_profile")){
user.put("ui_profile",profile(tmp_map.get("p_profile").toString()));
}
}
//用户的仪表板信息
String did = user.get("ui_desktop").toString();
if(!StringUtil.isNullOrEmpty(did)){
data = this.dao.injoin(new String[]{"usr_desktop d","usr_dashboard b"},
new String[]{"b.*"}, "d.d_id = b.d_desktop", "d.d_id = "+did, " b.d_id ", 100, 0);
List<Map<String,Object>> dashboards = data.getData();
if(dashboards.size()<1){
this.setSionAttr(GlobalKey.DASHBOARD, dashboards);
}else{
this.setSionAttr(GlobalKey.DASHBOARD, obs.get("dashboard"));
}
}
this.setSionAttr(GlobalKey.USER, user);
data = this.dao.query("wf_entry",new String[]{"count(*) as num"},
"e_status ='process' and e_next_user = "+user.get("ui_id"));
Map<String,Object> todo_num = data.getData();
this.setSionAttr(GlobalKey.TODO_NUM,todo_num.get("num"));
BizResult rst = new BizResult().setCode("0");
rst.setType(String.valueOf(ResultType.JUMP));
rst.setPage("main.jsp");
return rst;
}