Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }