package com.cabletech.business.login.action;
import java.util.Date;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.Results;
import org.springframework.util.CollectionUtils;
import com.cabletech.baseinfo.base.BaseConfig;
import com.cabletech.baseinfo.business.Service.BaseInfoProvider;
import com.cabletech.baseinfo.business.entity.UserInfo;
import com.cabletech.business.base.model.UserOnlineLog;
import com.cabletech.business.base.service.UserInfoService;
import com.cabletech.business.base.service.UserOnlineLogService;
import com.cabletech.common.base.BaseAction;
import com.cabletech.common.base.SysConstant;
import com.cabletech.common.config.GlobeConfigParameter;
import com.cabletech.common.servlet.SysServlet;
/**
* 登录Action
*
* @author Administrator
*
*/
@Namespace("/login")
@Results({ @Result(name = "index", location = "/frames/default/main.jsp"),
@Result(name = "check", location = "/frames/default/login.jsp") })
@Action("/loginAction")
public class LoginAction extends BaseAction {
private static final long serialVersionUID = 1L;
private String userid;
private String password;
@Resource(name = "userInfoServiceImpl")
private UserInfoService userInfoService;
@Resource(name = "globeConfigParameter")
private GlobeConfigParameter config;
@Resource(name = "baseInfoProvider")
private BaseInfoProvider baseInfoProvider;
@Resource(name = "userOnlineLogServiceImpl")
private UserOnlineLogService onlineLogService;
/**
* 转向登录页面
*
* @return
* @throws Exception
*/
public String index() throws Exception {
userid = null;
password = null;
return "check";
}
/**
* 对登录用户进行认证
*
* @return
* @throws Exception
*/
public String security() throws Exception {
if ("".equals(userid)) {
getRequest().setAttribute("msg", "用户名不能为空");
return "check";
}
UserInfo userInfo = userInfoService.getUserInfoByUserId(userid);
if (userInfo == null) {
getRequest().setAttribute("msg", "用户或密码不正确");
userid = "";
return "check";
} else {
if (!userInfo.getPassword().equals(password)) {
getRequest().setAttribute("msg", "用户或密码不正确");
return "check";
}
}
List<Map<String, Object>> indexmenuList = baseInfoProvider.getMenuList(
userInfo.getUserId(), SysConstant.SYSTEM_ID, "");
userInfo.setLoginIp(getRequest().getRemoteAddr());
sessionManager.put("indexmenu", indexmenuList);
sessionManager.put(SysConstant.SESSION_USERINFO_KEY, userInfo);
Map<String, Object> menumap = baseInfoProvider.getMenuList(
userInfo.getUserId(), SysConstant.SYSTEM_ID,
SysConstant.MENU_LV, BaseConfig.EXTJS_JSON_TYPE);
sessionManager.put("menuMap", menumap);
// 加载用户设置
// 将用户专业类型存放到会话中
List<Map<String, Object>> businessTypeList = userInfo
.getBusinessTypes();
Map<Object, Object> businessTypeMap = new LinkedHashMap<Object, Object>();
if (!CollectionUtils.isEmpty(businessTypeList)) {
for (int i = 0; i < businessTypeList.size(); i++) {
Map<String, Object> map = businessTypeList.get(i);
if (SysConstant.DICTIONARY_FORMITEM_BUSINESSTYPE_C31.equals(map
.get("CODEVALUE"))) {
businessTypeMap.put(map.get("CODEVALUE"), map.get("LABLE"));
}
if (SysConstant.DICTIONARY_FORMITEM_BUSINESSTYPE_C32.equals(map
.get("CODEVALUE"))) {
businessTypeMap.put(map.get("CODEVALUE"), map.get("LABLE"));
}
if (SysConstant.DICTIONARY_FORMITEM_BUSINESSTYPE_C33.equals(map
.get("CODEVALUE"))) {
businessTypeMap.put(map.get("CODEVALUE"), map.get("LABLE"));
}
if (SysConstant.DICTIONARY_FORMITEM_BUSINESSTYPE_C34.equals(map
.get("CODEVALUE"))) {
businessTypeMap.put(map.get("CODEVALUE"), map.get("LABLE"));
}
}
}
// 保存用户登陆信息
UserOnlineLog uol = new UserOnlineLog();
uol.setIp(getRequest().getRemoteAddr());
Date date = new Date();
uol.setLogin_time(date);
uol.setPersonid(userInfo.getPersonId());
onlineLogService.save(uol);
SysServlet.setUserinfo(userInfo);
sessionManager.put("businessTypeMap", businessTypeMap);
sessionManager.put("WEBGIS_DEPLOYNAME", config.getWebGisDeployname());
return "index";
}
/**
* 登出
*
* @return
* @throws Exception
*/
public String logout() throws Exception {
sessionManager.clear();
return null;
}
public String getUserid() {
return userid;
}
public void setUserid(String userid) {
this.userid = userid;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
protected void prepareViewModel() throws Exception {
// TODO Auto-generated method stub
}
@Override
protected void prepareSaveModel() throws Exception {
// TODO Auto-generated method stub
}
@Override
public Object getModel() {
// TODO Auto-generated method stub
return null;
}
}