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);
    }
예제 #2
0
    // 对玩家自己在游戏内提交的订单状态进行修改
    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);
        }
    }
예제 #3
0
    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);
    }
예제 #4
0
    OpRes cancel(ResultPlayerOrderItem item, GMUser user)
    {
        OpRes res = removeWait(item, user);

        if (res == OpRes.opres_success)
        {
            addFinish(item, user, OrderState.STATE_CANCEL);
        }
        return(res);
    }
예제 #5
0
    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);
    }
예제 #6
0
    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);
    }
예제 #7
0
    // 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);
    }
예제 #8
0
    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);
    }
예제 #9
0
    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);
    }