【发布时间】:2020-01-19 14:14:04
【问题描述】:
我需要帮助才能根据用户选择的包实现每天的点击量。这是我到目前为止所做的,但它不能正常工作:
实体:
@Entity
@Table(name = "users")
public class UsersModel implements Serializable {
@Column(name = "plan")
private String plan;
@Column(name = "plan_last_activity")
@Convert(converter = LocalDateTimeConverter.class)
private LocalDateTime planLastActivity;
}
代码:
public boolean calculateClickTimes() {
String userName = SecurityUtils.getSubject().getPrincipal().toString();
QueryDashboardHelper queryHelper = new QueryDashboardHelper();
UsersModel user = queryHelper.getUserByUserName(userName);
String plan = user.getPlan(); // silver/gold/platinum/diamond
int todayHits = user.getTradesPerDay();
LocalDateTime lastHit = user.getPlanLastActivity();
LocalDateTime now = LocalDateTime.now();
LocalDateTime tenSecondsLater = now.plusDays(1);
long diff = ChronoUnit.DAYS.between(lastHit, tenSecondsLater);
switch(plan) {
case "diamond":
if(diff >= 1 && todayHits >= 20) {
todayHits = 0;
return true;
}
break;
case "platinum":
if(diff >= 1 && todayHits >= 15) {
todayHits = 0;
return true;
}
break;
case "gold":
if(diff >= 1 && todayHits >= 10) {
todayHits = 0;
return true;
}
break;
case "silver":
if(diff >= 1 && todayHits >= 5) {
// User has clicked 5 times today
todayHits = 0;
return true;
}
break;
default:
}
return false;
}
一般的想法是,应该限制用户在网页中根据所选包(银/金/铂/钻石)和数据库plan、tradesPerDay和@987654326中的数据执行点击@ 当天允许的点击数应该是有限的。
请给我一些建议如何正确实现此代码?
【问题讨论】:
-
上面代码中的第一个也是明显的错误,即 silver 计划的条件也适用于所有其他计划,即
todayHits >= 5对todayHits >= 10也适用等。所以你应该通过下降值来改变大小写:case "diamond" -> case "platinum" etc. -
您可能想重新访问this。
-
我更新了代码。你能给我更多的建议如何实现吗?
标签: java sql if-statement java-8 switch-statement