Files
youlegames/codes/games/sql/game/db/grade_db.sql

803 lines
38 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/*
Navicat Premium Dump SQL
Source Server : game_grade
Source Server Type : MySQL
Source Server Version : 80036 (8.0.36)
Source Host : rm-bp1749tfxu2rpq670lo.mysql.rds.aliyuncs.com:3306
Source Schema : grade_db
Target Server Type : MySQL
Target Server Version : 80036 (8.0.36)
File Encoding : 65001
Date: 15/03/2026 19:29:34
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for coin_rebate
-- ----------------------------
DROP TABLE IF EXISTS `coin_rebate`;
CREATE TABLE `coin_rebate` (
`idx` int NOT NULL AUTO_INCREMENT,
`core_agentid` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '代理商id',
`core_gameid` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '游戏id',
`core_playerid` int NOT NULL COMMENT '玩家id',
`core_isrobot` tinyint(1) NULL DEFAULT 0,
`core_roomcode` int NOT NULL COMMENT '房号',
`core_createtime` datetime NULL DEFAULT NULL COMMENT '创建时间',
`core_roomtype` varchar(200) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '房间类型',
`core_roommode` tinyint(1) NOT NULL COMMENT '0-普通星星场房间 1-短号星星场房间 2-系统无限局星星场房间',
`core_ownerid` int NOT NULL COMMENT '房主id',
`core_deduct` tinyint(1) NULL DEFAULT NULL COMMENT '0-房主扣卡 1-每人扣卡 2-免房卡',
`core_roomcard` int NULL DEFAULT NULL COMMENT '扣的房卡数量',
`core_datatype` tinyint(1) NULL DEFAULT NULL COMMENT '0-大局系统抽成数据 1-小局系统抽成数据',
`core_asetcount` int NULL DEFAULT NULL COMMENT '总局数',
`core_asetnum` int NULL DEFAULT NULL COMMENT '当前小局号 从1开始计数',
`core_grade` int NOT NULL COMMENT '玩家得分',
`core_mode` tinyint NOT NULL COMMENT '抽成模式 1-按比例 2-按固定值',
`core_setting` int NOT NULL COMMENT '抽成设置的值',
`core_value` int NOT NULL COMMENT '实际抽成数量',
`core_time` datetime NOT NULL COMMENT '抽成时间',
PRIMARY KEY (`idx`) USING BTREE,
INDEX `coin_rebate`(`core_agentid` ASC, `core_playerid` ASC, `core_gameid` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 93059 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '金币抽成表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Table structure for error
-- ----------------------------
DROP TABLE IF EXISTS `error`;
CREATE TABLE `error` (
`idx` int NOT NULL AUTO_INCREMENT,
`erro_agentid` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '代理商id',
`erro_playerid` int NOT NULL COMMENT '玩家id',
`erro_gameid` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '游戏id',
`erro_msg` mediumtext CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL COMMENT '错误信息',
`erro_packet` mediumtext CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL COMMENT '收到的包',
`erro_time` datetime NULL DEFAULT NULL COMMENT '时间',
PRIMARY KEY (`idx`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 772430 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '错误日志表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Table structure for gold_account
-- ----------------------------
DROP TABLE IF EXISTS `gold_account`;
CREATE TABLE `gold_account` (
`idx` int NOT NULL AUTO_INCREMENT,
`goac_id` varchar(23) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT 'id时间戳+房号+4位随机码',
`goac_agentid` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '代理商id',
`goac_gameid` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '游戏id',
`goac_roomcode` int NOT NULL COMMENT '房间号',
`goac_roommode` tinyint(1) NOT NULL COMMENT '0-星星场玩家房间 1-星星场系统房间 2-非星星场(星星限进)',
`goac_createtime` datetime NOT NULL COMMENT '房间的创建时间',
`goac_beanmult` int NOT NULL COMMENT '倍数',
`goac_ownerid` int NULL DEFAULT NULL COMMENT '房主的玩家id',
`goac_shortcode` int NULL DEFAULT NULL COMMENT '短号',
`goac_deduct` tinyint(1) NULL DEFAULT NULL COMMENT '0-房主扣卡 1-每人扣卡 2-大赢家扣卡',
`goac_roomcard` int NULL DEFAULT NULL COMMENT '扣的房卡数量',
`goac_datatype` tinyint(1) NOT NULL COMMENT '0-大局结算数据 1-小局结算数据',
`goac_asetcount` int NULL DEFAULT NULL COMMENT '总局数',
`goac_asetnum` int NULL DEFAULT NULL COMMENT '当前小局号从1开始计数',
`goac_playerid` int NULL DEFAULT NULL COMMENT '玩家id',
`goac_isrobot` tinyint(1) NULL DEFAULT 0 COMMENT '0-真实玩家 1-机器人',
`goac_grade` int NOT NULL COMMENT '玩家得分',
`goac_rebatefrom` tinyint(1) NOT NULL COMMENT '0-不抽成 1-对大赢家进行抽成 2-对所有赢家抽成 3-对所有玩家抽成',
`goac_rebateto` tinyint(1) NULL DEFAULT NULL COMMENT '0-抽成给系统 1-抽成给房主 2-抽成给指定玩家 3-抽成给指定玩家的代理账号',
`goac_toplayerid` int NULL DEFAULT NULL COMMENT '抽成给到的玩家id',
`goac_rebatemode` tinyint(1) NULL DEFAULT NULL COMMENT '1-按得分的百分比抽成 2-按倍数的百分比抽成 3-按固定值抽成',
`goac_setvalue` int NULL DEFAULT NULL COMMENT '抽成设置的值',
`goac_rebatevalue` int NULL DEFAULT NULL COMMENT '实际抽成数量',
`goac_time` datetime NOT NULL COMMENT '发生时间',
`goac_state` tinyint(1) NULL DEFAULT 0 COMMENT '代理后台处理状态 0:未处理 1:已处理',
`goac_statetime` datetime NULL DEFAULT NULL COMMENT '代理后台处理时间',
`goac_invitecode` int NULL DEFAULT NULL,
`goac_inviteid` int NULL DEFAULT NULL,
`goac_marketid` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL,
`goac_i1` int NULL DEFAULT NULL,
`goac_i2` int NULL DEFAULT NULL,
`goac_i3` int NULL DEFAULT NULL,
PRIMARY KEY (`idx`) USING BTREE,
INDEX `gold_account_index2`(`goac_agentid` ASC, `goac_playerid` ASC) USING BTREE,
INDEX `gold_account_index1`(`goac_id` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 20865676 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '金币变动表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Table structure for match
-- ----------------------------
DROP TABLE IF EXISTS `match`;
CREATE TABLE `match` (
`idx` int NOT NULL AUTO_INCREMENT,
`matc_agentid` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '代理商id',
`matc_gameid` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '游戏id',
`matc_matchid` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '比赛id',
`matc_matchidx` tinyint NOT NULL COMMENT '比赛循环号',
`matc_matchname` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '比赛名称',
`matc_beginTime` datetime NOT NULL COMMENT '开始时间',
`matc_endTime` datetime NOT NULL COMMENT '结束时间',
`matc_roomtype` varchar(200) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '房间类型',
`matc_imageurl` varchar(200) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '比赛图片地址',
`matc_playercount` int NOT NULL,
`matc_playercount2` int NOT NULL,
`matc_bean` int NOT NULL,
`matc_roomcard` int NOT NULL,
`matc_topcount` int NOT NULL,
`matc_circulation` int NOT NULL,
`matc_interval` int NOT NULL,
`matc_gradename` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
`matc_memo1` varchar(800) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
`matc_memo2` varchar(800) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
`matc_memo3` varchar(800) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
`matc_ranking` mediumtext CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
PRIMARY KEY (`idx`) USING BTREE,
INDEX `match_index`(`matc_agentid` ASC, `matc_gameid` ASC, `matc_matchid` ASC, `matc_matchidx` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '比赛表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Table structure for match_ranking
-- ----------------------------
DROP TABLE IF EXISTS `match_ranking`;
CREATE TABLE `match_ranking` (
`idx` int NOT NULL AUTO_INCREMENT,
`mara_agentid` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '代理商id',
`mara_gameid` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '游戏id',
`mara_matchid` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '比赛id',
`mara_matchidx` tinyint NOT NULL COMMENT '比赛循环号',
`mara_playerid` int NOT NULL COMMENT '玩家id',
`mara_nickname` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '玩家昵称',
`mara_avatar` varchar(200) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '玩家头像',
`mara_roomcode` int NOT NULL COMMENT '房间号',
`mara_overtime` datetime NOT NULL COMMENT '房间结束时间',
`mara_grade` int NOT NULL COMMENT '得分',
`mara_isrobot` tinyint(1) NULL DEFAULT 0 COMMENT '0-玩家 1-机器人',
PRIMARY KEY (`idx`) USING BTREE,
INDEX `match_ranking_index`(`mara_agentid` ASC, `mara_gameid` ASC, `mara_matchid` ASC, `mara_matchidx` ASC, `mara_playerid` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '比赛排行表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Table structure for player_grade
-- ----------------------------
DROP TABLE IF EXISTS `player_grade`;
CREATE TABLE `player_grade` (
`idx` int NOT NULL AUTO_INCREMENT,
`plgr_agentid` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '代理商id',
`plgr_playerid` int NOT NULL COMMENT '玩家id',
`plgr_gameid` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '游戏id',
`plgr_roomcode` int NOT NULL COMMENT '房号',
`plgr_ownerid` int NULL DEFAULT NULL COMMENT '房主id',
`plgr_roomtype` varchar(200) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '房间类型',
`plgr_createtime` datetime NOT NULL COMMENT '开房时间',
`plgr_makewartime` datetime NOT NULL COMMENT '开战时间',
`plgr_overtime` datetime NOT NULL COMMENT '结束时间',
`plgr_roomcard` int NULL DEFAULT NULL,
`plgr_ownercard` int NULL DEFAULT NULL,
`plgr_gameinfo1` varchar(10000) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '' COMMENT '一局游戏的完整数据 json格式',
`plgr_gameinfo2` mediumtext CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL COMMENT '一局游戏的完整数据 json格式',
`plgr_shortcode` int NULL DEFAULT NULL,
`plgr_deducttype` tinyint(1) NULL DEFAULT NULL,
`plgr_deductcard` int NULL DEFAULT NULL,
`plgr_asetcount` int NULL DEFAULT NULL,
`plgr_roommode` tinyint(1) NULL DEFAULT NULL,
`plgr_winner` tinyint(1) NOT NULL DEFAULT 0 COMMENT '大赢家',
`plgr_score` int NOT NULL DEFAULT 0 COMMENT '得分',
PRIMARY KEY (`idx`) USING BTREE,
INDEX `player_grade2_index`(`plgr_agentid` ASC, `plgr_playerid` ASC, `plgr_gameid` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 36393310 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '玩家战绩表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Table structure for process_log
-- ----------------------------
DROP TABLE IF EXISTS `process_log`;
CREATE TABLE `process_log` (
`idx` int NOT NULL AUTO_INCREMENT,
`prlo_optid` int NOT NULL COMMENT '代理后台接口数据optid',
`prlo_result` tinyint(1) NOT NULL COMMENT '-1:处理失败 1:处理成功',
`prlo_time` datetime NOT NULL COMMENT '处理时间',
`prlo_ip` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '子游戏服务器IP和端口',
`prlo_error` varchar(2000) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '错误信息',
PRIMARY KEY (`idx`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 4924417 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '代理后台接口数据处理日志表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Procedure structure for cp_game_grade_del
-- ----------------------------
DROP PROCEDURE IF EXISTS `cp_game_grade_del`;
delimiter ;;
CREATE PROCEDURE `cp_game_grade_del`()
SQL SECURITY INVOKER
COMMENT '删除超时战绩'
begin
-- 删除24小时之前的战绩记录
delete from player_grade
where (unix_timestamp(now()) - unix_timestamp(plgr_makewartime)) > 24 * 60 * 60;
-- 删除72小时之前的金币记录
delete from gold_account
where (unix_timestamp(now()) - unix_timestamp(goac_time)) > 8 * 24 * 60 * 60;
-- 删除72小时之前的代理后台接口数据处理日志
delete from process_log
where (unix_timestamp(now()) - unix_timestamp(prlo_time)) > 72 * 60 * 60;
end
;;
delimiter ;
-- ----------------------------
-- Procedure structure for cp_game_grade_get1
-- ----------------------------
DROP PROCEDURE IF EXISTS `cp_game_grade_get1`;
delimiter ;;
CREATE PROCEDURE `cp_game_grade_get1`(IN `agentid` varchar(32) charset utf8 collate utf8_general_ci ,IN `playerid` int(8) ,IN `gameid` varchar(32) charset utf8 collate utf8_general_ci ,IN `ownertype` tinyint(1) ,IN `direction` tinyint(1) ,IN `gradeidx` int(11))
SQL SECURITY INVOKER
COMMENT '获取战绩gameinfo1'
begin
if ifnull(ownertype, 0) = 0 then
-- 获取最近10条战绩记录
select idx, plgr_roomcode as roomcode, plgr_roomtype as roomtype,
DATE_FORMAT(plgr_createtime, "%m.%d %H:%i") as createtime,
DATE_FORMAT(plgr_makewartime,"%m.%d %H:%i") as makewartime,
DATE_FORMAT(plgr_overtime,"%m.%d %H:%i") as overtime,
plgr_roomcard as roomcard, plgr_gameinfo1 as gameinfo1
from player_grade
where plgr_agentid = agentid
and plgr_playerid = playerid
and plgr_gameid = gameid
order by idx desc
limit 10;
elseif isnull(direction) or isnull(gradeidx) then
select idx, plgr_roomcode as roomcode, plgr_roomtype as roomtype,
DATE_FORMAT(plgr_createtime, "%m.%d %H:%i") as createtime,
DATE_FORMAT(plgr_makewartime,"%m.%d %H:%i") as makewartime,
DATE_FORMAT(plgr_overtime,"%m.%d %H:%i") as overtime,
plgr_ownercard as roomcard, plgr_gameinfo1 as gameinfo1
from player_grade
where plgr_agentid = agentid
and plgr_ownerid = playerid
and plgr_gameid = gameid
and plgr_ownercard is not null
and (unix_timestamp(now()) - unix_timestamp(plgr_overtime)) < 24 * 60 * 60
order by idx desc
limit 10;
elseif direction = 1 then
-- 上一页
select idx, plgr_roomcode as roomcode, plgr_roomtype as roomtype,
DATE_FORMAT(plgr_createtime, "%m.%d %H:%i") as createtime,
DATE_FORMAT(plgr_makewartime,"%m.%d %H:%i") as makewartime,
DATE_FORMAT(plgr_overtime,"%m.%d %H:%i") as overtime,
plgr_ownercard as roomcard, plgr_gameinfo1 as gameinfo1
from player_grade
where plgr_agentid = agentid
and plgr_ownerid = playerid
and plgr_gameid = gameid
and plgr_ownercard is not null
and (unix_timestamp(now()) - unix_timestamp(plgr_overtime)) < 24 * 60 * 60
and idx > gradeidx
order by idx desc
limit 10;
elseif direction = 2 then
-- 下一页
select idx, plgr_roomcode as roomcode, plgr_roomtype as roomtype,
DATE_FORMAT(plgr_createtime, "%m.%d %H:%i") as createtime,
DATE_FORMAT(plgr_makewartime,"%m.%d %H:%i") as makewartime,
DATE_FORMAT(plgr_overtime,"%m.%d %H:%i") as overtime,
plgr_ownercard as roomcard, plgr_gameinfo1 as gameinfo1
from player_grade
where plgr_agentid = agentid
and plgr_ownerid = playerid
and plgr_gameid = gameid
and plgr_ownercard is not null
and (unix_timestamp(now()) - unix_timestamp(plgr_overtime)) < 24 * 60 * 60
and idx < gradeidx
order by idx desc
limit 10;
end if;
end
;;
delimiter ;
-- ----------------------------
-- Procedure structure for cp_game_grade_get2
-- ----------------------------
DROP PROCEDURE IF EXISTS `cp_game_grade_get2`;
delimiter ;;
CREATE PROCEDURE `cp_game_grade_get2`(IN `agentid` varchar(32) charset utf8mb4 collate utf8mb4_unicode_ci ,IN `playerid` int(8) ,IN `gameid` varchar(32) charset utf8mb4 collate utf8mb4_unicode_ci ,IN `gradeidx` int(11))
SQL SECURITY INVOKER
COMMENT '获取战绩gameinfo1'
begin
select plgr_roomtype as roomtype, plgr_gameinfo2 as gameinfo2
from player_grade
where plgr_agentid = agentid
and plgr_playerid = playerid
and plgr_gameid = gameid
and idx = gradeidx;
end
;;
delimiter ;
-- ----------------------------
-- Procedure structure for cp_game_grade_save
-- ----------------------------
DROP PROCEDURE IF EXISTS `cp_game_grade_save`;
delimiter ;;
CREATE PROCEDURE `cp_game_grade_save`(IN `agentid` varchar(32) charset utf8 collate utf8_general_ci ,IN `playerids` varchar(800) charset utf8 collate utf8_general_ci ,IN `gameid` varchar(32) charset utf8 collate utf8_general_ci ,IN `roomcode` int(8) ,IN `roomtype` varchar(200) charset utf8 collate utf8_general_ci ,IN `createtime` datetime ,IN `makewartime` datetime ,IN `overtime` datetime ,IN `gameinfo1` varchar(10000) charset utf8 collate utf8_general_ci ,IN `gameinfo2` mediumtext charset utf8 collate utf8_general_ci ,IN `ownerid` int(8) ,IN `grades` varchar(800) charset utf8 collate utf8_general_ci ,IN `roommode` tinyint(1) ,IN `beanmult` int(4) ,IN `shortcode` int(8) ,IN `isrobots` varchar(800) charset utf8 collate utf8_general_ci)
SQL SECURITY INVOKER
COMMENT '保存战绩'
begin
declare ary_playerid varchar(800);
declare ary_grade varchar(800);
declare ary_isrobot varchar(800);
declare pos_playerid int(10);
declare pos_grade int(10);
declare pos_isrobot int(10);
declare playerid varchar(8);
declare grade varchar(8);
declare isrobot varchar(8);
-- 如果出现异常自动退出并rollback
declare exit handler for sqlexception ROLLBACK;
-- 启动事务
start transaction;
set ary_playerid = playerids;
set ary_grade = grades;
set ary_isrobot = isrobots;
while ary_playerid <> '' do
set pos_playerid = instr(ary_playerid, ',');
set pos_grade = instr(ary_grade, ',');
set pos_isrobot = instr(ary_isrobot, ',');
if pos_playerid = 0 then
set playerid = ary_playerid;
set grade = ary_grade;
set isrobot = ary_isrobot;
set ary_playerid = '';
set ary_grade = '';
set ary_isrobot = '';
else
set playerid = left(ary_playerid, pos_playerid - 1);
set grade = left(ary_grade, pos_grade - 1);
set isrobot = left(ary_isrobot, pos_isrobot - 1);
set ary_playerid = right(ary_playerid, length(ary_playerid) - pos_playerid);
set ary_grade = right(ary_grade, length(ary_grade) - pos_grade);
set ary_isrobot = right(ary_isrobot, length(ary_isrobot) - pos_isrobot);
end if;
-- 累计游戏局数(大局)
if roommode = 0 then
-- 非星星场
if isrobot = '0' then
update agent_game_player
set agpl_playset = agpl_playset + 1,
agpl_winlose = agpl_winlose + grade
where agpl_agentid = agentid
and agpl_gameid = gameid
and agpl_playerid = playerid limit 1;
end if;
else
-- 星星场
if isrobot = '0' then
update agent_game_player
set agpl_playset_xx = agpl_playset_xx + 1,
agpl_winlose_xx = agpl_winlose_xx + (grade div beanmult),
agpl_winlose_x2 = agpl_winlose_x2 + grade
where agpl_agentid = agentid
and agpl_gameid = gameid
and agpl_playerid = playerid limit 1;
else
call cp_game_grade_robot(agentid, gameid, grade, beanmult);
end if;
end if;
-- 统计房主的邀请新人奖励
if ownerid <> playerid then
if exists(select 1 from agent_game_player
where agpl_agentid = agentid
and agpl_gameid = gameid
and agpl_playerid = playerid
and agpl_playset = 1) then
call cp_game_task_finish(agentid, ownerid, 'ZVlpZweovbeQ68g8xdjcxaXHfbfIvvu7', 1, 0);
end if;
-- 累加积分玩一局积分加1
/*
update player set play_score = play_score + 1
where play_agentid = agentid
and play_playerid = playerid;
else
-- 累加积分开房积分加2
update player set play_score = play_score + 3
where play_agentid = agentid
and play_playerid = playerid;
*/
end if;
end while;
-- 按日期统计玩家一共玩了多少游戏局(大局)
call cp_report_game_day(agentid, gameid, now(), 2, 1, null);
-- 运行没有异常,提交事务
commit;
end
;;
delimiter ;
-- ----------------------------
-- Procedure structure for cp_game_grade_save2
-- ----------------------------
DROP PROCEDURE IF EXISTS `cp_game_grade_save2`;
delimiter ;;
CREATE PROCEDURE `cp_game_grade_save2`(IN `agentid` varchar(32) charset utf8 collate utf8_general_ci ,IN `playerids` varchar(800) charset utf8 collate utf8_general_ci ,IN `gameid` varchar(32) charset utf8 collate utf8_general_ci ,IN `roomcode` int(8) ,IN `roomtype` varchar(200) charset utf8 collate utf8_general_ci ,IN `createtime` datetime ,IN `makewartime` datetime ,IN `overtime` datetime ,IN `gameinfo1` varchar(10000) charset utf8 collate utf8_general_ci ,IN `gameinfo2` mediumtext charset utf8 collate utf8_general_ci ,IN `ownerid` int(8) ,IN `grades` varchar(800) charset utf8 collate utf8_general_ci ,IN `roomcards` varchar(100) charset utf8 collate utf8_general_ci ,IN `ownercard` int(8) ,IN `shortcode` int(8) ,IN `deducttype` tinyint(1) ,IN `deductcard` int(8) ,IN `asetcount` int(11) ,IN `roommode` tinyint(1) ,IN `isrobots` varchar(800) charset utf8 collate utf8_general_ci)
SQL SECURITY INVOKER
COMMENT '保存战绩'
begin
declare ary_playerid varchar(800);
declare ary_roomcard varchar(800);
declare ary_isrobot varchar(800);
declare pos_playerid int(10);
declare pos_roomcard int(10);
declare pos_isrobot int(10);
declare playerid varchar(8);
declare roomcard int(10);
declare isrobot int(10);
declare pos_ownerid int(10);
declare ownerplay tinyint(1);
declare ownertype int(11);
set ary_playerid = playerids;
set ary_roomcard = roomcards;
set ary_isrobot = isrobots;
set pos_ownerid = instr(ary_playerid, ownerid);
if pos_ownerid = 0 then
set ownerplay = 0;
else
set ownerplay = 1;
end if;
while ary_playerid <> '' do
set pos_playerid = instr(ary_playerid, ',');
set pos_isrobot = instr(ary_isrobot, ',');
if pos_playerid = 0 then
set playerid = ary_playerid;
set isrobot = ary_isrobot;
-- if ownerplay = 0 then
set ownertype = ownercard;
-- else
-- set ownertype = null;
-- end if;
set ary_playerid = '';
set ary_isrobot = '';
else
set playerid = left(ary_playerid, pos_playerid - 1);
set isrobot = left(ary_isrobot, pos_isrobot - 1);
set ownertype = null;
set ary_playerid = right(ary_playerid, length(ary_playerid) - pos_playerid);
set ary_isrobot = right(ary_isrobot, length(ary_isrobot) - pos_isrobot);
end if;
set pos_roomcard = instr(ary_roomcard, ',');
if pos_roomcard = 0 then
set roomcard = ary_roomcard;
set ary_roomcard = '';
else
set roomcard = left(ary_roomcard, pos_roomcard - 1);
set ary_roomcard = right(ary_roomcard, length(ary_roomcard) - pos_roomcard);
end if;
if isrobot = '0' then
-- 保存当前战绩
insert into player_grade(plgr_agentid, plgr_playerid, plgr_gameid,
plgr_roomcode, plgr_ownerid, plgr_roomtype, plgr_createtime, plgr_makewartime,
plgr_overtime, plgr_roomcard, plgr_gameinfo1, plgr_gameinfo2, plgr_ownercard,
plgr_shortcode, plgr_deducttype, plgr_deductcard, plgr_asetcount, plgr_roommode)
values(agentid, playerid, gameid, roomcode, ownerid, roomtype, createtime, makewartime,
overtime, roomcard, gameinfo1, gameinfo2, ownertype,
shortcode, deducttype, deductcard, asetcount, roommode);
end if;
end while;
end
;;
delimiter ;
-- ----------------------------
-- Procedure structure for cp_game_grade_save3
-- ----------------------------
DROP PROCEDURE IF EXISTS `cp_game_grade_save3`;
delimiter ;;
CREATE PROCEDURE `cp_game_grade_save3`(IN `agentid` varchar(32) charset utf8 collate utf8_general_ci ,IN `playerids` varchar(800) charset utf8 collate utf8_general_ci ,IN `gameid` varchar(32) charset utf8 collate utf8_general_ci ,IN `roomcode` int(8) ,IN `roomtype` varchar(200) charset utf8 collate utf8_general_ci ,IN `createtime` datetime ,IN `makewartime` datetime ,IN `overtime` datetime ,IN `gameinfo1` varchar(10000) charset utf8 collate utf8_general_ci ,IN `gameinfo2` mediumtext charset utf8 collate utf8_general_ci ,IN `ownerid` int(8) ,IN `grades` varchar(800) charset utf8 collate utf8_general_ci ,IN `roomcards` varchar(100) charset utf8 collate utf8_general_ci ,IN `ownercard` int(8) ,IN `shortcode` int(8) ,IN `deducttype` tinyint(1) ,IN `deductcard` int(8) ,IN `asetcount` int(11) ,IN `roommode` tinyint(1) ,IN `isrobots` varchar(800) charset utf8 collate utf8_general_ci ,IN `iswinners` varchar(800) charset utf8 collate utf8_general_ci)
SQL SECURITY INVOKER
COMMENT '保存战绩'
begin
declare ary_playerid varchar(800);
declare ary_roomcard varchar(800);
declare ary_isrobot varchar(800);
declare ary_iswinner varchar(800);
declare pos_playerid int(10);
declare pos_roomcard int(10);
declare pos_isrobot int(10);
declare pos_iswinner int(10);
declare playerid varchar(8);
declare roomcard int(10);
declare isrobot int(10);
declare iswinner int(10);
declare pos_ownerid int(10);
declare ownerplay tinyint(1);
declare ownertype int(11);
set ary_playerid = playerids;
set ary_roomcard = roomcards;
set ary_isrobot = isrobots;
set ary_iswinner = iswinners;
set pos_ownerid = instr(ary_playerid, ownerid);
if pos_ownerid = 0 then
set ownerplay = 0;
else
set ownerplay = 1;
end if;
while ary_playerid <> '' do
set pos_playerid = instr(ary_playerid, ',');
set pos_isrobot = instr(ary_isrobot, ',');
set pos_iswinner = instr(ary_iswinner, ',');
if pos_playerid = 0 then
set playerid = ary_playerid;
set isrobot = ary_isrobot;
set iswinner = ary_iswinner;
-- if ownerplay = 0 then
set ownertype = ownercard;
-- else
-- set ownertype = null;
-- end if;
set ary_playerid = '';
set ary_isrobot = '';
set ary_iswinner = '';
else
set playerid = left(ary_playerid, pos_playerid - 1);
set isrobot = left(ary_isrobot, pos_isrobot - 1);
set iswinner = left(ary_iswinner, pos_iswinner - 1);
set ownertype = null;
set ary_playerid = right(ary_playerid, length(ary_playerid) - pos_playerid);
set ary_isrobot = right(ary_isrobot, length(ary_isrobot) - pos_isrobot);
set ary_iswinner = right(ary_iswinner, length(ary_iswinner) - pos_iswinner);
end if;
set pos_roomcard = instr(ary_roomcard, ',');
if pos_roomcard = 0 then
set roomcard = ary_roomcard;
set ary_roomcard = '';
else
set roomcard = left(ary_roomcard, pos_roomcard - 1);
set ary_roomcard = right(ary_roomcard, length(ary_roomcard) - pos_roomcard);
end if;
if isrobot = '0' then
-- 保存当前战绩
insert into player_grade(plgr_agentid, plgr_playerid, plgr_gameid,
plgr_roomcode, plgr_ownerid, plgr_roomtype, plgr_createtime, plgr_makewartime,
plgr_overtime, plgr_roomcard, plgr_gameinfo1, plgr_gameinfo2, plgr_ownercard,
plgr_shortcode, plgr_deducttype, plgr_deductcard, plgr_asetcount, plgr_roommode,plgr_winner)
values(agentid, playerid, gameid, roomcode, ownerid, roomtype, createtime, makewartime,
overtime, roomcard, gameinfo1, gameinfo2, ownertype,
shortcode, deducttype, deductcard, asetcount, roommode,iswinner);
end if;
end while;
end
;;
delimiter ;
-- ----------------------------
-- Procedure structure for cp_game_grade_save4
-- ----------------------------
DROP PROCEDURE IF EXISTS `cp_game_grade_save4`;
delimiter ;;
CREATE PROCEDURE `cp_game_grade_save4`(IN `agentid` varchar(32) charset utf8 collate utf8_general_ci ,IN `playerids` varchar(800) charset utf8 collate utf8_general_ci ,IN `gameid` varchar(32) charset utf8 collate utf8_general_ci ,IN `roomcode` int(8) ,IN `roomtype` varchar(200) charset utf8 collate utf8_general_ci ,IN `createtime` datetime ,IN `makewartime` datetime ,IN `overtime` datetime ,IN `gameinfo1` varchar(10000) charset utf8 collate utf8_general_ci ,IN `gameinfo2` mediumtext charset utf8 collate utf8_general_ci ,IN `ownerid` int(8) ,IN `grades` varchar(800) charset utf8 collate utf8_general_ci ,IN `roomcards` varchar(100) charset utf8 collate utf8_general_ci ,IN `ownercard` int(8) ,IN `shortcode` int(8) ,IN `deducttype` tinyint(1) ,IN `deductcard` int(8) ,IN `asetcount` int(11) ,IN `roommode` tinyint(1) ,IN `isrobots` varchar(800) charset utf8 collate utf8_general_ci ,IN `iswinners` varchar(800) charset utf8 collate utf8_general_ci ,IN `scores` varchar(800) charset utf8 collate utf8_general_ci)
SQL SECURITY INVOKER
COMMENT '保存战绩'
begin
declare ary_playerid varchar(800);
declare ary_roomcard varchar(800);
declare ary_isrobot varchar(800);
declare ary_iswinner varchar(800);
declare ary_score varchar(800);
declare pos_playerid int(10);
declare pos_roomcard int(10);
declare pos_isrobot int(10);
declare pos_iswinner int(10);
declare pos_score int(10);
declare playerid varchar(8);
declare roomcard int(10);
declare isrobot int(10);
declare iswinner int(10);
declare score int(10);
declare pos_ownerid int(10);
declare ownerplay tinyint(1);
declare ownertype int(11);
set ary_playerid = playerids;
set ary_roomcard = roomcards;
set ary_isrobot = isrobots;
set ary_iswinner = iswinners;
set ary_score = scores;
set pos_ownerid = instr(ary_playerid, ownerid);
if pos_ownerid = 0 then
set ownerplay = 0;
else
set ownerplay = 1;
end if;
while ary_playerid <> '' do
set pos_playerid = instr(ary_playerid, ',');
set pos_isrobot = instr(ary_isrobot, ',');
set pos_iswinner = instr(ary_iswinner, ',');
set pos_score = instr(ary_score, ',');
if pos_playerid = 0 then
set playerid = ary_playerid;
set isrobot = ary_isrobot;
set iswinner = ary_iswinner;
set score = ary_score;
-- if ownerplay = 0 then
set ownertype = ownercard;
-- else
-- set ownertype = null;
-- end if;
set ary_playerid = '';
set ary_isrobot = '';
set ary_iswinner = '';
set ary_score = '';
else
set playerid = left(ary_playerid, pos_playerid - 1);
set isrobot = left(ary_isrobot, pos_isrobot - 1);
set iswinner = left(ary_iswinner, pos_iswinner - 1);
set score = left(ary_score, pos_score - 1);
set ownertype = null;
set ary_playerid = right(ary_playerid, length(ary_playerid) - pos_playerid);
set ary_isrobot = right(ary_isrobot, length(ary_isrobot) - pos_isrobot);
set ary_iswinner = right(ary_iswinner, length(ary_iswinner) - pos_iswinner);
set ary_score = right(ary_score, length(ary_score) - pos_score);
end if;
set pos_roomcard = instr(ary_roomcard, ',');
if pos_roomcard = 0 then
set roomcard = ary_roomcard;
set ary_roomcard = '';
else
set roomcard = left(ary_roomcard, pos_roomcard - 1);
set ary_roomcard = right(ary_roomcard, length(ary_roomcard) - pos_roomcard);
end if;
if isrobot = '0' then
-- 保存当前战绩
insert into player_grade(plgr_agentid, plgr_playerid, plgr_gameid,
plgr_roomcode, plgr_ownerid, plgr_roomtype, plgr_createtime, plgr_makewartime,
plgr_overtime, plgr_roomcard, plgr_gameinfo1, plgr_gameinfo2, plgr_ownercard,
plgr_shortcode, plgr_deducttype, plgr_deductcard, plgr_asetcount, plgr_roommode,plgr_winner,plgr_score)
values(agentid, playerid, gameid, roomcode, ownerid, roomtype, createtime, makewartime,
overtime, roomcard, gameinfo1, gameinfo2, ownertype,
shortcode, deducttype, deductcard, asetcount, roommode,iswinner,score);
end if;
end while;
end
;;
delimiter ;
-- ----------------------------
-- Procedure structure for cp_game_save_matchranking
-- ----------------------------
DROP PROCEDURE IF EXISTS `cp_game_save_matchranking`;
delimiter ;;
CREATE PROCEDURE `cp_game_save_matchranking`(IN `agentid` varchar(32) charset utf8 collate utf8_general_ci ,IN `gameid` varchar(32) charset utf8 collate utf8_general_ci ,IN `matchid` varchar(10) charset utf8 collate utf8_general_ci ,IN `matchidx` tinyint(2) ,IN `matchname` varchar(100) charset utf8 collate utf8_general_ci ,IN `beginTime` varchar(20) charset utf8 collate utf8_general_ci ,IN `endTime` varchar(20) charset utf8 collate utf8_general_ci ,IN `roomtype` varchar(200) charset utf8 collate utf8_general_ci ,IN `imageurl` varchar(200) charset utf8 collate utf8_general_ci ,IN `playercount` int(8) ,IN `playercount2` int(8) ,IN `bean` int(8) ,IN `roomcard` int(8) ,IN `topcount` int(8) ,IN `circulation` int(8) ,IN `iinterval` int(8) ,IN `gradename` varchar(20) charset utf8 collate utf8_general_ci ,IN `memo1` varchar(800) charset utf8 collate utf8_general_ci ,IN `memo2` varchar(800) charset utf8 collate utf8_general_ci ,IN `memo3` varchar(800) charset utf8 collate utf8_general_ci ,IN `ranking` mediumtext charset utf8 collate utf8_general_ci ,IN `playeridlist` varchar(1000) charset utf8 collate utf8_general_ci ,IN `nicknamelist` varchar(4000) charset utf8 collate utf8_general_ci ,IN `avatarlist` varchar(20000) charset utf8 collate utf8_general_ci ,IN `roomcodelist` varchar(1000) charset utf8 collate utf8_general_ci ,IN `overtimelist` varchar(4000) charset utf8 collate utf8_general_ci ,IN `gradelist` varchar(4000) charset utf8 collate utf8_general_ci ,IN `isrobotlist` varchar(400) charset utf8 collate utf8_general_ci)
SQL SECURITY INVOKER
COMMENT '保存比赛排行榜'
begin
declare ary_playerid varchar(1000);
declare ary_nickname varchar(4000);
declare ary_avatar varchar(20000);
declare ary_roomcode varchar(1000);
declare ary_overtime varchar(4000);
declare ary_grade varchar(4000);
declare ary_isrobot varchar(400);
declare pos_playerid int(8);
declare pos_nickname int(8);
declare pos_avatar int(8);
declare pos_roomcode int(8);
declare pos_overtime int(8);
declare pos_grade int(8);
declare pos_isrobot int(8);
declare s_playerid varchar(8);
declare s_nickname varchar(100);
declare s_avatar varchar(200);
declare s_roomcode varchar(8);
declare s_overtime varchar(30);
declare s_grade varchar(10);
declare s_isrobot varchar(1);
delete from `match`
where matc_agentid = agentid
and matc_gameid = gameid
and matc_matchid = matchid
and matc_matchidx = matchidx;
insert into `match`(matc_agentid, matc_gameid, matc_matchid, matc_matchidx,
matc_matchname, matc_beginTime, matc_endTime, matc_roomtype,
matc_imageurl, matc_playercount, matc_playercount2, matc_bean,
matc_roomcard, matc_topcount, matc_circulation, matc_interval,
matc_gradename, matc_memo1, matc_memo2, matc_memo3, matc_ranking)
values(agentid, gameid, matchid, matchidx,
matchname, beginTime, endTime, roomtype,
imageurl, playercount, playercount2, bean,
roomcard, topcount, circulation, iinterval,
gradename, memo1, memo2, memo3, ranking);
delete from match_ranking
where mara_agentid = agentid
and mara_gameid = gameid
and mara_matchid = matchid
and mara_matchidx = matchidx;
set ary_playerid = playeridlist;
set ary_nickname = nicknamelist;
set ary_avatar = avatarlist;
set ary_roomcode = roomcodelist;
set ary_overtime = overtimelist;
set ary_grade = gradelist;
set ary_isrobot = isrobotlist;
while ary_playerid <> '' do
set pos_playerid = instr(ary_playerid, ',');
set pos_nickname = instr(ary_nickname, ',');
set pos_avatar = instr(ary_avatar, ',');
set pos_roomcode = instr(ary_roomcode, ',');
set pos_overtime = instr(ary_overtime, ',');
set pos_grade = instr(ary_grade, ',');
set pos_isrobot = instr(ary_isrobot, ',');
if pos_playerid = 0 then
set s_playerid = ary_playerid;
set s_nickname = ary_nickname;
set s_avatar = ary_avatar;
set s_roomcode = ary_roomcode;
set s_overtime = ary_overtime;
set s_grade = ary_grade;
set s_isrobot = ary_isrobot;
set ary_playerid = '';
set ary_nickname = '';
set ary_avatar = '';
set ary_roomcode = '';
set ary_overtime = '';
set ary_grade = '';
set ary_isrobot = '';
else
set s_playerid = left(ary_playerid, pos_playerid - 1);
set s_nickname = left(ary_nickname, pos_nickname - 1);
set s_avatar = left(ary_avatar, pos_avatar - 1);
set s_roomcode = left(ary_roomcode, pos_roomcode - 1);
set s_overtime = left(ary_overtime, pos_overtime - 1);
set s_grade = left(ary_grade, pos_grade - 1);
set s_isrobot = left(ary_isrobot, pos_isrobot - 1);
set ary_playerid = substring(ary_playerid, 1 + pos_playerid);
set ary_nickname = substring(ary_nickname, 1 + pos_nickname);
set ary_avatar = substring(ary_avatar, 1 + pos_avatar);
set ary_roomcode = substring(ary_roomcode, 1 + pos_roomcode);
set ary_overtime = substring(ary_overtime, 1 + pos_overtime);
set ary_grade = substring(ary_grade, 1 + pos_grade);
set ary_isrobot = substring(ary_isrobot, 1 + pos_isrobot);
end if;
insert into match_ranking(mara_agentid, mara_gameid, mara_matchid, mara_matchidx,
mara_playerid, mara_nickname, mara_avatar, mara_roomcode,
mara_overtime, mara_grade, mara_isrobot)
values (agentid, gameid, matchid, matchidx, s_playerid, s_nickname,
s_avatar, s_roomcode, s_overtime, s_grade, s_isrobot);
end while;
end
;;
delimiter ;
SET FOREIGN_KEY_CHECKS = 1;