📄 cerpsam.java
字号:
session.setAttribute("year",year); session.setAttribute("mSysCode","sam"); session.setAttribute("mProgCode",""); // 设置当前用户状态 set customer ModelManager mm = (ModelManager) session.getAttribute("mm"); CustomerWebImpl customer = mm.getCustomerWebImpl(); customer.setUserId(userCode); customer.setCompanyCode(companyCode); customer.setCurrentYear(year); customer.setSessionCode(sessionCode); customer.setUserUniqueNo(userUniqueNo); customer.setUserName(userName); //以下关于部门的函数由cameran添加,用于提取用户所在部门代码2003-6-1 customer.setUserDept(userDept);//added by cameran customer.setUserDeptName(userDeptName);//added by cameran //以上关于部门的函数由cameran添加,用于提取用户所在部门代码2003-6-1 customer.setLanguage(language); customer.setLoggedIn(true); customer.setDefaultPage(defaultPage); //succeed request.setAttribute("flag",LoginStatusKeys.SUCCEED); return true ; }else // password does not match { request.setAttribute("flag",LoginStatusKeys.WRONG_PASSWORD); return false ; } }else // no this user { request.setAttribute("flag",LoginStatusKeys.NO_USER); return false ; } } catch (Exception e) { request.setAttribute("flag",LoginStatusKeys.DB_ERROR); return false ; } } // log out public synchronized void logout(String companyCode,String sessionCode) { if (!created()) return ; try { CommonDate today = new CommonDate(); int curTime = (int)(System.currentTimeMillis()/60000); int pageSize = 1000; int time_out = getTimeout(companyCode); String strFields = "login_datetime,log_no"; String strTables = "sam_session"; String strConditions = "company_code='" + companyCode + "' and (session_code='" + sessionCode + "' or visit_datetime<="+(curTime-time_out) + ")"; rs = pageQuery.getData(strFields,strTables,strConditions,pageSize); Vector vct = pageQuery.dividePage(1,pageSize); Debug.println("vct==null" + (vct==null) + ",vct.size()=" + vct.size()); if (vct != null) { int login_datetime = 0; int visit_datetime = 0; int log_no = 0; int online_minutes = 0; String mySql = null; String logout_datetime = today.getYMD()+ " " + today.getHM(); for(int i=0;i<vct.size();i++) { String[] value = (String[]) vct.elementAt(i); login_datetime = Integer.parseInt(value[0]); log_no = Integer.parseInt(value[1]); online_minutes = curTime - login_datetime; mySql = "update sam_access_log " + " set online_minutes=" + online_minutes + ", logout_datetime='" + logout_datetime + "' where company_code='" + companyCode + "' and log_no=" + log_no; Debug.println("mySql="+mySql); pageQuery.simpleUpdate(mySql); } } // delete session sql = "delete from sam_session " + " where company_code='" + companyCode + "' and (session_code='" + sessionCode + "' or visit_datetime<="+(curTime-time_out) + ")"; Debug.println(sql); pageQuery.simpleUpdate(sql); } catch (Exception e) { } } // to inhance efficiency, you can modify this method to get info from some class private int getLogProgLevel(String companyCode) { if (!created()) return 0 ; try { sql = "select log_prog_level from scg_run_info " + " where company_code='" + companyCode + "'" ; rs = pageQuery.getData(sql); if (rs != null && rs.next()) { return rs.getInt(1); } return 0; } catch (Exception e) { return 0 ; } } // get this prog's level private int getProgLevel(String companyCode,String sysCode,String progCode) { if (!created()) return 0 ; try { sql = "select prog_level from scg_program " + " where company_code='" + companyCode + "' and sys_code='" + sysCode + "' and prog_code='" + progCode + "'" ; rs = pageQuery.getData(sql); if (rs != null && rs.next()) { return rs.getInt(1); } return 0; } catch (Exception e) { return 0 ; } } // log prog visited private void m_logProg(String companyCode,String userUniqueNo,String sysCode,String progCode) { if (!created()) return ; try { CommonDate today = new CommonDate(); sql = "insert into sam_prog_log(company_code,log_no,sys_code,prog_code," + " user_unique_no,run_date,run_time,sys_name,prog_name,prog_value," + " user_name) select '" + companyCode + "'," + CerpGetNo.getNo(companyCode,"sam_prog_log") + ", '" + sysCode + "','" + progCode + "','" + userUniqueNo + "','" + today.getYMD() + "','" + today.getHM() + "',sys.sys_name,prog.prog_name_cn,prog.prog_value,body.body_name " + " from scg_system sys,scg_program prog,epd_address_book body " + " where sys.sys_code='" + sysCode + "' and prog.sys_code='" + sysCode + "' and prog.prog_code='" + progCode + "' and body.user_unique_no='" + userUniqueNo + "'" ; Debug.println("sql=" + sql); pageQuery.simpleUpdate(sql); return ; } catch (Exception e) { return ; } } // decide log it or not public void logProg(String companyCode,String userUniqueNo,String sysCode,String progCode) { if (getProgLevel(companyCode,sysCode,progCode)>=getLogProgLevel(companyCode)) m_logProg(companyCode,userUniqueNo,sysCode,progCode); return ; } // has session , refresh session public boolean hasSession(String sessionCode) { try { int curTime = (int)(System.currentTimeMillis()/60000); sql = "select 1 from sam_session " + " where session_code='" + sessionCode + "'" ; rs = pageQuery.getData(sql); if (rs != null && rs.next()) { refreshSession(sessionCode); return true ; } return false ; } catch (Exception e) { return false ; } } // refresh session private void refreshSession(String sessionCode) { try { int curTime = (int)(System.currentTimeMillis()/60000); sql = "update sam_session set visit_datetime=" + curTime + " where session_code='" + sessionCode + "'" ; pageQuery.simpleUpdate(sql); } catch (Exception e) {} } /**从库中取出子系统代码,程序代码,程序参数 * @param progValue * @param companyCode * @return string[3]*/ public String[] getSysAndProgCode(String progValue,String companyCode) { String [] value = new String[3]; try { sql = "select sys_code,prog_code,prog_params " + " from scg_program " + " where company_code='"+companyCode + "' and prog_value='"+progValue+"'"; rs = pageQuery.getData(sql); if (rs != null && rs.next()) { value[0] = rs.getString(1); value[1] = rs.getString(2); value[2] = rs.getString(3); } }catch(Exception e) { } return value; } // whether has right public boolean hasRight(String sysCode,String progCode,String companyCode, String userUniqueNo) { try { sql = "select check_right,prog_code_father from scg_program " + " where company_code='" + companyCode + "' and sys_code='" + sysCode + "' and prog_code='" + progCode + "'"; rs = pageQuery.getData(sql); if (rs != null && rs.next()) { String checkRight = rs.getString(1); String progCodeFather = rs.getString(2); checkRight = (checkRight==null?"":checkRight.trim()); progCodeFather = (progCodeFather==null?"":progCodeFather.trim()); //无须授权 if (checkRight.equals("N")) return true ; //须授权 if (progCodeFather.length()<1) //无父 { sql = "select 1 from sam_user_prog_right " + " where company_code='" + companyCode + "' and sys_code='" + sysCode + "' and prog_code='" + progCode + "' and user_unique_no='" + userUniqueNo + "'"; rs = pageQuery.getData(sql); if (rs!=null && rs.next()) return true ; return false ; } else //有父 { sql = "select 1 from sam_user_prog_right " + " where company_code='" + companyCode + "' and sys_code='" + sysCode + "' and prog_code='" + progCodeFather + "' and user_unique_no='" + userUniqueNo + "'"; rs = pageQuery.getData(sql); if (rs!=null && rs.next()) return true ; sql = "select 1 from scg_program " + " where company_code='" + companyCode + "' and sys_code='" + sysCode + "' and prog_code='" + progCodeFather + "' and check_right='N'"; rs = pageQuery.getData(sql); if (rs!=null && rs.next()) return true ; return false ; } } else { return true ; } } catch(Exception e) { return true ; } } // check right public boolean hasRight(String progValue,String companyCode,String userUniqueNo) { String [] value = getSysAndProgCode(progValue,companyCode); return hasRight(value[0],value[1],companyCode,userUniqueNo); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -