// 提交玩家在线时订单 private bool submitPlayerOnlineOrder(ParamScore p, long score, GMUser user) { OrderGenerator or = new OrderGenerator(); Dictionary <string, object> orData = or.genOrder(user.m_user, p.m_toAcc, score, p.m_op, AccType.ACC_PLAYER, p.m_orderFrom, p.m_orderId); if (string.IsNullOrEmpty(p.m_orderId)) { p.m_orderId = Convert.ToString(orData["orderId"]); } bool code = DBMgr.getInstance().insertData(TableName.PLAYER_ORDER_REQ, orData, user.getDbServerID(), DbName.DB_PLAYER); return(code); }
public override string doDyop(object param) { ParamScore p = (ParamScore)param; long oriScore = 0; if (!long.TryParse(p.m_score, out oriScore)) { m_retData.Add("result", RetCode.RET_PARAM_NOT_VALID); return(Helper.genJsonStr(m_retData)); } if (oriScore <= 0) { m_retData.Add("result", RetCode.RET_PARAM_NOT_VALID); return(Helper.genJsonStr(m_retData)); } bool cres = createGMUser(p); if (!cres) { return(Helper.genJsonStr(m_retData)); } if (!p.checkSign(m_gmUser)) { m_retData.Add("result", RetCode.RET_SIGN_ERROR); return(Helper.genJsonStr(m_retData)); } if (orderIdExists(p)) { m_retData.Add("result", RetCode.RET_ORDER_EXISTS); return(Helper.genJsonStr(m_retData)); } long score = Helper.saveMoneyValue(oriScore); int code = canDoScoreToPlayer(p.m_playerAcc, score, ScropOpType.isAddScore(p.m_op)); // 在线,并且是下分,直接返回失败 if (code == RetCode.RET_PLAYER_ONLINE && !ScropOpType.isAddScore(p.m_op)) { m_retData.Add("result", RetCode.RET_PLAYER_ONLINE); } else if (code == RetCode.RET_PLAYER_ONLINE && ScropOpType.isAddScore(p.m_op)) // 玩家在线时提交上下分订单 { //if (ScropOpType.isAddScore(p.m_op)) // 上分操作,先扣GM的钱,若订单最终处理失败,会返还GM这部分钱 { decScore(score); } OrderGenerator or = new OrderGenerator(); Dictionary <string, object> orData = or.genOrder(p.m_gmAccount, p.m_playerAcc, score, p.m_op, AccType.ACC_PLAYER, OrderGenerator.ORDER_FROM_API, "", p.m_userOrderId, p.m_apiCallBack); bool res = MongodbPlayer.Instance.ExecuteInsert(TableName.PLAYER_ORDER_REQ, orData); if (res) { m_retData.Add("orderId", Convert.ToString(orData["orderId"])); m_retData.Add("result", RetCode.RET_HAS_SUBMIT_ORDER); } else { m_retData.Add("result", RetCode.RET_DB_ERROR); } } else if (code == RetCode.RET_SUCCESS) // 玩家离线,可直接修改数据库上下分 { bool res = doScorePlayer(p, score); if (res) { m_retData.Add("result", RetCode.RET_SUCCESS); m_retData.Add("playerAcc", p.m_playerAcc); m_retData.Add("score", oriScore); /*string cmd = string.Format(CONST.SQL_ORDER_ID, TableName.GM_SCORE, m_gmUser.m_acc, p.m_playerAcc, p.m_op); * * Dictionary<string, object> order = m_gmUser.sqlDb.queryOne(cmd, MySqlDbName.DB_XIANXIA); * if (order != null) * { * int orderId = Convert.ToInt32(order["opId"]); * m_retData.Add("orderId", orderId); * }*/ OrderInfo oinfo = writeOfflineOrderToMySql(p, score); m_retData.Add("orderId", oinfo.m_orderId); m_retData.Add("userOrderId", p.m_userOrderId); } } else { m_retData.Add("result", code); } return(Helper.genJsonStr(m_retData)); }