diff --git a/maxkey-core/src/main/java/org/maxkey/domain/Groups.java b/maxkey-core/src/main/java/org/maxkey/domain/Groups.java index 3b8fa9524..772059fb9 100644 --- a/maxkey-core/src/main/java/org/maxkey/domain/Groups.java +++ b/maxkey-core/src/main/java/org/maxkey/domain/Groups.java @@ -48,6 +48,11 @@ public class Groups extends JpaBaseDomain implements Serializable { @Column String orgIdsList; + @Column + String resumeTime; + + @Column + String suspendTime; @Column int isdefault; @@ -181,6 +186,22 @@ public class Groups extends JpaBaseDomain implements Serializable { this.orgIdsList = orgIdsList; } + public String getResumeTime() { + return resumeTime; + } + + public void setResumeTime(String resumeTime) { + this.resumeTime = resumeTime; + } + + public String getSuspendTime() { + return suspendTime; + } + + public void setSuspendTime(String suspendTime) { + this.suspendTime = suspendTime; + } + @Override public String toString() { StringBuilder builder = new StringBuilder(); @@ -194,6 +215,10 @@ public class Groups extends JpaBaseDomain implements Serializable { builder.append(filters); builder.append(", orgIdsList="); builder.append(orgIdsList); + builder.append(", resumeTime="); + builder.append(resumeTime); + builder.append(", suspendTime="); + builder.append(suspendTime); builder.append(", isdefault="); builder.append(isdefault); builder.append(", description="); diff --git a/maxkey-persistence/src/main/java/org/maxkey/persistence/service/GroupsService.java b/maxkey-persistence/src/main/java/org/maxkey/persistence/service/GroupsService.java index c1d8cc8c0..e2694c9e5 100644 --- a/maxkey-persistence/src/main/java/org/maxkey/persistence/service/GroupsService.java +++ b/maxkey-persistence/src/main/java/org/maxkey/persistence/service/GroupsService.java @@ -17,6 +17,8 @@ package org.maxkey.persistence.service; +import java.time.LocalDateTime; +import java.time.LocalTime; import java.util.List; import org.apache.mybatis.jpa.persistence.JpaBaseService; @@ -62,6 +64,25 @@ public class GroupsService extends JpaBaseService{ public void refreshDynamicGroups(Groups dynamicGroup){ if(dynamicGroup.getDynamic().equals("1")) { + boolean isDynamicTimeSupport = false; + boolean isBetweenEffectiveTime = false; + if(dynamicGroup.getResumeTime()!=null&&dynamicGroup.getResumeTime().equals("") + &&dynamicGroup.getSuspendTime()!=null&&dynamicGroup.getSuspendTime().equals("")) { + LocalTime currentTime = LocalDateTime.now().toLocalTime(); + LocalTime resumeTime = LocalTime.parse(dynamicGroup.getResumeTime()); + LocalTime suspendTime = LocalTime.parse(dynamicGroup.getSuspendTime()); + + _logger.info("currentTime: " + currentTime + + " , resumeTime : " + resumeTime + + " , suspendTime: " + suspendTime); + isDynamicTimeSupport = true; + + if(resumeTime.isBefore(currentTime) && currentTime.isBefore(suspendTime)) { + isBetweenEffectiveTime = true; + } + + } + if(dynamicGroup.getOrgIdsList()!=null && !dynamicGroup.getOrgIdsList().equals("")) { dynamicGroup.setOrgIdsList("'"+dynamicGroup.getOrgIdsList().replace(",", "','")+"'"); } @@ -76,8 +97,17 @@ public class GroupsService extends JpaBaseService{ dynamicGroup.setFilters(filters); - groupMemberService.deleteDynamicGroupMember(dynamicGroup); - groupMemberService.addDynamicGroupMember(dynamicGroup); + if(isDynamicTimeSupport) { + if(isBetweenEffectiveTime) { + groupMemberService.deleteDynamicGroupMember(dynamicGroup); + groupMemberService.addDynamicGroupMember(dynamicGroup); + }else { + groupMemberService.deleteDynamicGroupMember(dynamicGroup); + } + }else{ + groupMemberService.deleteDynamicGroupMember(dynamicGroup); + groupMemberService.addDynamicGroupMember(dynamicGroup); + } } } diff --git a/maxkey-web-manage/src/main/java/org/maxkey/jobs/DynamicGroupsJob.java b/maxkey-web-manage/src/main/java/org/maxkey/jobs/DynamicGroupsJob.java index b436a0b3c..bcd2d90f9 100644 --- a/maxkey-web-manage/src/main/java/org/maxkey/jobs/DynamicGroupsJob.java +++ b/maxkey-web-manage/src/main/java/org/maxkey/jobs/DynamicGroupsJob.java @@ -1,3 +1,20 @@ +/* + * Copyright [2020] [MaxKey of copyright http://www.maxkey.top] + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + package org.maxkey.jobs; import java.util.List; diff --git a/maxkey-web-manage/src/main/java/org/maxkey/jobs/DynamicRolesJob.java b/maxkey-web-manage/src/main/java/org/maxkey/jobs/DynamicRolesJob.java index f1d00c30f..2d4afb3ed 100644 --- a/maxkey-web-manage/src/main/java/org/maxkey/jobs/DynamicRolesJob.java +++ b/maxkey-web-manage/src/main/java/org/maxkey/jobs/DynamicRolesJob.java @@ -1,3 +1,20 @@ +/* + * Copyright [2020] [MaxKey of copyright http://www.maxkey.top] + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + package org.maxkey.jobs; public class DynamicRolesJob { diff --git a/maxkey-web-manage/src/main/resources/messages/message.properties b/maxkey-web-manage/src/main/resources/messages/message.properties index 15e6aca6a..a72a25a39 100644 --- a/maxkey-web-manage/src/main/resources/messages/message.properties +++ b/maxkey-web-manage/src/main/resources/messages/message.properties @@ -416,6 +416,8 @@ group.name=\u7528\u6237\u7ec4 group.dynamic=\u52a8\u6001\u7ec4 group.filters=\u8fc7\u6ee4\u5668 group.orgidslist=\u673a\u6784\u5217\u8868 +group.resumeTime=\u52a8\u6001\u65f6\u95f4 +group.suspendTime=\u6302\u8d77\u65f6\u95f4 #role role.id=\u89d2\u8272\u7f16\u7801 diff --git a/maxkey-web-manage/src/main/resources/messages/message_en.properties b/maxkey-web-manage/src/main/resources/messages/message_en.properties index daa90cf79..8a1067060 100644 --- a/maxkey-web-manage/src/main/resources/messages/message_en.properties +++ b/maxkey-web-manage/src/main/resources/messages/message_en.properties @@ -415,6 +415,8 @@ group.name=name group.dynamic=dynamic group.filters=filters group.orgidslist=orgIdsList +group.resumeTime=resumeTime +group.suspendTime=suspendTime #role role.id=id diff --git a/maxkey-web-manage/src/main/resources/messages/message_zh_CN.properties b/maxkey-web-manage/src/main/resources/messages/message_zh_CN.properties index 2e77a6a3d..f3b3ebf00 100644 --- a/maxkey-web-manage/src/main/resources/messages/message_zh_CN.properties +++ b/maxkey-web-manage/src/main/resources/messages/message_zh_CN.properties @@ -417,6 +417,8 @@ group.name=\u7528\u6237\u7ec4 group.dynamic=\u52a8\u6001\u7ec4 group.filters=\u8fc7\u6ee4\u5668 group.orgidslist=\u673a\u6784\u5217\u8868 +group.resumeTime=\u52a8\u6001\u65f6\u95f4 +group.suspendTime=\u6302\u8d77\u65f6\u95f4 #role role.id=\u89d2\u8272\u7f16\u7801 diff --git a/maxkey-web-manage/src/main/resources/templates/views/groups/groupAdd.ftl b/maxkey-web-manage/src/main/resources/templates/views/groups/groupAdd.ftl index 52df6f3a0..0aece04df 100644 --- a/maxkey-web-manage/src/main/resources/templates/views/groups/groupAdd.ftl +++ b/maxkey-web-manage/src/main/resources/templates/views/groups/groupAdd.ftl @@ -184,6 +184,18 @@ function showOrgsTree() { + + <@locale code="group.resumeTime" />: + + + + + + <@locale code="group.suspendTime" />: + + + + <@locale code="group.orgidslist" />: @@ -194,13 +206,13 @@ function showOrgsTree() { <@locale code="group.filters" />: - + <@locale code="common.text.description" />: - + diff --git a/maxkey-web-manage/src/main/resources/templates/views/groups/groupUpdate.ftl b/maxkey-web-manage/src/main/resources/templates/views/groups/groupUpdate.ftl index 04198d2cb..c48be1448 100644 --- a/maxkey-web-manage/src/main/resources/templates/views/groups/groupUpdate.ftl +++ b/maxkey-web-manage/src/main/resources/templates/views/groups/groupUpdate.ftl @@ -198,6 +198,18 @@ function showOrgsTree() { + + <@locale code="group.resumeTime" />: + + + + + + <@locale code="group.suspendTime" />: + + + + <@locale code="group.orgidslist" />: @@ -208,13 +220,13 @@ function showOrgsTree() { <@locale code="group.filters" />: - + <@locale code="common.text.description" />: - +