lxw
2020-07-02 652efd980fa7243b1d49fffdfe0878a1fc057794
广西铁塔项目添加无账号登录
2个文件已修改
568 ■■■■■ 已修改文件
gx_tieta/src/com/fgkj/actions/LoginAction.java 535 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
gx_tieta/src/com/fgkj/services/User_infService.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
gx_tieta/src/com/fgkj/actions/LoginAction.java
@@ -1,254 +1,281 @@
package com.fgkj.actions;
import java.net.URLEncoder;
import java.util.Date;
import java.util.List;
import java.util.Map;
import javax.servlet.http.Cookie;
import com.fgkj.dao.BaseDAO;
import com.fgkj.dao.BaseDAOFactory;
import com.fgkj.db.DBUtil;
import com.fgkj.db.IDatabaseName;
import com.fgkj.dto.ServiceModel;
import com.fgkj.dto.User;
import com.fgkj.dto.UserClient;
import com.fgkj.dto.User_Chart;
import com.fgkj.dto.User_inf;
import com.fgkj.dto.User_log;
import com.fgkj.services.UserService;
import com.fgkj.services.User_ChartService;
import com.fgkj.services.User_battgroup_baojigroup_battgroupService;
import com.fgkj.services.User_infService;
import com.fgkj.services.User_logService;
import com.fgkj.services.Vip_userService;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport{
    private User_inf uinf;
    private ServiceModel model;
    //private String user;
    //private String password;
    private String json;
    private String result;
    private User_infService service=new User_infService();
    private Vip_userService vservice=new Vip_userService();
    //web版登录
    public String login() {
        //System.err.println(uinf);
        model=vservice.login(uinf);
        //System.out.println(model);
        if(model.getCode()!=1){
            model=service.login(uinf);
            if(model.code == 1){
                User_inf u = (User_inf) ActionUtil.getUser();
                //System.out.println(u);
                if(u!=null){
                    //setUserBaoji(u);            //存储当前用户的包机组
                    recordUserlogin(u);            //记录当前用户的登录记录
                    setUserLogo(u);                //记录当前用户的所属部门的logo
                }
            }
        }
        result=ActionUtil.tojson(model);
        return "success";
    }
    //手机端登录action
    public String MobileLogin(){
        //System.out.println(uinf);
        String usnId64=(String) ActionUtil.EncryptionBase64(uinf.getUpassword());
        uinf.setUpassword(usnId64);
        //System.out.println(usnId64+"  : action");
        model=service.login(uinf);
        //System.out.println(model);
        if(model.code==1){
            User_logService logservice= new User_logService();
            User_log log = new User_log();
            User_inf uinf = (User_inf) ActionUtil.getUser();
            if(uinf!=null){
                log.setuId(uinf.getUId());
                log.setUOprateDay(new Date());
                log.setuOprateMsg("登录移动系统");
                log.setUOprateType(UserUtil.LOGIN);
                log.setuTerminalIp(ActionUtil.getRequest().getRemoteAddr());
                logservice.add(log);
            }
        }
        //System.out.println(model);
        result=ActionUtil.tojson(model);
        //System.out.println(result);
        return "success";
    }
    //检查超级管理员是否
    public String  checkVip(){
        Map<String, UserClient> map = (Map) ActionUtil.getApplication().getAttribute("vips");
        model=vservice.checkVip();
        result=ActionUtil.tojson(model);
        return SUCCESS;
    }
    /**
     * 判断是否有另一同一账号登陆的用户
     * @return
     */
    public String check(){
        //System.out.println("开始检查");
        model=service.checkUser();
        uinf=(User_inf)ActionUtil.getSession().getAttribute("user");
        if(model.code == 1){
            ActionUtil.getSession().invalidate();        //清除当前的session;                //清除session
        }
        result=ActionUtil.tojson(model);
        return "success";
    }
    /**
     * 退出登录
     * @return
     */
    public String exitUser(){
        //将当前用户从所有的登陆用户中移除
        Map<String, UserClient> map = (Map) ActionUtil.getApplication().getAttribute("users");
        if(map!=null && map.size()>0){
            User_inf user = (User_inf) ActionUtil.getSession().getAttribute("user");
            if(user!=null){
                //System.out.println(user);
                UserClient client = map.get(user.getUName());
                //System.out.println(client);
                if(client!=null){
                    map.remove(user.getUName());
                }
                User_logService logservice= new User_logService();
                User_log log = new User_log();
                log.setuId(user.getUId());
                log.setUOprateDay(new Date());
                log.setuOprateMsg("登出系统");
                log.setUOprateType(UserUtil.LOGOUT);
                log.setuTerminalIp(ActionUtil.getRequest().getLocalAddr());
                logservice.add(log);
            }
            ActionUtil.getSession().invalidate();        //清除session
        }
        return "success";
    }
    /**
     * 存储当前用户的包机组信息
     * @param u
     */
    public void setUserBaoji(User_inf u){
        User_battgroup_baojigroup_battgroupService se = new User_battgroup_baojigroup_battgroupService();
        try {
            Object batts = se.serchByCondition(u).getData();
            //System.out.println(batts.toString());
            Cookie b = new Cookie("batts",URLEncoder.encode(ActionUtil.tojson(batts),"UTF-8"));
            b.setMaxAge(30*24*60*60);
            ActionUtil.getResponse().addCookie(b);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    /**
     * 记录用户的登录记录
     * @param u
     */
    public void recordUserlogin(User_inf u){
        try {
            User_logService logservice= new User_logService();
            User_log log = new User_log();
            log.setuId(u.getUId());
            log.setUOprateDay(new Date());
            log.setuOprateMsg("登录PC系统");
            log.setUOprateType(UserUtil.LOGIN);
            log.setuTerminalIp(ActionUtil.getRequest().getRemoteAddr());
            logservice.add(log);
        } catch (Exception e) {
            System.out.println("记录用户的登录信息出错");
            e.printStackTrace();
        }
    }
    /**
     * 查询用户所述的部门 对应的logo
     */
    public void setUserLogo(User_inf u){
        try {
            BaseDAO dao = BaseDAOFactory.getBaseDAO(BaseDAO.USER_CHART);
            List ls = dao.serchByCondition(u);
            String uc = "whyc";
            if(ls != null && ls.size()>0){
                uc = ((User_Chart)ls.get(0)).getChart_file();
            }
            Cookie c = new Cookie("user_logo",uc);
            c.setMaxAge(30*24*60*60);
            ActionUtil.getResponse().addCookie(c);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    /**
     * 退出登录
     * @return
     */
    public String exitVUser(){
        ActionUtil.getSession().invalidate();
        return SUCCESS;
    }
    //通过制定的字符串获取session
    public String getSessionByString(){
        Object obj = ActionUtil.getSession().getAttribute(json);
        if(obj != null){
            result = ActionUtil.tojson(obj);
        }else{
            result = "";
        }
        return SUCCESS;
    }
    /**
     * 初始化数据库连接池
     * @return
     */
    public String initDBPool(){
        DBUtil.initPool();
        return SUCCESS;
    }
    public String getResult() {
        return result;
    }
    public void setResult(String result) {
        this.result = result;
    }
    public User_inf getUinf() {
        return uinf;
    }
    public void setJson(String json) {
        this.json = json;
    }
    public void setUinf(User_inf uinf) {
        this.uinf = uinf;
    }
}
package com.fgkj.actions;
import java.net.URLEncoder;
import java.util.Date;
import java.util.List;
import java.util.Map;
import javax.servlet.http.Cookie;
import com.fgkj.dao.BaseDAO;
import com.fgkj.dao.BaseDAOFactory;
import com.fgkj.db.DBUtil;
import com.fgkj.db.IDatabaseName;
import com.fgkj.dto.ServiceModel;
import com.fgkj.dto.User;
import com.fgkj.dto.UserClient;
import com.fgkj.dto.User_Chart;
import com.fgkj.dto.User_inf;
import com.fgkj.dto.User_log;
import com.fgkj.services.UserService;
import com.fgkj.services.User_ChartService;
import com.fgkj.services.User_battgroup_baojigroup_battgroupService;
import com.fgkj.services.User_infService;
import com.fgkj.services.User_logService;
import com.fgkj.services.Vip_userService;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport{
    private User_inf uinf;
    private ServiceModel model;
    //private String user;
    //private String password;
    private String json;
    private String result;
    private User_infService service=new User_infService();
    private Vip_userService vservice=new Vip_userService();
    //web版登录
    public String login() {
        //System.err.println(uinf);
        model=vservice.login(uinf);
        //System.out.println(model);
        if(model.getCode()!=1){
            model=service.login(uinf);
            if(model.code == 1){
                User_inf u = (User_inf) ActionUtil.getUser();
                //System.out.println(u);
                if(u!=null){
                    //setUserBaoji(u);            //存储当前用户的包机组
                    recordUserlogin(u);            //记录当前用户的登录记录
                    setUserLogo(u);                //记录当前用户的所属部门的logo
                }
            }
        }
        result=ActionUtil.tojson(model);
        return "success";
    }
    //web版登录直接访问(只验证账号不验证密码)
    public String login_direct() {
        model=service.login_direct(uinf);
        if(model.code == 1){
            User_inf u = (User_inf) ActionUtil.getUser();
            if(u!=null){
                //setUserBaoji(u);            //存储当前用户的包机组
                recordUserlogin(u);            //记录当前用户的登录记录
                setUserLogo(u);                //记录当前用户的所属部门的logo
            }
        }
        if(model.getCode()==1){
            Cookie c = null;
            //System.out.println(ActionUtil.DecryptionBase64());
            if(uinf.getUId() == 1){
                c = new Cookie("user", ActionUtil.EncryptionBase64(ActionUtil.getGson().toJson(uinf)).toString());
            }else{
                c = new Cookie("user", "");
            }
            //让Cookie保留30天
            c.setMaxAge(30*24*60*60);
            ActionUtil.getResponse().addCookie(c);
        }
        result=ActionUtil.tojson(model);
        return "success";
    }
    //手机端登录action
    public String MobileLogin(){
        //System.out.println(uinf);
        String usnId64=(String) ActionUtil.EncryptionBase64(uinf.getUpassword());
        uinf.setUpassword(usnId64);
        //System.out.println(usnId64+"  : action");
        model=service.login(uinf);
        //System.out.println(model);
        if(model.code==1){
            User_logService logservice= new User_logService();
            User_log log = new User_log();
            User_inf uinf = (User_inf) ActionUtil.getUser();
            if(uinf!=null){
                log.setuId(uinf.getUId());
                log.setUOprateDay(new Date());
                log.setuOprateMsg("登录移动系统");
                log.setUOprateType(UserUtil.LOGIN);
                log.setuTerminalIp(ActionUtil.getRequest().getRemoteAddr());
                logservice.add(log);
            }
        }
        //System.out.println(model);
        result=ActionUtil.tojson(model);
        //System.out.println(result);
        return "success";
    }
    //检查超级管理员是否
    public String  checkVip(){
        Map<String, UserClient> map = (Map) ActionUtil.getApplication().getAttribute("vips");
        model=vservice.checkVip();
        result=ActionUtil.tojson(model);
        return SUCCESS;
    }
    /**
     * 判断是否有另一同一账号登陆的用户
     * @return
     */
    public String check(){
        //System.out.println("开始检查");
        model=service.checkUser();
        uinf=(User_inf)ActionUtil.getSession().getAttribute("user");
        if(model.code == 1){
            ActionUtil.getSession().invalidate();        //清除当前的session;                //清除session
        }
        result=ActionUtil.tojson(model);
        return "success";
    }
    /**
     * 退出登录
     * @return
     */
    public String exitUser(){
        //将当前用户从所有的登陆用户中移除
        Map<String, UserClient> map = (Map) ActionUtil.getApplication().getAttribute("users");
        if(map!=null && map.size()>0){
            User_inf user = (User_inf) ActionUtil.getSession().getAttribute("user");
            if(user!=null){
                //System.out.println(user);
                UserClient client = map.get(user.getUName());
                //System.out.println(client);
                if(client!=null){
                    map.remove(user.getUName());
                }
                User_logService logservice= new User_logService();
                User_log log = new User_log();
                log.setuId(user.getUId());
                log.setUOprateDay(new Date());
                log.setuOprateMsg("登出系统");
                log.setUOprateType(UserUtil.LOGOUT);
                log.setuTerminalIp(ActionUtil.getRequest().getLocalAddr());
                logservice.add(log);
            }
            ActionUtil.getSession().invalidate();        //清除session
        }
        return "success";
    }
    /**
     * 存储当前用户的包机组信息
     * @param u
     */
    public void setUserBaoji(User_inf u){
        User_battgroup_baojigroup_battgroupService se = new User_battgroup_baojigroup_battgroupService();
        try {
            Object batts = se.serchByCondition(u).getData();
            //System.out.println(batts.toString());
            Cookie b = new Cookie("batts",URLEncoder.encode(ActionUtil.tojson(batts),"UTF-8"));
            b.setMaxAge(30*24*60*60);
            ActionUtil.getResponse().addCookie(b);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    /**
     * 记录用户的登录记录
     * @param u
     */
    public void recordUserlogin(User_inf u){
        try {
            User_logService logservice= new User_logService();
            User_log log = new User_log();
            log.setuId(u.getUId());
            log.setUOprateDay(new Date());
            log.setuOprateMsg("登录PC系统");
            log.setUOprateType(UserUtil.LOGIN);
            log.setuTerminalIp(ActionUtil.getRequest().getRemoteAddr());
            logservice.add(log);
        } catch (Exception e) {
            System.out.println("记录用户的登录信息出错");
            e.printStackTrace();
        }
    }
    /**
     * 查询用户所述的部门 对应的logo
     */
    public void setUserLogo(User_inf u){
        try {
            BaseDAO dao = BaseDAOFactory.getBaseDAO(BaseDAO.USER_CHART);
            List ls = dao.serchByCondition(u);
            String uc = "whyc";
            if(ls != null && ls.size()>0){
                uc = ((User_Chart)ls.get(0)).getChart_file();
            }
            Cookie c = new Cookie("user_logo",uc);
            c.setMaxAge(30*24*60*60);
            ActionUtil.getResponse().addCookie(c);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    /**
     * 退出登录
     * @return
     */
    public String exitVUser(){
        ActionUtil.getSession().invalidate();
        return SUCCESS;
    }
    //通过制定的字符串获取session
    public String getSessionByString(){
        Object obj = ActionUtil.getSession().getAttribute(json);
        if(obj != null){
            result = ActionUtil.tojson(obj);
        }else{
            result = "";
        }
        return SUCCESS;
    }
    /**
     * 初始化数据库连接池
     * @return
     */
    public String initDBPool(){
        DBUtil.initPool();
        return SUCCESS;
    }
    public String getResult() {
        return result;
    }
    public void setResult(String result) {
        this.result = result;
    }
    public User_inf getUinf() {
        return uinf;
    }
    public void setJson(String json) {
        this.json = json;
    }
    public void setUinf(User_inf uinf) {
        this.uinf = uinf;
    }
}
gx_tieta/src/com/fgkj/services/User_infService.java
@@ -31,7 +31,38 @@
        dao = BaseDAOFactory.getBaseDAO(BaseDAO.USER_INF);
        upservice = new User_permitgroupService();
    }
    //web版登录直接访问(只验证账号不验证密码)
    public ServiceModel login_direct(Object obj) {
        User_inf uinf = (User_inf) obj;
        List list = dao.serchByCondition(uinf);
        if (list == null || list.size() < 1) {
            model.setMsg(this.getText("Username_error"));
        } else {
            User_inf u = (User_inf) list.get(0);
            uinf.setUSnId(u.getUSnId());
            model.setCode(1);
            model.setMsg("index.jsp");
            //model.setMsg("index-outline.jsp");
            // 将登陆成功的用户存入session
            ActionUtil.getSession().setAttribute("user", u);
            //设置session不活动时间为30分
            ActionUtil.getSession().setMaxInactiveInterval(60*30);
            ActionUtil.getSession().setAttribute("ip",ActionUtil.getRequest().getRemoteAddr());
            User_permitgroupService upgs=new User_permitgroupService();
            ServiceModel model1=upgs.serchItem(u);
            //System.out.println(model.getData());
            if(model1.getCode()==1){
                ActionUtil.getSession().setAttribute("permits", ActionUtil.tojson(model1.getData()));
            }else{
                model.setCode(0);
                model.setMsg("还未分配权限");
            }
            //将新登录的用户存入application
            setApplication(u);
          }
        return model;
    }
    //5.1用户管理(添加)
    public ServiceModel add(Object obj) {
        int flag=((User_infImpl)dao).addJudge(obj);