UserManager.java
上传用户:mingda
上传日期:2017-06-20
资源大小:27691k
文件大小:17k
源码类别:

OA系统

开发平台:

Java

  1. package com.gforce.gfoa;
  2. import com.gforce.currency.database.*;
  3. import com.gforce.currency.*;
  4. import java.util.*;
  5. /**
  6.  * <p>Title: 吉力科技办公自动化系统</p>
  7.  * <p>Description: 吉力科技办公自动化系统</p>
  8.  * <p>Copyright: 版权所有 2003 (c) 西安吉力科技发展有限公司  Copyright (c) 2003 GForce Sceince & Technology</p>
  9.  * <p>Company: 西安吉力科技发展有限公司 (GForce Sceince & Technology)</p>
  10.  * @author 马登军
  11.  * @version 1.0
  12.  */
  13. public class UserManager
  14.   extends RecordManager
  15. {
  16.   public UserManager()
  17.   {
  18.   }
  19.   protected final static String TableName = "UserInfo"; //定义声明本类操作表名称为“UserInfo”
  20.   protected final static String IDFieldName = "ID"; //定义声明主键或者可以确定唯一记录的字段名称为“ID”,必须为自增整型
  21.   protected final static String[] NumericFieldsName =
  22.     {
  23.     "PersonnelID", "RoleID"}; //声明数值型字段名称
  24.   protected final static String[] StringFieldsName =
  25.     {
  26.     "UserName", "Password"}; //声明字符型字段名称
  27.   protected final static String[] DatetimeFieldsName =
  28.     {}; //声明日期时间型字段名称
  29.   protected final static String[] TextFieldsName =
  30.     {}; //声明大字符串型字段名称
  31.   /**
  32.    * 根据字段名称获取插入数据时表单元素名称
  33.    * @param strFieldName  字段名称
  34.    * @return  表单素名称
  35.    */
  36.   protected String InsertParament(String strFieldName)
  37.   {
  38.     return "" + strFieldName + ""; //可以根据需要加前缀、后缀
  39.   }
  40.   /**
  41.    * 根据字段名称获取修改数据时表单元素名称
  42.    * @param strFieldName  字段名称
  43.    * @return  表单素名称
  44.    */
  45.   protected String UpdateParament(String strFieldName)
  46.   {
  47.     return "" + strFieldName + ""; //可以根据需要加前缀、后缀
  48.   }
  49.   /**
  50.    * 获取本类操作表名称
  51.    * @return  表名称
  52.    */
  53.   public String getTableName()
  54.   { //获取本类操作表名称
  55.     return TableName;
  56.   }
  57.   protected String getIDFieldName()
  58.   { //获取主键或者可以确定唯一记录的字段名称
  59.     return IDFieldName;
  60.   }
  61.   protected String[] getNumericFieldsName()
  62.   { //获取数值型字段名称
  63.     return NumericFieldsName;
  64.   }
  65.   protected String[] getStringFieldsName()
  66.   { //获取字符型字段名称
  67.     return StringFieldsName;
  68.   }
  69.   protected String[] getDatetimeFieldsName()
  70.   { //获取日期时间型字段名称
  71.     return DatetimeFieldsName;
  72.   }
  73.   protected String[] getTextFieldsName()
  74.   { //获取大字符串型字段名称
  75.     return TextFieldsName;
  76.   }
  77.   /**
  78.    *检查用户登录是否正确,并返回用户ID
  79.    * @param strUserName  用户名
  80.    * @param strPassword  用户密码
  81.    * @return  用户ID
  82.    */
  83.   public static int CheckLogin(String strUserName, String strPassword)
  84.   {
  85.     int intReturn = 0;
  86.     Vector vt = SQLManager.GetResultSet(
  87.       "Select ID from UserInfo where UserName = '" + strUserName.toLowerCase() +
  88.       "' and Password = '" + StringNew.getEncodePassword(strPassword) + "'");
  89.     if (vt.size() > 0)
  90.     {
  91.       intReturn = Integer.parseInt( ( (Vector) vt.get(0)).get(0).toString());
  92.     }
  93.     return intReturn;
  94.   }
  95.   /**
  96.    * 通过用户ID获取用户角色ID
  97.    * @param intUserID  用户ID
  98.    * @return  角色ID
  99.    */
  100.   public static int GetUserRoleID(int intUserID)
  101.   {
  102.     int intReturn = 0;
  103.     try
  104.     {
  105.       Vector vt = SQLManager.GetResultSet("Select RoleID from UserInfo where ID=" + intUserID + "");
  106.       if (vt.size() > 0)
  107.       {
  108.         intReturn = Integer.parseInt( ( (Vector) vt.get(0)).get(0).toString());
  109.       }
  110.     }
  111.     catch (Exception err)
  112.     {
  113.     }
  114.     return intReturn;
  115.   }
  116.   /**
  117.    * 获取所有记录向量集
  118.    * @return 所有记录向量集
  119.    */
  120.   public static Vector getAllRecord()
  121.   {
  122.     Vector vt = SQLManager.GetResultSet("SELECT a.*,b.Number,b.Name FROM " + TableName +
  123.       " as a left outer join PersonnelInfo as b on (a.PersonnelID = b.ID) ORDER BY b.Number,b.ID,a.ID");
  124.     return vt;
  125.   }
  126.   /**
  127.    * 获取属于指定ID部门的所有用户向量集和员工信息
  128.    * @param iDepartmentID  指定部门ID
  129.    * @return 属于指定部门的用户向量集
  130.    */
  131.   public static Vector getRecordAndPersonnelInfoByDepartmentID(int iDepartmentID)
  132.   {
  133.     String strSQL = "SELECT a.*,b.Number,b.Name FROM " + TableName
  134.       + " as a left outer join PersonnelInfo as b on (a.PersonnelID = b.ID) where not b.ID is null  ORDER BY b.Number,b.ID,a.ID";
  135.     if (iDepartmentID == 0)
  136.     {
  137.       strSQL = "SELECT a.*,b.Number,b.Name FROM " + TableName
  138.         + " as a left outer join PersonnelInfo as b on (a.PersonnelID = b.ID) where not b.ID is null ORDER BY b.Number,b.ID,a.ID";
  139.     }
  140.     else
  141.     {
  142.       strSQL = "SELECT a.*,b.Number,b.Name FROM " + TableName + " as a left outer join PersonnelInfo as b on (a.PersonnelID = b.ID) Where b.DepartmentID in (select ID from DepartmentInfo where Station like ((select Station from DepartmentInfo where ID="
  143.         + iDepartmentID + ")+'" + iDepartmentID + "_%')) or b.DepartmentID=" +
  144.         iDepartmentID + " ORDER BY b.Number,b.ID,a.ID";
  145.     }
  146.     Vector vt = SQLManager.GetResultSet(strSQL);
  147.     return vt;
  148.   }
  149.   /**
  150.    * 获取属于指定ID部门的所有用户向量集
  151.    * @param iDepartmentID  指定部门ID
  152.    * @return  属于指定部门的用户向量集
  153.    */
  154.   public static Vector getRecordByDepartmentID(int iDepartmentID)
  155.   {
  156.     Vector vt = SQLManager.GetResultSet("SELECT a.ID,a.UserName,a.Password,a.PersonnelID,a.RoleID,c.RoleName FROM "
  157.                                         + TableName + " as a left outer join PersonnelInfo as b on (a.PersonnelID=b.ID) left outer join RoleInfo as c on (a.RoleID=c.ID) where b.DepartmentID=" +
  158.                                         iDepartmentID +
  159.                                         " ORDER BY a.ID");
  160.     return vt;
  161.   }
  162.   /**
  163.    * 获取属于指定IDs部门的所有用户向量集
  164.    * @param iDepartmentID  指定部门ID
  165.    * @return  属于指定部门的用户向量集
  166.    */
  167.   public static Vector getRecordByDepartmentIDs(String strDepartmentIDs)
  168.   {
  169.     Vector vt = SQLManager.GetResultSet("SELECT a.ID,a.UserName,a.Password,a.PersonnelID,a.RoleID,c.RoleName FROM "
  170.                                         + TableName + " as a left outer join PersonnelInfo as b on (a.PersonnelID=b.ID) left outer join RoleInfo as c on (a.RoleID=c.ID) where b.DepartmentID in (" +
  171.                                         strDepartmentIDs +
  172.                                         ") ORDER BY a.ID");
  173.     return vt;
  174.   }
  175.   /**
  176.    * 获取指定用户ID的用户信息,包括部门ID
  177.    * @param iUserID 用户ID
  178.    * @return 指定用户ID的用户信息,包括部门ID
  179.    */
  180.   public static Vector getUserInfoByID(int iUserID)
  181.   {
  182.     Vector vt = SQLManager.GetResultSet("SELECT a.ID,a.UserName,a.Password,a.PersonnelID,a.RoleID,b.DepartmentID FROM "
  183.                                         + TableName +
  184.                                         " as a left outer join PersonnelInfo as b on (a.PersonnelID=b.ID) where a.ID="
  185.                                         + iUserID + " ORDER BY a.ID");
  186.     return vt;
  187.   }
  188.   /**
  189.    * 通过用户ID获取员工姓名
  190.    * @param iUserID  用户ID
  191.    * @return  员工姓名
  192.    */
  193.   public static String getPersonnelNameByUserID(int iUserID)
  194.   {
  195.     String strReturnValue = "姓名未知";
  196.     Vector vt = SQLManager.GetResultSet("SELECT b.Name FROM " + TableName +
  197.                                         " as a left outer join PersonnelInfo as b on (a.PersonnelID=b.ID) where a.ID="
  198.                                         + iUserID + " ORDER BY a.ID");
  199.     if (vt.size() > 0)
  200.     {
  201.       strReturnValue = ( (Vector) vt.get(0)).get(0).toString();
  202.     }
  203.     return strReturnValue;
  204.   }
  205.   /**
  206.    * 通过用户IDs字符串获取员工姓名
  207.    * @param strUserIDs  用户IDs字符串
  208.    * @return  员工姓名
  209.    */
  210.   public static String getPersonnelNamesByUserIDs(String strUserIDs)
  211.   {
  212.     String strReturnValue = "";
  213.     if(strUserIDs.length()>0)
  214.     {
  215.       Vector vt = SQLManager.GetResultSet("SELECT b.Name FROM " + TableName +
  216.         " as a left outer join PersonnelInfo as b on (a.PersonnelID=b.ID) where a.ID in ("
  217.         + strUserIDs + ") ORDER BY b.Number");
  218.       for(int i=0;i<vt.size();i++)
  219.       {
  220.         strReturnValue += "," + ((Vector) vt.get(i)).get(0).toString();
  221.       }
  222.     }
  223.     if(strReturnValue.length()>0)
  224.     {
  225.       return strReturnValue.substring(1);
  226.     }
  227.     else
  228.     {
  229.       return "";
  230.     }
  231.   }
  232.   /**
  233.    * 通过用户ID获取员工编号
  234.    * @param iUserID  用户ID
  235.    * @return  员工编号
  236.    */
  237.   public static String getPersonnelNumberByUserID(int iUserID)
  238.   {
  239.     String strReturnValue = "";
  240.     Vector vt = SQLManager.GetResultSet("SELECT b.Number FROM " + TableName +
  241.                                         " as a left outer join PersonnelInfo as b on (a.PersonnelID=b.ID) where a.ID="
  242.                                         + iUserID + " ORDER BY a.ID");
  243.     if (vt.size() > 0)
  244.     {
  245.       strReturnValue = ( (Vector) vt.get(0)).get(0).toString();
  246.     }
  247.     return strReturnValue;
  248.   }
  249.   /**
  250.    * 通过用户ID获取员工职务
  251.    * @param iUserID  用户ID
  252.    * @return  员工职务
  253.    */
  254.   public static String getPlaceNameByUserID(int iUserID)
  255.   {
  256.     String strReturnValue = "职务未知";
  257.     Vector vt = SQLManager.GetResultSet("SELECT c.PlaceName FROM " + TableName + " as a left outer join PersonnelInfo as b on (a.PersonnelID=b.ID) left outer join PlaceInfo as c on (b.PlaceID=c.ID) where a.ID=" +
  258.                                         iUserID + " ORDER BY a.ID");
  259.     if (vt.size() > 0)
  260.     {
  261.       strReturnValue = ( (Vector) vt.get(0)).get(0).toString();
  262.     }
  263.     return strReturnValue;
  264.   }
  265.   /**
  266.    * 通过用户ID获取部门名称
  267.    * @param iUserID  用户ID
  268.    * @return  员工所属部门名称
  269.    */
  270.   public static String getDepartmentNameByUserID(int iUserID)
  271.   {
  272.     String strReturnValue = SystemParament.GetSystemName();
  273.     Vector vt = SQLManager.GetResultSet("SELECT c.Name FROM " + TableName + " as a left outer join PersonnelInfo as b on (a.PersonnelID=b.ID) left outer join DepartmentInfo as c on (b.DepartmentID=c.ID) where a.ID=" +
  274.                                         iUserID + " ORDER BY a.ID");
  275.     if (vt.size() > 0)
  276.     {
  277.       strReturnValue = ( (Vector) vt.get(0)).get(0).toString();
  278.     }
  279.     return strReturnValue;
  280.   }
  281.   /**
  282.    * 通过用户ID获取部门ID
  283.    * @param iUserID  用户ID
  284.    * @return  员工所属部门ID
  285.    */
  286.   public static String getDepartmentIDByUserID(int iUserID)
  287.   {
  288.     String strReturnValue = SystemParament.GetSystemName();
  289.     Vector vt = SQLManager.GetResultSet("SELECT c.ID FROM " + TableName + " as a left outer join PersonnelInfo as b on (a.PersonnelID=b.ID) left outer join DepartmentInfo as c on (b.DepartmentID=c.ID) where a.ID=" +
  290.                                         iUserID + " ORDER BY a.ID");
  291.     if (vt.size() > 0)
  292.     {
  293.       strReturnValue = ( (Vector) vt.get(0)).get(0).toString();
  294.     }
  295.     return strReturnValue;
  296.   }
  297.   /**
  298.    * 通过用户ID获取用户角色名称
  299.    * @param iUserID  用户ID
  300.    * @return 用户角色名称
  301.    */
  302.   public static String getRoleNameByUserID(int iUserID)
  303.   {
  304.     String strReturnValue = "未知角色";
  305.     Vector vt = SQLManager.GetResultSet("SELECT b.RoleName FROM " + TableName +
  306.                                         " as a left outer join RoleInfo as b on (a.RoleID=b.ID) where a.ID=" +
  307.                                         iUserID + " ORDER BY a.ID");
  308.     if (vt.size() > 0)
  309.     {
  310.       strReturnValue = ( (Vector) vt.get(0)).get(0).toString();
  311.     }
  312.     return strReturnValue;
  313.   }
  314.   /**
  315.    * 修改用户密码
  316.    * @param strUserName 用户名
  317.    * @param strOldPassword  旧密码
  318.    * @param strNewPassword  新密码
  319.    * @return  错误代码
  320.    */
  321.   public static int changeUserPassword(String strUserName, String strOldPassword, String strNewPassword)
  322.   {
  323.     strNewPassword = StringNew.getEncodePassword(strNewPassword);
  324.     int iReturnValue = CheckLogin(strUserName, strOldPassword);
  325.     if (iReturnValue < 1)
  326.     {
  327.       return -4;
  328.     }
  329.     return SQLManager.ExcuteSQL("Update " + TableName + " set Password='" + strNewPassword + "' where ID="
  330.                                 + iReturnValue);
  331.   }
  332.   /**
  333.    * 获取用户列表数据向量集
  334.    * @return  用户列表数据向量集
  335.    */
  336.   public static Vector getUserTreeData()
  337.   {
  338.     Vector vc = new Vector();
  339.     vc = SQLManager.GetResultSet("select a.ID,b.Name,b.DepartmentID,b.Number,c.Station from UserInfo as a left outer join PersonnelInfo as b on (a.PersonnelID=b.ID) left outer join DepartmentInfo as c on(c.ID=b.DepartmentID) where b.Name<>'' and (not b.Number like '%离职%') order by b.Number,b.ID,a.ID");
  340.     return vc;
  341.   }
  342.   /**
  343.    * 获取所有用户FTP用户名、密码数据
  344.    * @return 所有用户FTP用户名、密码数据
  345.    */
  346.   public static Vector getAllUserFTPData()
  347.   {
  348.     return SQLManager.GetResultSet("Select a.ID,b.Name,b.Number,a.FTPUserName,a.FTPPassword from " + TableName
  349.       + " as a left outer join PersonnelInfo as b on (a.PersonnelID = b.ID) order by b.Number,b.ID,a.ID");
  350.   }
  351.   /**
  352.    * 获取指定用户的FTP用户名、密码
  353.    * @param iUserID 用户ID
  354.    * @return 指定用户的FTP用户名、密码
  355.    */
  356.   public static Vector getUserFTPData(int iUserID)
  357.   {
  358.     return SQLManager.GetResultSet("Select FTPUserName,FTPPassword from " + TableName + " where ID=" + iUserID);
  359.   }
  360.   /**
  361.    * 设置指定用户的FTP用户名、密码
  362.    * @param iUserID 用户ID
  363.    * @param strFTPUserName FTP用户名
  364.    * @param strFTPPassword FTP密码
  365.    * @return 错误代码
  366.    */
  367.   public static int updateUserFTPData(int iUserID, String strFTPUserName, String strFTPPassword)
  368.   {
  369.     Vector vt = SQLManager.GetResultSet("Select * from " + TableName + " where ID=" + iUserID);
  370.     if (vt.size() > 0)
  371.     {
  372.       strFTPUserName = strFTPUserName.replaceAll("'", "''");
  373.       strFTPPassword = strFTPPassword.replaceAll("'", "''");
  374.       return SQLManager.ExcuteSQL("Update " + TableName + " set FTPUserName='" + strFTPUserName + "',FTPPassword='"
  375.                                   + strFTPPassword + "' where ID=" + iUserID);
  376.     }
  377.     else
  378.     {
  379.       /**
  380.        * 该用户不存在
  381.        */
  382.       return -1;
  383.     }
  384.   }
  385.   /**
  386.    * 获取指定用户的风格ID
  387.    * @param iUserID 用户ID
  388.    * @return 指定用户的风格ID
  389.    */
  390.   public static int getUserStyleID(int iUserID)
  391.   {
  392.     try
  393.     {
  394.       Vector vt = SQLManager.GetResultSet("Select StyleID from " + TableName + " where ID=" + iUserID);
  395.       if (vt.size() > 0)
  396.       {
  397.         String strStyle = ( (Vector) vt.get(0)).get(0).toString();
  398.         if (strStyle.length() > 0)
  399.         {
  400.           return Integer.parseInt(strStyle);
  401.         }
  402.         else
  403.         {
  404.           return 0;
  405.         }
  406.       }
  407.       else
  408.       {
  409.         return 0;
  410.       }
  411.     }
  412.     catch (Exception err)
  413.     {
  414.       return 0;
  415.     }
  416.   }
  417.   /**
  418.    * 设置指定用户风格ID
  419.    * @param iUserID 用户ID
  420.    * @param iStyleID 风格ID
  421.    * @return 错误代码
  422.    */
  423.   public static int setUserStyle(int iUserID, int iStyleID)
  424.   {
  425.     Vector vt = SQLManager.GetResultSet("Select * from " + TableName + " where ID=" + iUserID);
  426.     if (vt.size() > 0)
  427.     {
  428.       vt = SQLManager.GetResultSet("Select * from StyleInfo where ID=" + iStyleID);
  429.       if (vt.size() > 0)
  430.       {
  431.         return SQLManager.ExcuteSQL("Update " + TableName + " set StyleID='" + iStyleID + "' where ID=" + iUserID);
  432.       }
  433.       else
  434.       {
  435.         /**
  436.          * 该系统风格不存在
  437.          */
  438.         return -8;
  439.       }
  440.     }
  441.     else
  442.     {
  443.       /**
  444.        * 该用户不存在
  445.        */
  446.       return -1;
  447.     }
  448.   }
  449.   /**
  450.    * 重构插入记录的方法,将用户名自动转换为小写,解决用户名区分大小写的问题
  451.    * @param m_request 包含记录内容的Request请求
  452.    * @return 新用户ID或者错误代码(小于1)
  453.    */
  454.   public int InsertRecord(Request m_request)
  455.   {
  456.     int iReturnValue = 0;
  457.     iReturnValue = super.InsertRecord(m_request);
  458.     SQLManager.ExcuteSQL("Update " + TableName + " set UserName='" + m_request.GetString(InsertParament("UserName")).toLowerCase() + "',Password='" + StringNew.getEncodePassword(m_request.GetString(InsertParament("Password"))) + "' where ID=" + iReturnValue);
  459.     return iReturnValue;
  460.   }
  461.   /**
  462.    * 重构修改记录的方法,将用户名自动转换为小写,解决用户名区分大小写的问题
  463.    * @param m_request  包含记录内容的Request请求
  464.    * @return  错误代码(小于1)
  465.    */
  466.   public int UpdateRecord(Request m_request)
  467.   {
  468.     int iReturnValue = super.UpdateRecord(m_request);
  469.     SQLManager.ExcuteSQL("update " + TableName + " set UserName='" + m_request.GetString(UpdateParament("UserName")).toLowerCase() + "',Password='" + StringNew.getEncodePassword(m_request.GetString(UpdateParament("Password"))) + "' where " + IDFieldName + "=" + m_request.GetInt(UpdateParament(IDFieldName)) + "");
  470.     return iReturnValue;
  471.   }
  472.   /**
  473.    * 获取属于指定ID部门的所有用户向量集
  474.    * @param iDepartmentID  指定部门ID
  475.    * @return  属于指定部门的用户向量集
  476.    */
  477.   public static Vector getRecordByIDs(String strIDs)
  478.   {
  479.     Vector vt = SQLManager.GetResultSet("select * from " + TableName + " where ID IN (" + strIDs + ")");
  480.     return vt;
  481.   }
  482. }