package com.adm.biz;
import java.util.List;
import java.util.Map;
import org.yfsoft.comm.util.BizResult;
import org.yfsoft.comm.util.StringUtil;
import com.adm.ctl.GlobalKey;
import com.adm.ctl.ResultType;
import com.adm.dao.CommonDao;
public class CommonService extends Service {
private CommonDao dao = null;
@Override
public void setDao( CommonDao dao) {
this.dao = dao;
}
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;
}
private Map<String,String> profile(String profileStr){
return StringUtil.fromJson(profileStr);
}
public BizResult dashboard(Map<String,String> input){
BizResult rst = new BizResult().setCode("0");
rst.setType(String.valueOf(ResultType.JUMP));
rst.setPage("desktop/desktop.jsp");
return rst;
}
public BizResult notice(Map<String,String> input){
BizResult rst = new BizResult().setCode("0");
List<Map<String,Object>> notices = this.dao.list("sys_notice",null, "n_status = 1","n_date desc",3,0).getData();
StringBuffer sb = new StringBuffer("<dl>");
for(Map<String,Object> n:notices){
sb.append("<dt>").append(n.get("n_title")).append("</dt>");
sb.append("<dd>").append(n.get("n_content")).append("</dd>");
}
sb.append("</dl>");
rst.setData(sb.toString());
rst.setType(String.valueOf(ResultType.ECHO));
return rst;
}
public BizResult logout(Map<String,String> input){
BizResult rst = new BizResult().setCode("0");
this.unsetSion(GlobalKey.USER);
rst.setType(String.valueOf(ResultType.JUMP));
rst.setPage("login.jsp");
return rst;
}
}