3eapi/doc/app_log.sql
2026-03-10 16:40:19 +08:00

44 lines
1.7 KiB
SQL

DROP TABLE IF EXISTS `app_log`;
CREATE TABLE `app_log` (
`id` varchar(64) NOT NULL,
`appcode` varchar(10) DEFAULT NULL COMMENT 'app编码',
`appversion` varchar(10) DEFAULT NULL COMMENT 'app版本',
`device` varchar(10) DEFAULT NULL COMMENT '设备类型',
`sysversion` varchar(10) DEFAULT NULL COMMENT '系统版本',
`service` varchar(32) DEFAULT NULL COMMENT '服务',
`action` varchar(32) DEFAULT NULL COMMENT '操作',
`method` varchar(10) DEFAULT NULL COMMENT '请求方式',
`status` varchar(10) DEFAULT NULL COMMENT '请求状态',
`reqheader` text COMMENT '请求头',
`reqbody` text COMMENT '请求业务数据',
`exception` longtext COMMENT '异常',
`create_date` datetime DEFAULT NULL COMMENT '请求时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
SELECT a.raceId , a.raceName , a.startTime , a.endTime ,
case when c.joinTotal is null then 0 else c.joinTotal end as joinTotal ,
case when b.uid is null then 0 else b.uid end as uid ,
case when b.score is null then 0 else b.score end as score ,
case when d.truename is null then '' else d.truename end as truename
FROM (
select raceId ,raceName , startTime , endTime
from Race
where (status = 0 or current_timestamp > endTime)
order by raceId desc limit :limit offset :offset
) a
left join (
SELECT DISTINCT ON (raceId) uid, raceId, score
FROM raceScore
ORDER BY raceId , score DESC
) b on a.raceId = b.raceId
left join (
SELECT raceId , count(*) as joinTotal
FROM raceScore GROUP BY raceId
) c ON a.raceId = c.raceId
LEFT JOIN V_baseuser d on b.uid = d.studentId
order by a.endTime desc
@Cache(prefix=_3ECacheContants.CACHE_PREFIX_QWHSYB,key="#page.limit,#page.offset",duration=60*60*4)