gpt4 book ai didi

grails - Groovy-按雇主,角色,项目文档ID,证书的筛选列表

转载 作者:行者123 更新时间:2023-12-02 15:21:43 25 4
gpt4 key购买 nike

我试图弄清楚如何按雇主,角色,项目文档ID以及是否通过认证来过滤将进入下拉菜单的用户列表。我只将满足所有要求的用户显示在列表中。我无法获取正确编译的代码。我使用的ifs太多了?有更好的书写方式吗?感谢您的任何帮助。

我试图按雇主,职位和
如果他们拥有有效的认证。

def assign_roles() {
List documentAuthors = []
List fieldTechnicians = []
ProjectDocument projectDocument = ProjectDocument.get(params.id)
Project project = Project.get(params.projectId)
User authUser = docRegService.authenticatedUser
def published_document = CertificationHistoryHeader.findAllByUserAndPublishedDocument(user, published_document)
String employerAdminCertifier = CertifierDocument.findByDocument(projectDocument ? .document ? .document) ? .certifier.name

EmployerUser.findAllByEmployer(authUser.employer) * .user.each {
User user - >
if (CertifierDocument.findByDocument(projectDocument ? .document ? .document) ? .certifier.name == employerAdminCertifier) {
if (latest.action in [CertHistoryActions.CERTIFIED.toString(), CertHistoryActions.RE_CERTIFIED.toString()])
if (user.hasRole(Roles.ROLE_DOCUMENT_AUTHOR.toString())) {
documentAuthors.add(user)
}
if (user.hasRole(Roles.ROLE_FIELD_TECH.toString())) {
fieldTechnicians.add(user)
}
}
}

最佳答案

好吧,您确实有语法错误。安全导航运算符(?。),扩展运算符(*。)或声明闭包参数(->)都不能有空格。至于更好的编写方式,这是我的看法:

def assign_roles() {
List documentAuthors = []
List fieldTechnicians = []
ProjectDocument projectDocument = ProjectDocument.get(params.id)
Project project = Project.get(params.projectId)
User authUser = docRegService.authenticatedUser

def published_document = CertificationHistoryHeader.findAllByUserAndPublishedDocument(user, published_document)
String employerAdminCertifier = CertifierDocument.findByDocument(projectDocument?.document?.document)?.certifier.name
def isValidAction = latest.action in [CertHistoryActions.CERTIFIED.toString(), CertHistoryActions.RE_CERTIFIED.toString()]

if(CertifierDocument.findByDocument(projectDocument?.document?.document)?.certifier.name == employerAdminCertifier)) {
EmployerUser.findAllByEmployer(authUser.employer)*.user.each { User user ->
def roles = EmployerUser.where {
/*
* A query to get all of the user's roles.
* This will depend on how EmployerUser and role domain classes are associated.
* The list can be limited to the two roles you're looking for.
*/
}.list()

if(isValidAction && roles.contains(Roles.ROLE_DOCUMENT_AUTHOR)) {
documentAuthors.add(user)
}

if(roles.contains(Roles.ROLE_FIELD_TECH)) {
fieldTechnicians.add(user)
}
}
}
}
user循环中的大多数条件似乎与用户无关,因此,我没有为每个用户评估它们,而是在循环之前进行了一次。这本身可以清理循环中条件的使用方式。实际上,如果不满足loyerAdminCertifier条件,我将跳过整个循环。

然后,我将运行查询以获取用户角色,而不是两次调用 user.hasRoles()。然后使用结果列表。这样可以减少数据库调用。

关于grails - Groovy-按雇主,角色,项目文档ID,证书的筛选列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34460200/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com