为dotnet mvc实现一个简单的成就系统

时间:2019-04-28 21:38:44

标签: c# asp.net-mvc

我正在为使用ASP.net MVC 4的学校项目创建银行应用程序。作为应用程序的一部分,我们为用户提供了一系列成就。当用户完成一项成就时,说出“创建储蓄帐户”,就应该通过解锁该成就并发送通知来获得奖励。这是成就班:

    public class Achievement
    {
        public string UserID { get; set; }

        public AchievementType AchType { get; set; }

        public bool Completed { get; set; }

        public string Description { get; set; }

        public int CountToUnlock { get; set; }
    }

    public enum AchievementType
    {
        CREATE_SAVINGS_ACCOUNT, CREATE_GOAL, COMPLETE_GOAL, ACCOUNT_5K,
        ACCOUNT_10K, UPDATE_GOAL, ADD_TRANSACTION, SAVE_1K_TOTAL
    };

我苦苦挣扎的部分是如何确保每个用户都拥有相同的成就集以及在何处触发这些成就。他们应该在AchievementController中还是其他地方。

1 个答案:

答案 0 :(得分:0)

我的最初反应是,您应该有一个Customer类,其中包含该客户的成就的列表。

在何处触发这些成就的添加,取决于确定何时达到目标之一的逻辑所在。对于您的学校项目,您是否要建立一个页面来模拟这一点?

一些伪造的入门指南:

public class Customer
{
    public int Id { get; set; }

    public string Name { get; set; }

    public List<Achievement> Achievements { get; set; }

    public bool AddAchievement(Achievement newAchievement)
    {
        // Check to ensure customer doesn't already have the new achievement

        // Persist to the database

        // Add to local collection
        Achievements.Add(newAchievement);

        // Send email to customer

        // Anything else

        // Return
        return true;
    }
}

建议:枚举的选项应为ProperCase,并在每一行上放置一项。使它们也具有足够的描述性很好。

public enum AchievementType
{
    CreatedSavingsAccount,
    CreatedGoal,
    CompletedGoal,
    AccountBalance5000,
    // [...]
}