| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 | 
							- const req = require('../../utils/request');
 
- const company = getApp().globalData.company;
 
- async function getConsecutiveSignIns(params) {
 
-     let { userId } = params; // 从参数中获取用户ID
 
-     // 构建 SQL 查询
 
-     let sql = `
 
-         WITH ranked_sign_ins AS (
 
-             SELECT
 
-                 "user",
 
-                 "createdAt",
 
-                 DATE("createdAt") - INTERVAL '1 day' * ROW_NUMBER() OVER (PARTITION BY "user" ORDER BY "createdAt") AS grp,
 
-                 (CASE WHEN DATE("createdAt") = CURRENT_DATE OR (DATE("createdAt") + INTERVAL '1 day') = CURRENT_DATE THEN TRUE ELSE FALSE END) "isToday"
 
-             FROM
 
-                 "EventLog"
 
-             WHERE "user" = '${userId}'
 
-         ),
 
-         continuous AS (
 
-             SELECT "user", grp
 
-             FROM ranked_sign_ins
 
-             WHERE "isToday" = TRUE
 
-             GROUP BY "user", grp
 
-             LIMIT 1
 
-         ),
 
-         grouped_sign_ins AS (
 
-             SELECT
 
-                 ranked_sign_ins."user",
 
-                 ranked_sign_ins.grp,
 
-                 COUNT(*) AS consecutive_days
 
-             FROM ranked_sign_ins
 
-             LEFT JOIN continuous 
 
-             ON continuous.grp = ranked_sign_ins.grp AND continuous."user" = ranked_sign_ins."user"
 
-             WHERE continuous.grp IS NOT NULL
 
-             GROUP BY ranked_sign_ins."user", ranked_sign_ins.grp
 
-         )
 
-         SELECT
 
-             "user",
 
-             consecutive_days
 
-         FROM grouped_sign_ins
 
-         GROUP BY "user", consecutive_days;
 
-     `;
 
-     // 执行 SQL 查询
 
-     let res = await req.customSQL(sql);
 
-     return res;
 
- }
 
- module.exports = {
 
-     getConsecutiveSignIns
 
- };
 
 
  |