private int GetPoints(UserIntegral ui, IntegralActivity activity, dynamic extdata) { int res = 0; if (activity == null) { return(extdata.Points); } if (activity.Name == "每日签到") { return(GetDailySignInPoints(ui, activity)); } else { var rule = activity.IntegralRule; switch (rule.Type) { case 1: //单次获得积分 res = rule.Points.Value; break; case 2: //外部获取积分 res = extdata.Points; break; case 3: //持续获得积分 break; case 4: //外部消耗积分 res = extdata.Points; break; default: break; } } return(res); }
public int GetDailySignInPoints(UserIntegral ui, IntegralActivity activity) { int pointmark = 0; int points = 0; var rule = activity.IntegralRule; var usersign = _context.IntegralSignIns.FirstOrDefault(t => t.UserIntegral.ID == ui.ID); if (usersign == null) { usersign = new IntegralSignIn { UserIntegral = ui }; usersign = _context.IntegralSignIns.Add(usersign); } if (usersign.LastTime == null) { usersign.DurationDays = 1; pointmark = 1; } else { if (usersign.LastTime.Value.Date == DateTime.Now.Date) { _message = "请勿重复签到"; _isSave = false; pointmark = 0; return(pointmark); } else { if (rule.CycleType == "Month" && DateTime.Now.Day == 1) { usersign.DurationDays = 1; pointmark = 1; } else { if (usersign.LastTime.Value.AddDays(1).Date == DateTime.Now.Date) { usersign.DurationDays += 1; pointmark = usersign.DurationDays; } else { usersign.DurationDays = 1; pointmark = 1; } } } } usersign.LastTime = DateTime.Now; if (pointmark != 0) { points = rule.StepPoints.Value * pointmark; if (rule.MaxPoints != null) { points = points > rule.MaxPoints.Value ? rule.MaxPoints.Value : points; } } return(points); }