/// <summary> /// 获得资源的最大有效数 /// </summary> /// <param name="session"></param> /// <param name="strResourceID"></param> /// <returns></returns> private static OperationReturn GetResMax(SessionInfo session, string strResourceID) { OperationReturn optReturn = new OperationReturn(); try { string strSql = string.Empty; switch (session.DBType) { case 2: strSql = string.Format("SELECT C009 FROM T_00_010 WHERE C001 = {0}", strResourceID); optReturn = MssqlOperation.GetDataSet(session.DBConnectionString, strSql); if (!optReturn.Result) { return(optReturn); } break; case 3: strSql = string.Format(string.Format("SELECT C009 FROM T_00_010 WHERE C001 = {0}", strResourceID)); optReturn = OracleOperation.GetDataSet(session.DBConnectionString, strSql); if (!optReturn.Result) { return(optReturn); } break; } if (!optReturn.Result) { return(optReturn); } DataSet ds = optReturn.Data as DataSet; if (ds.Tables.Count <= 0 || ds.Tables[0].Rows.Count <= 0) { optReturn.Result = false; optReturn.Code = Defines.RET_FAIL; optReturn.Message = "Resource maximum effective number error"; return(optReturn); } optReturn.Result = true; optReturn.Code = Defines.RET_SUCCESS; optReturn.Data = ds.Tables[0].Rows[0][0].ToString(); } catch (Exception ex) { optReturn.Result = false; optReturn.Code = Defines.RET_FAIL; optReturn.Message = ex.Message; optReturn.Exception = ex; } return(optReturn); }
/// <summary> /// /// </summary> /// <param name="session"></param> /// <param name="listParams"></param> /// listParams[0] : UserID /// listParams[1] : MachineResID /// listParams[2] : HostAddress /// listParams[3] : HostPort /// listParams[4] : IsMain /// <returns></returns> public static OperationReturn ModifyKeyGenResource(SessionInfo session, List <string> listParams) { OperationReturn optReturn = new OperationReturn(); try { string rentToken = session.RentInfo.Token; string strSql = string.Empty; switch (session.DBType) { case 2: strSql = string.Format("SELECT C001,C011 FROM T_11_101_{0} WHERE C020 = '{1}' AND C002 ='1' AND C001 > 2860000000000000000 AND C001 < 2870000000000000000 ", session.RentInfo.Token, listParams[1]); optReturn = MssqlOperation.GetDataSet(session.DBConnectionString, strSql); if (!optReturn.Result) { return(optReturn); } break; case 3: strSql = string.Format("SELECT C001,C011 FROM T_11_101_{0} WHERE C020 = '{1}' AND C002 =1 AND C001 > 2860000000000000000 AND C001 < 2870000000000000000", session.RentInfo.Token, listParams[1]); optReturn = OracleOperation.GetDataSet(session.DBConnectionString, strSql); if (!optReturn.Result) { return(optReturn); } break; } if (!optReturn.Result) { return(optReturn); } DataSet ds = optReturn.Data as DataSet; if (ds.Tables.Count <= 0 || ds.Tables[0].Rows.Count <= 0) { //调用添加 AddKeyGenResource(session, listParams); return(optReturn); } //如果有记录 则直接更新 string strResID = ds.Tables[0].Rows[0][0].ToString(); string strKey = ds.Tables[0].Rows[0][1].ToString(); List <string> lstUpdate = new List <string>(); lstUpdate.Add(strResID); lstUpdate.Add(strKey); lstUpdate.Add(listParams[4]); lstUpdate.Add(listParams[2]); lstUpdate.Add(listParams[3]); lstUpdate.Add(listParams[1]); lstUpdate.Add(string.Empty); lstUpdate.Add(string.Empty); UpdateData(session, lstUpdate); optReturn.Result = true; optReturn.Code = Defines.RET_SUCCESS; optReturn.Data = ds.Tables[0].Rows[0].ToString(); } catch (Exception ex) { optReturn.Result = false; optReturn.Code = Defines.RET_FAIL; optReturn.Message = ex.Message; optReturn.Exception = ex; } return(optReturn); }
/// <summary> /// 从资源表中删除资源 /// </summary> /// <param name="session"></param> /// <param name="listParams"></param> /// listParams[0] : MachineID /// <returns></returns> public static OperationReturn DeleteKeyGenResource(SessionInfo session, List <string> listParams) { OperationReturn optReturn = new OperationReturn(); try { string rentToken = session.RentInfo.Token; string strSql = string.Empty; //先获得资源ID switch (session.DBType) { case 2: strSql = string.Format("SELECT C001 FROM T_11_101_{0} WHERE C020 = '{1}' AND C002 ='1' AND C001 >2860000000000000000 AND C001<2870000000000000000", session.RentInfo.Token, listParams[0]); optReturn = MssqlOperation.GetDataSet(session.DBConnectionString, strSql); if (!optReturn.Result) { return(optReturn); } break; case 3: strSql = string.Format("SELECT C001 FROM T_11_101_{0} WHERE C020 = '{1}' AND C002 =1 AND C001 >2860000000000000000 AND C001<2870000000000000000", session.RentInfo.Token, listParams[0]); optReturn = OracleOperation.GetDataSet(session.DBConnectionString, strSql); if (!optReturn.Result) { return(optReturn); } break; } if (!optReturn.Result) { return(optReturn); } DataSet ds = optReturn.Data as DataSet; if (ds.Tables.Count <= 0 || ds.Tables[0].Rows.Count <= 0) { return(optReturn); } //如果有记录 则删除 string strResID = ds.Tables[0].Rows[0][0].ToString(); switch (session.DBType) { case 2: strSql = string.Format("DELETE FROM T_11_101_{0} WHERE C001 = {1}", session.RentInfo.Token, strResID); optReturn = MssqlOperation.ExecuteSql(session.DBConnectionString, strSql); if (!optReturn.Result) { return(optReturn); } break; case 3: strSql = string.Format("DELETE FROM T_11_101_{0} WHERE C001 = {1}", session.RentInfo.Token, strResID); optReturn = OracleOperation.ExecuteSql(session.DBConnectionString, strSql); if (!optReturn.Result) { return(optReturn); } break; } optReturn = SendMsgToService00(listParams[1], listParams[2]); if (!optReturn.Result) { return(optReturn); } optReturn.Result = true; optReturn.Code = Defines.RET_SUCCESS; } catch (Exception ex) { optReturn.Result = false; optReturn.Code = Defines.RET_FAIL; optReturn.Message = ex.Message; optReturn.Exception = ex; } return(optReturn); }
/// <summary> /// 获得一个没有使用的key xml中使用 从0开始 /// </summary> /// <param name="session"></param> /// <param name="strResourceID"></param> /// <returns></returns> private static OperationReturn GetNewKey(SessionInfo session, string strResourceID, int iResMax) { OperationReturn optReturn = new OperationReturn(); try { string strSql = string.Empty; string strStartResID = strResourceID + "0000000000000000"; string strEndResID = (int.Parse(strResourceID) + 1).ToString() + "0000000000000000"; switch (session.DBType) { case 2: strSql = string.Format("SELECT C011 FROM T_11_101_{0} WHERE C001 > {1} AND C001<{2} AND C002 = 93", session.RentInfo.Token, strStartResID, strEndResID); optReturn = MssqlOperation.GetDataSet(session.DBConnectionString, strSql); if (!optReturn.Result) { return(optReturn); } break; case 3: strSql = string.Format("SELECT C011 FROM T_11_101_{0} WHERE C001 > {1} AND C001<{2} AND C002 = 93", session.RentInfo.Token, strStartResID, strEndResID); optReturn = OracleOperation.GetDataSet(session.DBConnectionString, strSql); if (!optReturn.Result) { return(optReturn); } break; } if (!optReturn.Result) { return(optReturn); } DataSet ds = optReturn.Data as DataSet; if (ds.Tables.Count <= 0 || ds.Tables[0].Rows.Count <= 0) { optReturn.Result = true; optReturn.Code = Defines.RET_SUCCESS; optReturn.Data = "1"; return(optReturn); } //如果已经有了资源 那就从0开始找没有使用的key List <int> lstKeysExists = new List <int>(); foreach (DataRow row in (optReturn.Data as DataSet).Tables[0].Rows) { int key = 0; int.TryParse(row[0].ToString(), out key); if (!lstKeysExists.Contains(key)) { lstKeysExists.Add(key); } } for (int i = 0; i < iResMax; i++) { if (!lstKeysExists.Contains(i + 1)) { optReturn.Result = true; optReturn.Code = Defines.RET_SUCCESS; optReturn.Data = i + 1; //在key基础上加1 因为资源ID是从1开始 key从0开始 break; } } } catch (Exception ex) { optReturn.Result = false; optReturn.Code = Defines.RET_FAIL; optReturn.Message = ex.Message; optReturn.Exception = ex; } return(optReturn); }