소스 검색

更新!

TRX 1 년 전
부모
커밋
d56bf3235b

+ 9 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/devices/permiss/TimeSlotModel.java

@@ -1,5 +1,6 @@
 package com.zhongshu.card.client.model.devices.permiss;
 
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
@@ -13,8 +14,16 @@ import lombok.NoArgsConstructor;
 @NoArgsConstructor
 public class TimeSlotModel {
 
+    @Schema(description = "开发时间,如:12:45")
     private String startTime;
 
+    @Schema(description = "转为数字,12:45  1245")
+    private Integer startTimeNumber = 0;
+
+    @Schema(description = "结束时间")
     private String endTime;
 
+    @Schema(description = "")
+    private Integer endTimeNumber = 0;
+
 }

+ 12 - 8
FullCardClient/src/main/java/com/zhongshu/card/client/type/device/WeekDayType.java

@@ -6,19 +6,23 @@ import lombok.Getter;
  *
  */
 public enum WeekDayType {
-    Mon("周一"),
-    Tues("周二"),
-    Wed("周三"),
-    Thur("周四"),
-    Fri("周五"),
-    Sat("周六"),
-    Sun("周日"),
+    Mon("周一", 2),
+    Tues("周二", 3),
+    Wed("周三", 4),
+    Thur("周四", 5),
+    Fri("周五", 6),
+    Sat("周六", 7),
+    Sun("周日", 1),
     ;
 
     @Getter
     private String remark;
 
-    WeekDayType(String remark) {
+    @Getter
+    private Integer weekDay;
+
+    WeekDayType(String remark, Integer weekDay) {
         this.remark = remark;
+        this.weekDay = weekDay;
     }
 }

+ 13 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/utils/DateUtils.java

@@ -1,5 +1,6 @@
 package com.zhongshu.card.client.utils;
 
+import com.zhongshu.card.client.type.device.WeekDayType;
 import lombok.SneakyThrows;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
@@ -885,4 +886,16 @@ public class DateUtils {
         System.out.println("time : " + time);
         System.out.println("s : " + s);
     }
+
+    public static WeekDayType getTimeWeekData(Long time) {
+        Calendar c = Calendar.getInstance();
+        c.setTimeInMillis(time);
+        int weekDay = c.get(Calendar.DAY_OF_WEEK);
+        for (WeekDayType weekDayType : WeekDayType.values()) {
+            if (weekDayType.getWeekDay() == weekDay) {
+                return weekDayType;
+            }
+        }
+        return null;
+    }
 }

+ 4 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/devices/permiss/PermissSettingList.java

@@ -8,6 +8,7 @@ import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
+import org.springframework.data.mongodb.core.index.Indexed;
 import org.springframework.data.mongodb.core.mapping.DBRef;
 import org.springframework.data.mongodb.core.mapping.Document;
 
@@ -34,15 +35,18 @@ public class PermissSettingList extends SuperMain {
     private PermissSettingType permissSettingType;
 
     @Schema(description = "性别")
+    @Indexed
     private Sex sex;
 
     @Schema(description = "关联配置的数据id,如:角色id集合")
+    @Indexed
     private List<String> dataIds = new ArrayList<>();
 
     @Schema(description = "设备类型--分组、设备")
     private PermissSettingDeviceType permissSettingDeviceType;
 
     @Schema(description = "设备列表")
+    @Indexed
     private List<String> deviceIds = new ArrayList<>();
 
 }

+ 52 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/devices/permiss/DevicePermissVerifyService.java

@@ -1,15 +1,22 @@
 package com.zhongshu.card.server.core.service.devices.permiss;
 
 import com.github.microservice.net.ResultContent;
+import com.zhongshu.card.client.model.devices.permiss.TimeSlotModel;
+import com.zhongshu.card.client.model.devices.permiss.TimeSlotWeekModel;
 import com.zhongshu.card.client.type.DataState;
 import com.zhongshu.card.client.type.UserState;
 import com.zhongshu.card.client.type.device.PermissDataType;
+import com.zhongshu.card.client.type.device.TimeSlotType;
+import com.zhongshu.card.client.type.device.WeekDayType;
+import com.zhongshu.card.client.utils.DateUtils;
 import com.zhongshu.card.server.core.dao.devices.DeviceInfoDao;
 import com.zhongshu.card.server.core.dao.devices.DevicePermissDao;
+import com.zhongshu.card.server.core.dao.devices.PermissSettingListDao;
 import com.zhongshu.card.server.core.dao.org.OrganizationUserDao;
 import com.zhongshu.card.server.core.dao.org.UserCountDao;
 import com.zhongshu.card.server.core.domain.devices.DeviceInfo;
 import com.zhongshu.card.server.core.domain.devices.permiss.DevicePermiss;
+import com.zhongshu.card.server.core.domain.devices.permiss.PermissTimeSlot;
 import com.zhongshu.card.server.core.domain.org.UserAccount;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.ObjectUtils;
@@ -17,6 +24,10 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.StopWatch;
 
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
 /**
  * 验证用户是否可以使用设备
  *
@@ -39,6 +50,9 @@ public class DevicePermissVerifyService {
     @Autowired
     private DeviceInfoDao deviceInfoDao;
 
+    @Autowired
+    private PermissSettingListDao permissSettingListDao;
+
     /**
      * 验证用户是否有设备的使用权限
      *
@@ -91,4 +105,42 @@ public class DevicePermissVerifyService {
         log.info("用户设备权限验证:{}", stopWatch.prettyPrint());
         return ResultContent.buildSuccess(msg);
     }
+
+    /**
+     * 验证当前时间是否在时间段里
+     *
+     * @param list
+     * @return
+     */
+    public boolean verifyTimeSlot(List<PermissTimeSlot> list) {
+        boolean b = false;
+        if (ObjectUtils.isNotEmpty(list)) {
+            WeekDayType weekDayType = DateUtils.getTimeWeekData(System.currentTimeMillis());
+
+            List<TimeSlotModel> timeSlots = new ArrayList<>();
+            list.parallelStream().forEach(it -> {
+                if (it.getState() == DataState.Enable) {
+                    if (it.getType() == TimeSlotType.Week) {
+                        List<TimeSlotWeekModel> timeSlotWeekModels = it.getTimeSlotWeekModels();
+                        if (ObjectUtils.isNotEmpty(timeSlotWeekModels)) {
+                            timeSlotWeekModels.parallelStream().forEach(time -> {
+                                if (time.getWeekDayType() == weekDayType && ObjectUtils.isNotEmpty(time.getTimeSlots())) {
+                                    timeSlots.addAll(time.getTimeSlots());
+                                }
+                            });
+                        }
+                    }
+                }
+            });
+
+            if (ObjectUtils.isNotEmpty(timeSlots)) {
+                Long time = System.currentTimeMillis();
+                timeSlots.parallelStream().filter(it -> {
+                    return it.getStartTimeNumber() < time && time < it.getEndTimeNumber();
+                }).collect(Collectors.toUnmodifiableList());
+            }
+        }
+        return b;
+    }
+
 }

+ 19 - 4
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/devices/permiss/PermissTimeSlotService.java

@@ -3,10 +3,7 @@ package com.zhongshu.card.server.core.service.devices.permiss;
 import com.github.microservice.components.data.base.util.PageEntityUtil;
 import com.github.microservice.net.ResultContent;
 import com.github.microservice.net.ResultMessage;
-import com.zhongshu.card.client.model.devices.permiss.PermissTimeSlotModel;
-import com.zhongshu.card.client.model.devices.permiss.PermissTimeSlotParam;
-import com.zhongshu.card.client.model.devices.permiss.PermissTimeSlotSearch;
-import com.zhongshu.card.client.model.devices.permiss.PermissTimeSlotSimpleModel;
+import com.zhongshu.card.client.model.devices.permiss.*;
 import com.zhongshu.card.client.type.DataState;
 import com.zhongshu.card.client.type.device.TimeSlotType;
 import com.zhongshu.card.server.core.dao.devices.PermissTimeSlotDao;
@@ -24,6 +21,8 @@ import org.springframework.data.domain.Pageable;
 import org.springframework.stereotype.Service;
 import org.springframework.util.Assert;
 
+import java.util.List;
+
 /**
  * 权限时间段管理
  *
@@ -60,6 +59,22 @@ public class PermissTimeSlotService extends SuperService {
             initEntityNoCheckOid(entity);
         }
         BeanUtils.copyProperties(param, entity);
+        List<TimeSlotWeekModel> timeSlotWeekModels = param.getTimeSlotWeekModels();
+        if (ObjectUtils.isNotEmpty(timeSlotWeekModels)) {
+            timeSlotWeekModels.stream().forEach(timeSlotWeekModel -> {
+                List<TimeSlotModel> timeSlots = timeSlotWeekModel.getTimeSlots();
+                if (ObjectUtils.isNotEmpty(timeSlots)) {
+                    timeSlots.stream().forEach(timeSlotModel -> {
+                        if (StringUtils.isNotEmpty(timeSlotModel.getStartTime())) {
+                            timeSlotModel.setStartTimeNumber(Integer.parseInt(timeSlotModel.getStartTime().replace(":", "")));
+                        }
+                        if (StringUtils.isNotEmpty(timeSlotModel.getEndTime())) {
+                            timeSlotModel.setEndTimeNumber(Integer.parseInt(timeSlotModel.getEndTime().replace(":", "")));
+                        }
+                    });
+                }
+            });
+        }
         permissTimeSlotDao.save(entity);
         return ResultContent.buildSuccess();
     }

+ 4 - 1
FullCardServer/src/main/java/com/zhongshu/card/server/core/test/Test.java

@@ -54,6 +54,9 @@ public class Test {
 //        } catch (Exception e) {
 //            e.printStackTrace();
 //        }
-        System.out.println(CommonUtil.idCardDesen("511304198608153312"));
+
+        Calendar calendar = Calendar.getInstance();
+        calendar.add(Calendar.DATE, 5);
+        System.out.println(calendar.get(Calendar.DAY_OF_WEEK));
     }
 }