浏览代码

更新!

TRX 1 年之前
父节点
当前提交
eeb06794de
共有 18 个文件被更改,包括 627 次插入4 次删除
  1. 62 0
      FullCardClient/src/main/java/com/zhongshu/card/client/model/devices/permiss/PermissSettingModel.java
  2. 37 0
      FullCardClient/src/main/java/com/zhongshu/card/client/model/devices/permiss/PermissSettingParam.java
  3. 30 0
      FullCardClient/src/main/java/com/zhongshu/card/client/model/devices/permiss/PermissSettingSearch.java
  4. 12 0
      FullCardClient/src/main/java/com/zhongshu/card/client/model/devices/permiss/PermissTimeSlotModel.java
  5. 4 0
      FullCardClient/src/main/java/com/zhongshu/card/client/model/devices/permiss/PermissTimeSlotParam.java
  6. 3 0
      FullCardClient/src/main/java/com/zhongshu/card/client/model/devices/permiss/PermissTimeSlotSearch.java
  7. 36 0
      FullCardClient/src/main/java/com/zhongshu/card/client/model/devices/permiss/PermissTimeSlotSimpleModel.java
  8. 19 0
      FullCardClient/src/main/java/com/zhongshu/card/client/type/device/PermissSettingType.java
  9. 83 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/devices/permiss/PermissSettingController.java
  10. 24 3
      FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/devices/permiss/PermissTimeSlotController.java
  11. 17 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/devices/PermissSettingDao.java
  12. 19 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/devices/extend/PermissSettingDaoExtend.java
  13. 69 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/devices/impl/PermissSettingDaoImpl.java
  14. 4 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/devices/impl/PermissTimeSlotDaoImpl.java
  15. 41 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/devices/permiss/PermissSetting.java
  16. 9 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/devices/permiss/PermissTimeSlot.java
  17. 123 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/service/devices/permiss/PermissSettingService.java
  18. 35 1
      FullCardServer/src/main/java/com/zhongshu/card/server/core/service/devices/permiss/PermissTimeSlotService.java

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

@@ -0,0 +1,62 @@
+package com.zhongshu.card.client.model.devices.permiss;
+
+import com.zhongshu.card.client.model.base.SuperModel;
+import com.zhongshu.card.client.type.DataState;
+import com.zhongshu.card.client.type.device.PermissSettingType;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.apache.commons.lang3.ObjectUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author TRX
+ * @date 2024/12/19
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class PermissSettingModel extends SuperModel {
+
+    @Schema(description = "名称")
+    private String name;
+
+    @Schema(description = "关联的时间段")
+    private PermissTimeSlotSimpleModel timeSlot;
+
+    private String timeSlotId;
+
+    private String timeSlotName;
+
+    public String getTimeSlotName() {
+        if (ObjectUtils.isNotEmpty(timeSlot)) {
+            return timeSlot.getName();
+        }
+        return "";
+    }
+
+    public String getTimeSlotId() {
+        if (timeSlot != null) {
+            return timeSlot.getId();
+        }
+        return "";
+    }
+
+    @Schema(description = "关联的数据ID集合")
+    private List<String> list = new ArrayList<>();
+
+    @Schema(description = "数据状态")
+    private DataState state;
+
+    private String stateStr;
+
+    public String getStateStr() {
+        if (state != null) {
+            return state.getRemark();
+        }
+        return "";
+    }
+}

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

@@ -0,0 +1,37 @@
+package com.zhongshu.card.client.model.devices.permiss;
+
+import com.zhongshu.card.client.model.base.SuperParam;
+import com.zhongshu.card.client.type.DataState;
+import com.zhongshu.card.client.type.device.PermissSettingType;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 设备权限 规则
+ *
+ * @author TRX
+ * @date 2024/12/19
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class PermissSettingParam extends SuperParam {
+
+    @Schema(description = "名称")
+    private String name;
+
+    @Schema(description = "关联的时间段")
+    private String timeSlotId;
+
+    @Schema(description = "关联的数据ID集合")
+    private List<String> list = new ArrayList<>();
+
+    @Schema(description = "数据状态")
+    private DataState state;
+
+}

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

@@ -0,0 +1,30 @@
+package com.zhongshu.card.client.model.devices.permiss;
+
+import com.zhongshu.card.client.model.base.SuperSearch;
+import com.zhongshu.card.client.type.DataState;
+import com.zhongshu.card.client.type.device.PermissSettingType;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author TRX
+ * @date 2024/12/19
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class PermissSettingSearch extends SuperSearch {
+    @Schema(description = "名称")
+    private String name;
+
+    @Schema(description = "关联的时间段")
+    private String timeSlotId;
+
+    @Schema(description = "数据状态")
+    private DataState state;
+}

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

@@ -1,6 +1,7 @@
 package com.zhongshu.card.client.model.devices.permiss;
 
 import com.zhongshu.card.client.model.base.SuperModel;
+import com.zhongshu.card.client.type.DataState;
 import com.zhongshu.card.client.type.device.TimeSlotType;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.AllArgsConstructor;
@@ -37,4 +38,15 @@ public class PermissTimeSlotModel extends SuperModel {
     @Schema(description = "星期数据")
     private List<TimeSlotWeekModel> timeSlotWeekModels = new ArrayList<>();
 
+    @Schema(description = "状态")
+    private DataState state;
+
+    private String stateStr;
+
+    public String getStateStr() {
+        if (state != null) {
+            return state.getRemark();
+        }
+        return "";
+    }
 }

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

@@ -1,6 +1,7 @@
 package com.zhongshu.card.client.model.devices.permiss;
 
 import com.zhongshu.card.client.model.base.SuperParam;
+import com.zhongshu.card.client.type.DataState;
 import com.zhongshu.card.client.type.device.TimeSlotType;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.AllArgsConstructor;
@@ -25,6 +26,9 @@ public class PermissTimeSlotParam extends SuperParam {
     @Schema(description = "时间段类型")
     private TimeSlotType type = TimeSlotType.Week;
 
+    @Schema(description = "状态")
+    private DataState state = DataState.Enable;
+
     @Schema(description = "星期数据")
     private List<TimeSlotWeekModel> timeSlotWeekModels = new ArrayList<>();
 }

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

@@ -1,6 +1,7 @@
 package com.zhongshu.card.client.model.devices.permiss;
 
 import com.zhongshu.card.client.model.base.SuperSearch;
+import com.zhongshu.card.client.type.DataState;
 import com.zhongshu.card.client.type.device.TimeSlotType;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.AllArgsConstructor;
@@ -22,4 +23,6 @@ public class PermissTimeSlotSearch extends SuperSearch {
     @Schema(description = "时间段类型")
     private TimeSlotType type;
 
+    @Schema(description = "状态")
+    private DataState state;
 }

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

@@ -0,0 +1,36 @@
+package com.zhongshu.card.client.model.devices.permiss;
+
+import com.zhongshu.card.client.model.base.SuperModel;
+import com.zhongshu.card.client.type.device.TimeSlotType;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author TRX
+ * @date 2024/12/19
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class PermissTimeSlotSimpleModel extends SuperModel {
+
+    @Schema(description = "名称")
+    private String name;
+
+    @Schema(description = "时间段类型")
+    private TimeSlotType type;
+
+    private String typeStr;
+
+    public String getTypeStr() {
+        if (type != null) {
+            return type.getRemark();
+        }
+        return "";
+    }
+}

+ 19 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/type/device/PermissSettingType.java

@@ -0,0 +1,19 @@
+package com.zhongshu.card.client.type.device;
+
+import lombok.Getter;
+
+/**
+ * 权限 设置类型
+ */
+public enum PermissSettingType {
+    UserSetting("用户设置"),
+    Association("关联设置"),
+    ;
+
+    @Getter
+    private String remark;
+
+    PermissSettingType(String remark) {
+        this.remark = remark;
+    }
+}

+ 83 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/devices/permiss/PermissSettingController.java

@@ -0,0 +1,83 @@
+package com.zhongshu.card.server.core.controller.devices.permiss;
+
+import com.github.microservice.auth.security.annotations.ResourceAuth;
+import com.github.microservice.auth.security.type.AuthType;
+import com.github.microservice.net.ResultContent;
+import com.zhongshu.card.client.model.base.IDParam;
+import com.zhongshu.card.client.model.devices.permiss.PermissSettingModel;
+import com.zhongshu.card.client.model.devices.permiss.PermissSettingParam;
+import com.zhongshu.card.client.model.devices.permiss.PermissSettingSearch;
+import com.zhongshu.card.client.type.DataState;
+import com.zhongshu.card.server.core.service.devices.permiss.PermissSettingService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.web.PageableDefault;
+import org.springframework.util.Assert;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 权限规则管理
+ *
+ * @author TRX
+ * @date 2024/6/5
+ */
+@RestController
+@RequestMapping("/permissSetting")
+@Tag(name = "设备权限-权限规则管理")
+public class PermissSettingController {
+
+    @Autowired
+    private PermissSettingService permissSettingService;
+
+    @ResourceAuth(value = "user", type = AuthType.User)
+    @Operation(summary = "数据详情", description = "数据详情")
+    @RequestMapping(value = "getDetailInfo", method = {RequestMethod.POST})
+    public ResultContent<PermissSettingModel> getDetailInfo(@RequestBody IDParam param) {
+        return this.permissSettingService.getDetailInfo(param.getId());
+    }
+
+    @ResourceAuth(value = "user", type = AuthType.User)
+    @Operation(summary = "添加-编辑数据", description = "添加-编辑数据")
+    @RequestMapping(value = "saveInfo", method = {RequestMethod.POST})
+    public ResultContent saveInfo(@RequestBody PermissSettingParam param) {
+        return this.permissSettingService.saveInfo(param);
+    }
+
+    @ResourceAuth(value = "user", type = AuthType.User)
+    @Operation(summary = "删除数据", description = "删除数据")
+    @RequestMapping(value = "deleteInfo", method = {RequestMethod.POST})
+    public ResultContent deleteInfo(@RequestBody IDParam param) {
+        return this.permissSettingService.deleteInfo(param.getId());
+    }
+
+    @ResourceAuth(value = "user", type = AuthType.User)
+    @Operation(summary = "数据列表-分页查询", description = "数据列表-分页查询")
+    @RequestMapping(value = {"page"}, method = {RequestMethod.POST})
+    public ResultContent<Page<PermissSettingModel>> page(
+            @Parameter(hidden = true) @PageableDefault(page = 0, size = 10) Pageable pageable,
+            @Parameter(required = false) PermissSettingSearch param) {
+        Assert.hasText(param.getProjectOid(), "projectOid不能为空");
+        return permissSettingService.page(param, pageable);
+    }
+
+    @ResourceAuth(value = "user", type = AuthType.User)
+    @Operation(summary = "启用数据", description = "启用数据")
+    @RequestMapping(value = "enableData", method = {RequestMethod.POST})
+    public ResultContent enableData(@RequestBody IDParam param) {
+        return this.permissSettingService.changeState(param.getId(), DataState.Enable);
+    }
+
+    @ResourceAuth(value = "user", type = AuthType.User)
+    @Operation(summary = "禁用数据", description = "禁用数据")
+    @RequestMapping(value = "disableData", method = {RequestMethod.POST})
+    public ResultContent disableData(@RequestBody IDParam param) {
+        return this.permissSettingService.changeState(param.getId(), DataState.Disable);
+    }
+}

+ 24 - 3
FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/devices/permiss/PermissTimeSlotController.java

@@ -7,6 +7,8 @@ import com.zhongshu.card.client.model.base.IDParam;
 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.type.DataState;
 import com.zhongshu.card.server.core.service.devices.permiss.PermissTimeSlotService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
@@ -59,11 +61,30 @@ public class PermissTimeSlotController {
     @ResourceAuth(value = "user", type = AuthType.User)
     @Operation(summary = "数据列表-分页查询", description = "数据列表-分页查询")
     @RequestMapping(value = {"page"}, method = {RequestMethod.POST})
-    public ResultContent<Page<PermissTimeSlotModel>> page(
-            @Parameter(hidden = true) @PageableDefault(page = 0, size = 10) Pageable pageable,
-            @Parameter(required = false) PermissTimeSlotSearch param) {
+    public ResultContent<Page<PermissTimeSlotModel>> page(@Parameter(hidden = true) @PageableDefault(page = 0, size = 10) Pageable pageable, @Parameter(required = false) PermissTimeSlotSearch param) {
         Assert.hasText(param.getProjectOid(), "projectOid不能为空");
         return permissTimeSlotService.page(param, pageable);
     }
 
+    @ResourceAuth(value = "user", type = AuthType.User)
+    @Operation(summary = "数据列表-分页查询(供选择使用)", description = "数据列表-分页查询")
+    @RequestMapping(value = {"pageForSelect"}, method = {RequestMethod.POST})
+    public ResultContent<Page<PermissTimeSlotSimpleModel>> pageForSelect(@Parameter(hidden = true) @PageableDefault(page = 0, size = 10) Pageable pageable, @Parameter(required = false) PermissTimeSlotSearch param) {
+        Assert.hasText(param.getProjectOid(), "projectOid不能为空");
+        return permissTimeSlotService.pageSelect(param, pageable);
+    }
+
+    @ResourceAuth(value = "user", type = AuthType.User)
+    @Operation(summary = "启用数据", description = "启用数据")
+    @RequestMapping(value = "enableData", method = {RequestMethod.POST})
+    public ResultContent enableData(@RequestBody IDParam param) {
+        return this.permissTimeSlotService.changeState(param.getId(), DataState.Enable);
+    }
+
+    @ResourceAuth(value = "user", type = AuthType.User)
+    @Operation(summary = "禁用数据", description = "禁用数据")
+    @RequestMapping(value = "disableData", method = {RequestMethod.POST})
+    public ResultContent disableData(@RequestBody IDParam param) {
+        return this.permissTimeSlotService.changeState(param.getId(), DataState.Disable);
+    }
 }

+ 17 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/devices/PermissSettingDao.java

@@ -0,0 +1,17 @@
+package com.zhongshu.card.server.core.dao.devices;
+
+import com.github.microservice.components.data.mongo.mongo.dao.MongoDao;
+import com.zhongshu.card.server.core.dao.devices.extend.PermissSettingDaoExtend;
+import com.zhongshu.card.server.core.domain.devices.permiss.PermissSetting;
+
+/**
+ * 权限时间段数据
+ *
+ * @author TRX
+ * @date 2024/3/21
+ */
+public interface PermissSettingDao extends MongoDao<PermissSetting>, PermissSettingDaoExtend {
+
+    PermissSetting findTopById(String id);
+
+}

+ 19 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/devices/extend/PermissSettingDaoExtend.java

@@ -0,0 +1,19 @@
+package com.zhongshu.card.server.core.dao.devices.extend;
+
+import com.zhongshu.card.client.model.devices.permiss.PermissSettingSearch;
+import com.zhongshu.card.client.model.devices.permiss.PermissTimeSlotSearch;
+import com.zhongshu.card.server.core.domain.devices.permiss.PermissSetting;
+import com.zhongshu.card.server.core.domain.devices.permiss.PermissTimeSlot;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+
+/**
+ * @Author TRX
+ * @CreateDate: 2023/7/7
+ * @Version: 1.0
+ */
+public interface PermissSettingDaoExtend {
+
+    Page<PermissSetting> page(Pageable pageable, PermissSettingSearch param);
+
+}

+ 69 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/devices/impl/PermissSettingDaoImpl.java

@@ -0,0 +1,69 @@
+package com.zhongshu.card.server.core.dao.devices.impl;
+
+import com.github.microservice.components.data.mongo.mongo.helper.DBHelper;
+import com.zhongshu.card.client.model.devices.permiss.PermissSettingSearch;
+import com.zhongshu.card.server.core.dao.BaseImpl;
+import com.zhongshu.card.server.core.dao.devices.extend.PermissSettingDaoExtend;
+import com.zhongshu.card.server.core.domain.devices.permiss.PermissSetting;
+import com.zhongshu.card.server.core.domain.devices.permiss.PermissTimeSlot;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.domain.Sort;
+import org.springframework.data.mongodb.core.MongoTemplate;
+import org.springframework.data.mongodb.core.query.Criteria;
+import org.springframework.data.mongodb.core.query.Query;
+import org.springframework.util.CollectionUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.regex.Pattern;
+
+/**
+ * @Author TRX
+ * @CreateDate: 2023/4/12
+ * @Version: 1.0
+ */
+public class PermissSettingDaoImpl extends BaseImpl implements PermissSettingDaoExtend {
+
+    @Autowired
+    private MongoTemplate mongoTemplate;
+
+    @Autowired
+    private DBHelper dbHelper;
+
+    @Override
+    public Page<PermissSetting> page(Pageable pageable, PermissSettingSearch param) {
+        Criteria criteria = buildCriteriaNotOid(param);
+
+        //
+        if (StringUtils.isNotEmpty(param.getProjectOid())) {
+            criteria.and("projectOid").is(param.getProjectOid());
+        }
+
+        if (param.getState() != null) {
+            criteria.and("state").is(param.getState());
+        }
+
+        if (StringUtils.isNotEmpty(param.getTimeSlotId())) {
+            criteria.and("timeSlot").is(PermissTimeSlot.build(param.getTimeSlotId()));
+        }
+
+        // 模糊搜索
+        List<Criteria> criterias = new ArrayList<>();
+        if (StringUtils.isNotEmpty(param.getName())) {
+            Pattern pattern = Pattern.compile("^.*" + param.getName() + ".*$");
+            criterias.add(Criteria.where("name").is(pattern));
+        }
+
+        if (!CollectionUtils.isEmpty(criterias)) {
+            criteria.andOperator(criterias.toArray(new Criteria[]{}));
+        }
+        Sort sort = buildSort(param);
+        Query query = Query.query(criteria);
+        query.with(sort);
+        return dbHelper.pages(query, pageable, PermissSetting.class);
+    }
+
+}

+ 4 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/devices/impl/PermissTimeSlotDaoImpl.java

@@ -44,6 +44,10 @@ public class PermissTimeSlotDaoImpl extends BaseImpl implements PermissTimeSlotD
             criteria.and("type").is(param.getType());
         }
 
+        if (param.getState() != null) {
+            criteria.and("state").is(param.getState());
+        }
+
         // 模糊搜索
         List<Criteria> criterias = new ArrayList<>();
         if (StringUtils.isNotEmpty(param.getName())) {

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

@@ -0,0 +1,41 @@
+package com.zhongshu.card.server.core.domain.devices.permiss;
+
+import com.zhongshu.card.client.type.DataState;
+import com.zhongshu.card.client.type.device.PermissSettingType;
+import com.zhongshu.card.server.core.domain.base.SuperMain;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springframework.data.mongodb.core.mapping.DBRef;
+import org.springframework.data.mongodb.core.mapping.Document;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 设备权限 规则 设置数据
+ *
+ * @author TRX
+ * @date 2024/12/19
+ */
+@Data
+@Document
+@NoArgsConstructor
+@AllArgsConstructor
+public class PermissSetting extends SuperMain {
+
+    @Schema(description = "名称")
+    private String name;
+
+    @Schema(description = "关联的时间段")
+    @DBRef(lazy = true)
+    private PermissTimeSlot timeSlot;
+
+    @Schema(description = "关联的数据ID集合")
+    private List<String> list = new ArrayList<>();
+
+    @Schema(description = "数据状态")
+    private DataState state = DataState.Enable;
+}
+

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

@@ -1,6 +1,7 @@
 package com.zhongshu.card.server.core.domain.devices.permiss;
 
 import com.zhongshu.card.client.model.devices.permiss.TimeSlotWeekModel;
+import com.zhongshu.card.client.type.DataState;
 import com.zhongshu.card.client.type.device.TimeSlotType;
 import com.zhongshu.card.server.core.domain.base.SuperMain;
 import io.swagger.v3.oas.annotations.media.Schema;
@@ -33,4 +34,12 @@ public class PermissTimeSlot extends SuperMain {
     @Schema(description = "星期数据")
     private List<TimeSlotWeekModel> timeSlotWeekModels = new ArrayList<>();
 
+    @Schema(description = "状态")
+    private DataState state;
+
+    public static PermissTimeSlot build(String id) {
+        PermissTimeSlot permissTimeSlot = new PermissTimeSlot();
+        permissTimeSlot.setId(id);
+        return permissTimeSlot;
+    }
 }

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

@@ -0,0 +1,123 @@
+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.PermissSettingModel;
+import com.zhongshu.card.client.model.devices.permiss.PermissSettingParam;
+import com.zhongshu.card.client.model.devices.permiss.PermissSettingSearch;
+import com.zhongshu.card.client.type.DataState;
+import com.zhongshu.card.server.core.dao.devices.PermissSettingDao;
+import com.zhongshu.card.server.core.dao.devices.PermissTimeSlotDao;
+import com.zhongshu.card.server.core.dao.org.OrganizationDao;
+import com.zhongshu.card.server.core.domain.devices.permiss.PermissSetting;
+import com.zhongshu.card.server.core.domain.devices.permiss.PermissTimeSlot;
+import com.zhongshu.card.server.core.domain.org.Organization;
+import com.zhongshu.card.server.core.service.base.SuperService;
+import com.zhongshu.card.server.core.util.BeanUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.ObjectUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.stereotype.Service;
+import org.springframework.util.Assert;
+
+/**
+ * 权限时间段管理
+ *
+ * @author TRX
+ * @date 2024/12/19
+ */
+@Slf4j
+@Service
+public class PermissSettingService extends SuperService {
+
+    @Autowired
+    private PermissTimeSlotDao permissTimeSlotDao;
+
+    @Autowired
+    private OrganizationDao organizationDao;
+
+    @Autowired
+    private PermissSettingDao permissSettingDao;
+
+    @Autowired
+    private PermissTimeSlotService permissTimeSlotService;
+
+    public ResultContent saveInfo(PermissSettingParam param) {
+        Assert.hasText(param.getProjectOid(), "projectOid不能为空");
+        if (StringUtils.isEmpty(param.getTimeSlotId())) {
+            return ResultContent.buildFail("所属时段不能为空");
+        }
+        PermissTimeSlot timeSlot = permissTimeSlotDao.findTopById(param.getTimeSlotId());
+        if (ObjectUtils.isEmpty(timeSlot)) {
+            return ResultContent.buildFail("所属时段不存在");
+        }
+
+        PermissSetting entity = null;
+        if (StringUtils.isNotEmpty(param.getId())) {
+            entity = permissSettingDao.findTopById(param.getId());
+            if (ObjectUtils.isEmpty(entity)) {
+                return ResultContent.buildFail(String.format(ResultMessage.DATA_NOT_EXIST, param.getId()));
+            }
+            initUpdateEntity(entity);
+        } else {
+            entity = new PermissSetting();
+            initEntityNoCheckOid(entity);
+        }
+
+        BeanUtils.copyProperties(param, entity);
+        entity.setTimeSlot(timeSlot);
+        permissSettingDao.save(entity);
+        return ResultContent.buildSuccess();
+    }
+
+    public ResultContent<Page<PermissSettingModel>> page(PermissSettingSearch param, Pageable pageable) {
+        String projectOid = param.getProjectOid();
+        Organization organization = organizationDao.findTopByOid(projectOid);
+        if (ObjectUtils.isEmpty(organization)) {
+            return ResultContent.buildFail("projectOid不存在");
+        }
+        Page<PermissSetting> page = permissSettingDao.page(pageable, param);
+        return ResultContent.buildSuccess(PageEntityUtil.concurrent2PageModel(page, this::toModel));
+    }
+
+    public ResultContent deleteInfo(String id) {
+        PermissSetting entity = permissSettingDao.findTopById(id);
+        if (ObjectUtils.isEmpty(entity)) {
+            return ResultContent.buildFail(String.format(ResultMessage.DATA_NOT_EXIST, id));
+        }
+        permissSettingDao.delete(entity);
+        return ResultContent.buildSuccess();
+    }
+
+    public ResultContent<PermissSettingModel> getDetailInfo(String id) {
+        PermissSetting entity = permissSettingDao.findTopById(id);
+        if (ObjectUtils.isEmpty(entity)) {
+            return ResultContent.buildFail(String.format(ResultMessage.DATA_NOT_EXIST, id));
+        }
+        return ResultContent.buildSuccess(toModel(entity));
+    }
+
+    public ResultContent changeState(String id, DataState state) {
+        PermissSetting entity = permissSettingDao.findTopById(id);
+        if (ObjectUtils.isEmpty(entity)) {
+            return ResultContent.buildFail(String.format(ResultMessage.DATA_NOT_EXIST, id));
+        }
+        entity.setState(state);
+        permissSettingDao.save(entity);
+        return ResultContent.buildSuccess();
+    }
+
+    private PermissSettingModel toModel(PermissSetting entity) {
+        PermissSettingModel model = new PermissSettingModel();
+        if (ObjectUtils.isNotEmpty(entity)) {
+            BeanUtils.copyProperties(entity, model);
+            model.setTimeSlot(permissTimeSlotService.toSimpleModel(entity.getTimeSlot()));
+        }
+        return model;
+    }
+
+}

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

@@ -6,6 +6,8 @@ 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.type.DataState;
 import com.zhongshu.card.client.type.device.TimeSlotType;
 import com.zhongshu.card.server.core.dao.devices.PermissTimeSlotDao;
 import com.zhongshu.card.server.core.dao.org.OrganizationDao;
@@ -43,7 +45,6 @@ public class PermissTimeSlotService extends SuperService {
         if (param.getType() == null) {
             param.setType(TimeSlotType.Week);
         }
-
         PermissTimeSlot entity = null;
         if (StringUtils.isNotEmpty(param.getId())) {
             entity = permissTimeSlotDao.findTopById(param.getId());
@@ -52,6 +53,9 @@ public class PermissTimeSlotService extends SuperService {
             }
             initUpdateEntity(entity);
         } else {
+            if (param.getState() == null) {
+                param.setState(DataState.Enable);
+            }
             entity = new PermissTimeSlot();
             initEntityNoCheckOid(entity);
         }
@@ -70,6 +74,16 @@ public class PermissTimeSlotService extends SuperService {
         return ResultContent.buildSuccess(PageEntityUtil.concurrent2PageModel(page, this::toModel));
     }
 
+    public ResultContent<Page<PermissTimeSlotSimpleModel>> pageSelect(PermissTimeSlotSearch param, Pageable pageable) {
+        String projectOid = param.getProjectOid();
+        Organization organization = organizationDao.findTopByOid(projectOid);
+        if (ObjectUtils.isEmpty(organization)) {
+            return ResultContent.buildFail("projectOid不存在");
+        }
+        Page<PermissTimeSlot> page = permissTimeSlotDao.page(pageable, param);
+        return ResultContent.buildSuccess(PageEntityUtil.concurrent2PageModel(page, this::toSimpleModel));
+    }
+
     public ResultContent deleteInfo(String id) {
         PermissTimeSlot entity = permissTimeSlotDao.findTopById(id);
         if (ObjectUtils.isEmpty(entity)) {
@@ -87,6 +101,16 @@ public class PermissTimeSlotService extends SuperService {
         return ResultContent.buildSuccess(toModel(entity));
     }
 
+    public ResultContent changeState(String id, DataState state) {
+        PermissTimeSlot entity = permissTimeSlotDao.findTopById(id);
+        if (ObjectUtils.isEmpty(entity)) {
+            return ResultContent.buildFail(String.format(ResultMessage.DATA_NOT_EXIST, id));
+        }
+        entity.setState(state);
+        permissTimeSlotDao.save(entity);
+        return ResultContent.buildSuccess();
+    }
+
     private PermissTimeSlotModel toModel(PermissTimeSlot entity) {
         PermissTimeSlotModel model = new PermissTimeSlotModel();
         if (ObjectUtils.isNotEmpty(entity)) {
@@ -94,4 +118,14 @@ public class PermissTimeSlotService extends SuperService {
         }
         return model;
     }
+
+    public PermissTimeSlotSimpleModel toSimpleModel(PermissTimeSlot entity) {
+        PermissTimeSlotSimpleModel model = null;
+        if (ObjectUtils.isNotEmpty(entity)) {
+            model = new PermissTimeSlotSimpleModel();
+            BeanUtils.copyProperties(entity, model);
+        }
+        return model;
+    }
+
 }