public override OpRes makeQuery(object param, GMUser user, QueryCondition queryCond) { ParamQueryRecharge p = (ParamQueryRecharge)param; int condCount = 0; PlatformInfo pinfo = null; if (!string.IsNullOrEmpty(p.m_param)) { switch (p.m_way) { case QueryWay.by_way0: // 通过玩家id查询 { int val = -1; if (!int.TryParse(p.m_param, out val)) { return(OpRes.op_res_param_not_valid); } Dictionary <string, object> ret = QueryBase.getPlayerProperty(val, user, s_field); if (ret == null) { return(OpRes.op_res_not_found_data); } if (!ret.ContainsKey("platform")) { return(OpRes.op_res_failed); } // 取玩家ID所在平台 string platName = Convert.ToString(ret["platform"]); queryCond.addQueryCond("PlayerId", val); pinfo = ResMgr.getInstance().getPlatformInfoByName(platName); // 获取服务器ID /*DbServerInfo dbInfo = ResMgr.getInstance().getDbInfo(user.m_dbIP); * if (dbInfo != null) * { * queryCond.addQueryCond("ServerId", dbInfo.m_serverId); * }*/ } break; case QueryWay.by_way1: // 通过账号查询 { Dictionary <string, object> ret = QueryBase.getPlayerPropertyByAcc(p.m_param, user, s_field); if (ret == null) { return(OpRes.op_res_not_found_data); } if (!ret.ContainsKey("platform")) { return(OpRes.op_res_failed); } // 取玩家账号所在平台,然后从相应的平台去查 string platName = Convert.ToString(ret["platform"]); queryCond.addQueryCond("Account", p.m_param); pinfo = ResMgr.getInstance().getPlatformInfoByName(platName); // 获取服务器ID /* DbServerInfo dbInfo = ResMgr.getInstance().getDbInfo(user.m_dbIP); * if (dbInfo != null) * { * queryCond.addQueryCond("ServerId", dbInfo.m_serverId); * }*/ } break; case QueryWay.by_way2: // 通过订单号查询 { pinfo = ResMgr.getInstance().getPlatformInfo(p.m_platIndex); queryCond.addQueryCond("OrderID", p.m_param); } break; default: { return(OpRes.op_res_failed); } } condCount++; } else { pinfo = ResMgr.getInstance().getPlatformInfo(p.m_platIndex); // 获取服务器ID /*DbServerInfo dbInfo = ResMgr.getInstance().getDbInfo(user.m_dbIP); * if (dbInfo != null) * { * queryCond.addQueryCond("ServerId", dbInfo.m_serverId); * }*/ } if (pinfo == null) { return(OpRes.op_res_need_sel_platform); } if (!m_items.ContainsKey(pinfo.m_engName)) { return(OpRes.op_res_not_found_data); } m_rbase = m_items[pinfo.m_engName]; m_platInfo.m_tableName = pinfo.m_tableName; m_platInfo.m_platName = pinfo.m_engName; if (queryCond.isExport()) { queryCond.addCond("table", m_platInfo.m_tableName); queryCond.addCond("plat", m_platInfo.m_platName); } if (p.m_time != "") { DateTime mint = DateTime.Now, maxt = DateTime.Now; bool res = Tool.splitTimeStr(p.m_time, ref mint, ref maxt); if (!res) { return(OpRes.op_res_time_format_error); } condCount++; if (queryCond.isExport()) { queryCond.addCond("time", p.m_time); } else { IMongoQuery imq1 = Query.LT("PayTime", BsonValue.Create(maxt)); IMongoQuery imq2 = Query.GTE("PayTime", BsonValue.Create(mint)); queryCond.addImq(Query.And(imq1, imq2)); } } if (p.m_result > 0) { queryCond.addQueryCond("Process", p.m_result == 1 ? true : false); } if (!string.IsNullOrEmpty(p.m_range)) { if (!Tool.isTwoNumValid(p.m_range)) { return(OpRes.op_res_param_not_valid); } if (queryCond.isExport()) { queryCond.addCond("range", p.m_range); } else { List <int> range = new List <int>(); Tool.parseNumList(p.m_range, range); IMongoQuery timq1 = Query.LTE("RMB", BsonValue.Create(range[1])); IMongoQuery timq2 = Query.GTE("RMB", BsonValue.Create(range[0])); IMongoQuery tmpImq = Query.And(timq1, timq2); queryCond.addImq(tmpImq); } } if (condCount == 0) { return(OpRes.op_res_need_at_least_one_cond); } return(OpRes.opres_success); }