using JiaZhiQuan.Common.Models.VO.CreatorCenter; using System; using System.Collections.Generic; using System.Linq; namespace JiaZhiQuan.Common.Utils { /// /// 用户留存 /// public class UserRetainedUtils { /// /// 获取用户的天留存状态 /// /// 用户的流程记录 /// 第几日的留存 /// 用户的创建时间 /// public static string UserDayRetainedStateText(List userRetainedList, int day, DateTime userCreateAt) { int retainedDay = 0; string userCreateDateStr = userCreateAt.ToString("yyyy-MM-dd"), nowDateStr = DateTime.Now.Date.ToString("yyyy-MM-dd"); if (userCreateDateStr != nowDateStr) { DateTime userCreateDate = DateTime.Parse(userCreateDateStr); TimeSpan timeDifference = DateTime.Now.Date - userCreateDate; // 计算创建时间距离今天过去了多少天 retainedDay = (int)Math.Ceiling(timeDifference.TotalDays); } // 说明是今天刚创建的 if (retainedDay == 0) return ""; // 如果获取的留存天数>用户创建后过去的天数 if (day > retainedDay) return ""; return userRetainedList.Exists(e => e.day == day) ? "是" : "否"; } /// /// 获取用户的月留存状态 /// /// 用户的流程记录 /// 第几日的留存 /// 用户的创建时间 /// public static string UserMonthRetainedStateText(List userRetainedList, int month, DateTime userCreateAt) { int retainedMonth = 0; string userCreateDateStr = userCreateAt.ToString("yyyy-MM-01"), nowDateStr = DateTime.Now.Date.ToString("yyyy-MM-01"); if (userCreateDateStr != nowDateStr) { retainedMonth = DateTimeUtils.TwoDateDiffMonths(userCreateDateStr, nowDateStr); } // 说明是当前月刚创建的 if (retainedMonth == 0) return ""; // 如果获取的留存月数>用户创建后过去的月数 if (month > retainedMonth) return ""; return userRetainedList.Exists(e => e.month == month) ? "是" : "否"; } } public class UserDayRetainedDTO { public int id { get; set; } public long userId { get; set; } public string appSource { get; set; } public int day { get; set; } public string activeDate { get; set; } } public class UserMonthRetainedDTO { public int id { get; set; } public DateTime userCreateTime { get; set; } public long userId { get; set; } public string appSource { get; set; } public int month { get; set; } public string monthFirstDay { get; set; } } }