c# - 实现dotnet 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 或其他地方。
解决方案
我最初的反应是您应该有一个 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,
// [...]
}
推荐阅读
- reactjs - 在反应中使用弹出窗口登录的最佳方式
- python - 如果它与熊猫中另一个数据框的列值部分匹配,则搜索列值
- r - R中带有嵌套循环的函数
- angular - 有什么办法可以实现 Angular js 以 Angular 上传多部分/表单数据的功能吗?如何在角度中设置未定义的内容类型?
- android - 如何仅对选定的行数使用 group by?
- templates - 在 conky 中,如何在模板中嵌套变量?
- swiftui - 在 swiftui 动画中,如何获得停靠样式动画
- python - pytest 每次迭代的新测试 | for 循环 | 参数化夹具
- javascript - 如何通过多行节点js写入txt文件
- android - 有没有办法强制显示 Jetpack Compose 文本?