我试图通过在每次通话的连接时间和退出时间将新的 Date 值传递给应用程序来获取基于 Web 的电话通话的持续时间。
代码看起来有点像这样:
class Call {
Date startTime = new Date()
Date endTime = new Date()
String callLength = ""
String Id = UUID.randomUUID()
}
class callController {
def connected = {
callInstance = Call.findById(params.Id)
//Id params are passed through from external voice call
Call.executeUpdate("update Call a set a.startTime=? where a.Id='${params.id}'", [new Date()])
}
def callEnded = {
callInstance = Call.findById(params.Id)
Call.executeUpdate("update Call a set a.endTime=? where a.Id='${params.id}'", [new Date()])
timeHandler(callInstance.endTime, callInstance.startTime)
}
def timeHandler = {end, start->
TimeDuration duration = TimeCategory.minus(end, start)
Call.executeUpdate("update Call a set a.callLength='$duration' where a.Id = '${params.id}'")
}
}
编辑:稍微编辑代码以产生更好的输出。
编辑2:
我在 Call 对象上为 startTime 和 endTime 创建了变量。但是,现在我在更新日期时遇到了麻烦——我猜 Grails 不喜欢更新日期?它表示将新日期传递给日期变量时遇到问题。这是确切的错误:
java.lang.ClassCastException: [Ljava.util.Date; cannot be cast to java.util.Date
Stacktrace 指向我尝试更新调用的行。有解决方法吗?
再次感谢!
编辑3:
用正确的代码修复。
感谢大家的帮助!