public override OpRes doQuery(object param, GMUser user) { ParamPlayerOrderQuery p = (ParamPlayerOrderQuery)param; m_result.Clear(); string cmd = genOrderSqlCmd(p, user); List <Dictionary <string, object> > dataList = user.sqlDb.queryList(cmd, user.getMySqlServerID(), MySqlDbName.DB_XIANXIA); if (dataList == null) { return(OpRes.op_res_failed); } for (int i = 0; i < dataList.Count; i++) { ResultPlayerOrderItem info = new ResultPlayerOrderItem(); m_result.Add(info); Dictionary <string, object> data = dataList[i]; info.m_orderId = Convert.ToString(data["orderId"]); info.m_orderTime = Convert.ToDateTime(data["orderTime"]).ToString(ConstDef.DATE_TIME24); info.m_playerAcc = Convert.ToString(data["playerAcc"]); info.m_playerOwner = Convert.ToString(data["playerOwner"]); info.m_playerOwnerCreator = Convert.ToString(data["playerOwnerCreator"]); info.m_orderState = Convert.ToInt32(data["orderState"]); info.m_orderMoney = Convert.ToInt32(data["orderMoney"]); info.m_orderType = Convert.ToInt32(data["orderType"]); } return(OpRes.opres_success); }
// 对玩家自己在游戏内提交的订单状态进行修改 void forPlayerOrder(OrderInfo info) { if (info.m_orderFrom != OrderGenerator.ORDER_FROM_PLAYER_ORDER) { return; } if (info.m_orderState == PlayerReqOrderState.STATE_FAILED) // 订单处理失败 { // 订单处理失败,还原成等待状态 string upcmd = CPlayerOrder.genUpdateSql(info.m_orderId, OrderState.STATE_WAIT); m_sqlDb.executeOp(upcmd, CMySqlDbName.DB_XIANXIA); } else { string selcmd = string.Format(" SELECT * from {0} where {1}", TableName.PLAYER_ORDER_WAIT, string.Format("orderId= '{0}' ", info.m_orderId)); Dictionary <string, object> data = m_sqlDb.queryOne(selcmd, CMySqlDbName.DB_XIANXIA); ResultPlayerOrderItem item = CPlayerOrder.toOrder(data); if (item == null) { return; } string delcmd = CPlayerOrder.genRemoveSql(info.m_orderId); string inscmd = CPlayerOrder.genInsertSql(item, info.m_gmAcc, OrderState.STATE_FINISH); m_sqlDb.executeOp(delcmd, CMySqlDbName.DB_XIANXIA); m_sqlDb.executeOp(inscmd, CMySqlDbName.DB_XIANXIA); } }
OpRes removeWait(ResultPlayerOrderItem item, GMUser user) { string cmd = string.Format(SQL_CANCEL, TableName.PLAYER_ORDER_WAIT, item.m_orderId, item.m_playerAcc); int count = user.sqlDb.executeOp(cmd, user.getMySqlServerID(), MySqlDbName.DB_XIANXIA); return(count > 0 ? OpRes.opres_success : OpRes.op_res_db_failed); }
OpRes cancel(ResultPlayerOrderItem item, GMUser user) { OpRes res = removeWait(item, user); if (res == OpRes.opres_success) { addFinish(item, user, OrderState.STATE_CANCEL); } return(res); }
public override OpRes doDyop(object param, GMUser user) { ParamPlayerOrder p = (ParamPlayerOrder)param; OpRes res = OpRes.op_res_failed; switch (p.m_op) { case OrderOp.OP_EXEC: { ResultPlayerOrderItem item = getItem(p, user); if (item == null) { return(OpRes.op_res_failed); } res = execOrder(item, user); } break; case OrderOp.OP_CANCEL: { ResultPlayerOrderItem item = getItem(p, user); if (item == null) { return(OpRes.op_res_failed); } res = cancel(item, user); } break; case OrderOp.OP_FORWARD_TO_SUP: { } break; case OrderOp.OP_AUTO_FORWARD_TO_SUP: { res = autoForwardOrder(p, user); } break; } return(res); }
void addFinish(ResultPlayerOrderItem item, GMUser user, int orderState) { SqlInsertGenerator gen = new SqlInsertGenerator(); gen.addField("orderId", item.m_orderId, FieldType.TypeString); gen.addField("orderTime", item.m_orderTime, FieldType.TypeString); gen.addField("playerAcc", item.m_playerAcc, FieldType.TypeString); gen.addField("playerOwner", item.m_playerOwner, FieldType.TypeString); gen.addField("curOpAcc", user.m_user, FieldType.TypeString); gen.addField("orderState", orderState, FieldType.TypeNumber); gen.addField("playerOwnerCreator", item.m_playerOwnerCreator, FieldType.TypeString); gen.addField("orderMoney", item.m_orderMoney, FieldType.TypeNumber); gen.addField("orderType", item.m_orderType, FieldType.TypeNumber); string sqlCmd = gen.getResultSql(TableName.PLAYER_ORDER_FINISH); int count = user.sqlDb.executeOp(sqlCmd, user.getMySqlServerID(), MySqlDbName.DB_XIANXIA); }
// orderState OrderState类型 public static string genInsertSql(ResultPlayerOrderItem item, string opAcc, int orderState) { SqlInsertGenerator gen = new SqlInsertGenerator(); gen.addField("orderId", item.m_orderId, FieldType.TypeString); gen.addField("orderTime", item.m_orderTime, FieldType.TypeString); gen.addField("playerAcc", item.m_playerAcc, FieldType.TypeString); gen.addField("playerOwner", item.m_playerOwner, FieldType.TypeString); gen.addField("curOpAcc", opAcc, FieldType.TypeString); gen.addField("orderState", orderState, FieldType.TypeNumber); gen.addField("playerOwnerCreator", item.m_playerOwnerCreator, FieldType.TypeString); gen.addField("orderMoney", item.m_orderMoney, FieldType.TypeNumber); gen.addField("orderType", item.m_orderType, FieldType.TypeNumber); string cmd = gen.getResultSql(TableName.PLAYER_ORDER_FINISH); return(cmd); }
OpRes execOrder(ResultPlayerOrderItem item, GMUser user) { if (item.m_orderState != OrderState.STATE_WAIT) { return(OpRes.opres_success); } ParamScore param = new ParamScore(); param.m_op = item.m_orderType; param.m_toAcc = item.m_playerAcc; param.m_score = item.m_orderMoney.ToString(); param.m_orderFrom = OrderGenerator.ORDER_FROM_PLAYER_ORDER; param.m_orderId = item.m_orderId; param.scoreToPlayer(); OpRes res = user.doDyop(param, DyOpType.opTypeDyOpScore); if (res == OpRes.opres_success /*|| * res == OpRes.op_res_player_in_game*/) { OpRes code = removeWait(item, user); if (code == OpRes.opres_success) { if (res == OpRes.opres_success) { addFinish(item, user, OrderState.STATE_FINISH); } else { addFinish(item, user, OrderState.STATE_HAS_SUB); } } } else if (res == OpRes.op_res_player_in_game) { string cmd = CPlayerOrder.genUpdateSql(item.m_orderId, OrderState.STATE_HAS_SUB); int count = user.sqlDb.executeOp(cmd, user.getMySqlServerID(), MySqlDbName.DB_XIANXIA); // 返回成功,界面可以重刷订单 res = OpRes.opres_success; } return(res); }
public static ResultPlayerOrderItem toOrder(Dictionary <string, object> data) { if (data == null) { return(null); } ResultPlayerOrderItem info = new ResultPlayerOrderItem(); info.m_orderId = Convert.ToString(data["orderId"]); info.m_orderTime = Convert.ToDateTime(data["orderTime"]).ToString(ConstDef.DATE_TIME24); info.m_playerAcc = Convert.ToString(data["playerAcc"]); info.m_playerOwner = Convert.ToString(data["playerOwner"]); info.m_playerOwnerCreator = Convert.ToString(data["playerOwnerCreator"]); info.m_orderState = Convert.ToInt32(data["orderState"]); info.m_orderMoney = Convert.ToInt32(data["orderMoney"]); info.m_orderType = Convert.ToInt32(data["orderType"]); return(info); }