TRX 1 год назад
Родитель
Сommit
8fb5aa8132
25 измененных файлов с 835 добавлено и 0 удалено
  1. 18 0
      SecretKeyClient/src/main/java/com/zhongshu/secretKey/client/model/base/CodeParam.java
  2. 15 0
      SecretKeyClient/src/main/java/com/zhongshu/secretKey/client/model/base/IDParam.java
  3. 20 0
      SecretKeyClient/src/main/java/com/zhongshu/secretKey/client/model/base/IDsParam.java
  4. 20 0
      SecretKeyClient/src/main/java/com/zhongshu/secretKey/client/model/base/OidModel.java
  5. 18 0
      SecretKeyClient/src/main/java/com/zhongshu/secretKey/client/model/base/OidParam.java
  6. 22 0
      SecretKeyClient/src/main/java/com/zhongshu/secretKey/client/model/base/ProjectOidParam.java
  7. 14 0
      SecretKeyClient/src/main/java/com/zhongshu/secretKey/client/model/base/ReTokenParam.java
  8. 22 0
      SecretKeyClient/src/main/java/com/zhongshu/secretKey/client/model/base/SortParam.java
  9. 54 0
      SecretKeyClient/src/main/java/com/zhongshu/secretKey/client/model/base/SuperModel.java
  10. 53 0
      SecretKeyClient/src/main/java/com/zhongshu/secretKey/client/model/base/SuperParam.java
  11. 47 0
      SecretKeyClient/src/main/java/com/zhongshu/secretKey/client/model/base/SuperSearch.java
  12. 14 0
      SecretKeyClient/src/main/java/com/zhongshu/secretKey/client/model/base/TokenParam.java
  13. 20 0
      SecretKeyClient/src/main/java/com/zhongshu/secretKey/client/model/base/UserIdAndOidModel.java
  14. 14 0
      SecretKeyClient/src/main/java/com/zhongshu/secretKey/client/model/base/UserIdModel.java
  15. 22 0
      SecretKeyClient/src/main/java/com/zhongshu/secretKey/client/model/test/TestInfoModel.java
  16. 22 0
      SecretKeyClient/src/main/java/com/zhongshu/secretKey/client/model/test/TestInfoParam.java
  17. 25 0
      SecretKeyClient/src/main/java/com/zhongshu/secretKey/client/model/test/TestInfoSearch.java
  18. 93 0
      SecretKeyServer/src/main/java/com/zhongshu/secretKey/server/core/controller/test/TestInfoController.java
  19. 70 0
      SecretKeyServer/src/main/java/com/zhongshu/secretKey/server/core/dao/BaseImpl.java
  20. 18 0
      SecretKeyServer/src/main/java/com/zhongshu/secretKey/server/core/dao/test/TestInfoDao.java
  21. 17 0
      SecretKeyServer/src/main/java/com/zhongshu/secretKey/server/core/dao/test/extend/TestInfoDaoExtend.java
  22. 77 0
      SecretKeyServer/src/main/java/com/zhongshu/secretKey/server/core/dao/test/impl/TestInfoDaoImpl.java
  23. 31 0
      SecretKeyServer/src/main/java/com/zhongshu/secretKey/server/core/domain/test/TestInfo.java
  24. 14 0
      SecretKeyServer/src/main/java/com/zhongshu/secretKey/server/core/service/base/SuperService.java
  25. 95 0
      SecretKeyServer/src/main/java/com/zhongshu/secretKey/server/core/service/test/TestInfoService.java

+ 18 - 0
SecretKeyClient/src/main/java/com/zhongshu/secretKey/client/model/base/CodeParam.java

@@ -0,0 +1,18 @@
+package com.zhongshu.secretKey.client.model.base;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author TRX
+ * @date 2024/10/14
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class CodeParam extends ProjectOidParam {
+
+    private String code;
+
+}

+ 15 - 0
SecretKeyClient/src/main/java/com/zhongshu/secretKey/client/model/base/IDParam.java

@@ -0,0 +1,15 @@
+package com.zhongshu.secretKey.client.model.base;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author TRX
+ * @date 2024/5/26
+ */
+@Data
+public class IDParam implements Serializable {
+
+    private String id;
+}

+ 20 - 0
SecretKeyClient/src/main/java/com/zhongshu/secretKey/client/model/base/IDsParam.java

@@ -0,0 +1,20 @@
+package com.zhongshu.secretKey.client.model.base;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotEmpty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author TRX
+ * @date 2024/6/13
+ */
+@Data
+public class IDsParam {
+
+    @NotEmpty
+    @Schema(description = "id集合")
+    private List<String> ids;
+
+}

+ 20 - 0
SecretKeyClient/src/main/java/com/zhongshu/secretKey/client/model/base/OidModel.java

@@ -0,0 +1,20 @@
+package com.zhongshu.secretKey.client.model.base;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotEmpty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author TRX
+ * @date 2024/6/3
+ */
+@Data
+public class OidModel implements Serializable {
+
+    @Schema(description = "机构oid、项目oid")
+    @NotEmpty
+    private String oid;
+
+}

+ 18 - 0
SecretKeyClient/src/main/java/com/zhongshu/secretKey/client/model/base/OidParam.java

@@ -0,0 +1,18 @@
+package com.zhongshu.secretKey.client.model.base;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author TRX
+ * @date 2024/11/17
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class OidParam {
+
+    private String oid;
+
+}

+ 22 - 0
SecretKeyClient/src/main/java/com/zhongshu/secretKey/client/model/base/ProjectOidParam.java

@@ -0,0 +1,22 @@
+package com.zhongshu.secretKey.client.model.base;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 项目oid参数模型
+ *
+ * @author TRX
+ * @date 2024/9/24
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class ProjectOidParam {
+
+    @Schema(description = "项目oid")
+    private String projectOid;
+
+}

+ 14 - 0
SecretKeyClient/src/main/java/com/zhongshu/secretKey/client/model/base/ReTokenParam.java

@@ -0,0 +1,14 @@
+package com.zhongshu.secretKey.client.model.base;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+/**
+ * @author TRX
+ * @date 2024/6/5
+ */
+@Data
+public class ReTokenParam {
+    @Schema(description = "刷新token")
+    private String refreshToken;
+}

+ 22 - 0
SecretKeyClient/src/main/java/com/zhongshu/secretKey/client/model/base/SortParam.java

@@ -0,0 +1,22 @@
+package com.zhongshu.secretKey.client.model.base;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.HashMap;
+
+/**
+ * @author TRX
+ * @date 2024/11/22
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class SortParam {
+
+    @Schema(description = "排序数据 ,如: {'id1': 1, 'id2': 3, 'id3': 2}")
+    private HashMap<String, Long> data = new HashMap<>();
+
+}

+ 54 - 0
SecretKeyClient/src/main/java/com/zhongshu/secretKey/client/model/base/SuperModel.java

@@ -0,0 +1,54 @@
+package com.zhongshu.secretKey.client.model.base;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * @author TRX
+ * @date 2024/5/26
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class SuperModel implements Serializable {
+
+    @Schema(description = "数据ID")
+    private String id;
+
+    @Schema(description = "所属机构ID")
+    private String oid;
+
+    @Schema(description = "排序", hidden = true)
+    private Long sort = 0l;
+
+    @Schema(description = "备注")
+    private String remark = "";
+
+    @Schema(description = "所属项目oid")
+    private String projectOid;
+//
+//    @Schema(description = "数据主题的oid")
+//    private String aboutOid;
+//
+//    @Schema(description = "数据主题管理的oid机构类型")
+//    private AuthType aboutAuthType;
+
+    @Schema(description = "创建时间")
+    private Long createTime;
+
+    @Schema(description = "添加用户名称")
+    private String createUserName;
+
+    @Schema(description = "最后编辑时间")
+    private Long updateTime;
+
+    @Schema(description = "添加用户名称")
+    private String updateUserName;
+
+    @Schema(description = "添加用户电话", hidden = true)
+    private String updatePhone;
+}

+ 53 - 0
SecretKeyClient/src/main/java/com/zhongshu/secretKey/client/model/base/SuperParam.java

@@ -0,0 +1,53 @@
+package com.zhongshu.secretKey.client.model.base;
+
+import com.github.microservice.auth.security.type.AuthType;
+import io.swagger.v3.oas.annotations.Hidden;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 添加/编辑的父类
+ *
+ * @author TRX
+ * @date 2024/5/26
+ */
+@Data
+public class SuperParam implements Serializable {
+
+    @Schema(description = "数据ID", example = "")
+    private String id = null;
+
+    @Schema(description = "所属机构ID")
+    private String oid;
+
+    @Schema(description = "所属项目oid", hidden = true)
+    private String projectOid;
+
+    @Schema(description = "数据主题的oid", hidden = true)
+    @Hidden
+    private String aboutOid;
+
+    @Schema(description = "数据主题管理的oid机构类型", hidden = true)
+    @Hidden
+    private AuthType aboutAuthType;
+
+    @Schema(description = "排序")
+    private Long sort = 1l;
+
+    @Schema(description = "备注")
+    private String remark;
+
+    @Schema(description = "创建用户ID", hidden = true)
+    @Hidden
+    private String createUserId;
+
+    @Schema(description = "添加用户名称", hidden = true)
+    @Hidden
+    private String createUserName;
+
+    @Schema(description = "添加用户电话", hidden = true)
+    @Hidden
+    private String createPhone;
+}

+ 47 - 0
SecretKeyClient/src/main/java/com/zhongshu/secretKey/client/model/base/SuperSearch.java

@@ -0,0 +1,47 @@
+package com.zhongshu.secretKey.client.model.base;
+
+import com.github.microservice.auth.security.type.AuthType;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import org.springframework.data.domain.Sort;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author TRX
+ * @date 2024/5/26
+ */
+@Data
+public class SuperSearch implements Serializable {
+
+    @Schema(description = "数据ID", hidden = true)
+    private String id;
+
+    @Schema(description = "所属机构ID")
+    private String oid;
+
+    @Schema(description = "所属项目oid")
+    private String projectOid;
+
+    @Schema(description = "数据主题的oid", hidden = true)
+    private String aboutOid;
+
+    @Schema(description = "数据主题管理的oid机构类型", hidden = true)
+    private AuthType aboutAuthType;
+
+    @Schema(description = "搜索时间范围")
+    private List<Long> times;
+
+    @Schema(description = "开始时间", hidden = true)
+    private Long startTime;
+
+    @Schema(description = "结束时间", hidden = true)
+    private Long endTime;
+
+    @Schema(description = "自定义排序", hidden = true)
+    private Sort orderSort;
+
+    @Schema(description = "是否按照序号排序", hidden = true)
+    private Boolean isSortDesc;
+}

+ 14 - 0
SecretKeyClient/src/main/java/com/zhongshu/secretKey/client/model/base/TokenParam.java

@@ -0,0 +1,14 @@
+package com.zhongshu.secretKey.client.model.base;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+/**
+ * @author TRX
+ * @date 2024/6/5
+ */
+@Data
+public class TokenParam {
+    @Schema(description = "token")
+    private String token;
+}

+ 20 - 0
SecretKeyClient/src/main/java/com/zhongshu/secretKey/client/model/base/UserIdAndOidModel.java

@@ -0,0 +1,20 @@
+package com.zhongshu.secretKey.client.model.base;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author TRX
+ * @date 2024/10/12
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class UserIdAndOidModel extends ProjectOidParam {
+
+    @Schema(description = "用户userId", example = "")
+    private String userId;
+
+}

+ 14 - 0
SecretKeyClient/src/main/java/com/zhongshu/secretKey/client/model/base/UserIdModel.java

@@ -0,0 +1,14 @@
+package com.zhongshu.secretKey.client.model.base;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+/**
+ * @author TRX
+ * @date 2024/6/5
+ */
+@Data
+public class UserIdModel {
+    @Schema(description = "用户userId", example = "")
+    private String userId;
+}

+ 22 - 0
SecretKeyClient/src/main/java/com/zhongshu/secretKey/client/model/test/TestInfoModel.java

@@ -0,0 +1,22 @@
+package com.zhongshu.secretKey.client.model.test;
+
+import com.zhongshu.secretKey.client.model.base.SuperModel;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author TRX
+ * @date 2024/12/24
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class TestInfoModel extends SuperModel {
+    @Schema(description = "名称")
+    private String name;
+
+    @Schema(description = "编码")
+    private String code;
+}

+ 22 - 0
SecretKeyClient/src/main/java/com/zhongshu/secretKey/client/model/test/TestInfoParam.java

@@ -0,0 +1,22 @@
+package com.zhongshu.secretKey.client.model.test;
+
+import com.zhongshu.secretKey.client.model.base.SuperParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author TRX
+ * @date 2024/12/24
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class TestInfoParam extends SuperParam {
+    @Schema(description = "名称")
+    private String name;
+
+    @Schema(description = "编码")
+    private String code;
+}

+ 25 - 0
SecretKeyClient/src/main/java/com/zhongshu/secretKey/client/model/test/TestInfoSearch.java

@@ -0,0 +1,25 @@
+package com.zhongshu.secretKey.client.model.test;
+
+import com.zhongshu.secretKey.client.model.base.SuperSearch;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author TRX
+ * @date 2024/12/24
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class TestInfoSearch extends SuperSearch {
+    @Schema(description = "名称")
+    private String name;
+
+    @Schema(description = "编码")
+    private String code;
+
+    private String keyWord;
+
+}

+ 93 - 0
SecretKeyServer/src/main/java/com/zhongshu/secretKey/server/core/controller/test/TestInfoController.java

@@ -0,0 +1,93 @@
+package com.zhongshu.secretKey.server.core.controller.test;
+
+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.secretKey.client.model.test.TestInfoModel;
+import com.zhongshu.secretKey.client.model.test.TestInfoParam;
+import com.zhongshu.secretKey.client.model.test.TestInfoSearch;
+import com.zhongshu.secretKey.client.types.DataState;
+import com.zhongshu.secretKey.server.core.service.test.TestInfoService;
+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.domain.Sort;
+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("/test")
+@Tag(name = "测试接口-测试管理")
+public class TestInfoController {
+
+    @Autowired
+    private TestInfoService testInfoService;
+
+    @ResourceAuth(value = "user", type = AuthType.User)
+    @Operation(summary = "数据详情", description = "数据详情")
+    @RequestMapping(value = "getDetailInfo", method = {RequestMethod.POST})
+    public ResultContent<TestInfoModel> getDetailInfo(@RequestBody IDParam param) {
+        return this.testInfoService.getDetailInfo(param.getId());
+    }
+
+    @ResourceAuth(value = "user", type = AuthType.User)
+    @Operation(summary = "添加-编辑数据", description = "添加-编辑数据")
+    @RequestMapping(value = "saveInfo", method = {RequestMethod.POST})
+    public ResultContent saveInfo(@RequestBody TestInfoParam param) {
+        return this.testInfoService.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.testInfoService.deleteInfo(param.getId());
+    }
+
+    @ResourceAuth(value = "user", type = AuthType.User)
+    @Operation(summary = "数据列表-分页查询", description = "数据列表-分页查询")
+    @RequestMapping(value = {"page"}, method = {RequestMethod.POST})
+    public ResultContent<Page<TestInfoModel>> page(@Parameter(hidden = true) @PageableDefault(page = 0, size = 10) Pageable pageable, @Parameter(required = false) TestInfoSearch param) {
+        Assert.hasText(param.getProjectOid(), "projectOid不能为空");
+        Sort sort = Sort.by(Sort.Order.desc("dictType"), Sort.Order.asc("sort"));
+        param.setOrderSort(sort);
+        return testInfoService.page(param, pageable);
+    }
+
+
+    @ResourceAuth(value = "user", type = AuthType.User)
+    @Operation(summary = "数据列表-分页查询(供选择)", description = "数据列表-分页查询")
+    @RequestMapping(value = {"pageForSelect"}, method = {RequestMethod.POST})
+    public ResultContent<Page<TestInfoModel>> pageForSelect(@Parameter(hidden = true) @PageableDefault(page = 0, size = 10) Pageable pageable, @Parameter(required = false) TestInfoSearch param) {
+        Assert.hasText(param.getProjectOid(), "projectOid不能为空");
+        return testInfoService.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.testInfoService.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.testInfoService.changeState(param.getId(), DataState.Disable);
+    }
+}

+ 70 - 0
SecretKeyServer/src/main/java/com/zhongshu/secretKey/server/core/dao/BaseImpl.java

@@ -0,0 +1,70 @@
+package com.zhongshu.secretKey.server.core.dao;
+
+import com.zhongshu.secretKey.client.model.base.SuperSearch;
+import com.zhongshu.secretKey.server.core.utils.CommonUtil;
+import org.apache.commons.lang3.ObjectUtils;
+import org.springframework.data.domain.Sort;
+import org.springframework.data.mongodb.core.query.Criteria;
+
+/**
+ * @author TRX
+ * @date 2024/5/31
+ */
+public abstract class BaseImpl {
+
+    /**
+     * 通用创建搜索条件
+     *
+     * @param param
+     * @return
+     */
+    public Criteria buildCriteria(SuperSearch param) {
+        Criteria criteria = new Criteria();
+        // 机构ID
+        if (ObjectUtils.isNotEmpty(param.getOid())) {
+            criteria.and("oid").is(param.getOid());
+        }
+        criteria.and("isDelete").is(Boolean.FALSE);
+        return criteria;
+    }
+
+    /**
+     * 通用搜索条件 不包含oid
+     *
+     * @param param
+     * @return
+     */
+    public Criteria buildCriteriaNotOid(SuperSearch param) {
+        Criteria criteria = new Criteria();
+        criteria.and("isDelete").is(Boolean.FALSE);
+        // 时间
+        if (!CommonUtil.longIsEmpty(param.getStartTime()) && !CommonUtil.longIsEmpty(param.getEndTime())) {
+            criteria.and("createTime").gte(param.getStartTime()).and("createTime").lte(param.getEndTime());
+        }
+        return criteria;
+    }
+
+    /**
+     * 排序
+     *
+     * @param param
+     * @return
+     */
+    public Sort buildSort(SuperSearch param) {
+        Sort sort = param.getOrderSort();
+        if (sort == null && param.getIsSortDesc() != null) {
+            if (param.getIsSortDesc()) {
+                // 倒序
+                sort = Sort.by(Sort.Order.desc("sort"), Sort.Order.desc("createTime"));
+            } else {
+                // 升序
+                sort = Sort.by(Sort.Order.asc("sort"), Sort.Order.desc("createTime"));
+            }
+        }
+        if (ObjectUtils.isEmpty(sort)) {
+            sort = Sort.by(Sort.Order.desc("createTime"));
+        }
+        return sort;
+    }
+
+}

+ 18 - 0
SecretKeyServer/src/main/java/com/zhongshu/secretKey/server/core/dao/test/TestInfoDao.java

@@ -0,0 +1,18 @@
+package com.zhongshu.secretKey.server.core.dao.test;
+
+import com.github.microservice.components.data.mongo.mongo.dao.MongoDao;
+import com.zhongshu.secretKey.server.core.dao.test.extend.TestInfoDaoExtend;
+import com.zhongshu.secretKey.server.core.domain.test.TestInfo;
+
+import java.util.List;
+
+/**
+ * @author TRX
+ * @date 2024/3/21
+ */
+public interface TestInfoDao extends MongoDao<TestInfo>, TestInfoDaoExtend {
+
+    List<TestInfo> findByIdIn(List<String> ids);
+
+    TestInfo findTopById(String id);
+}

+ 17 - 0
SecretKeyServer/src/main/java/com/zhongshu/secretKey/server/core/dao/test/extend/TestInfoDaoExtend.java

@@ -0,0 +1,17 @@
+package com.zhongshu.secretKey.server.core.dao.test.extend;
+
+import com.zhongshu.secretKey.client.model.test.TestInfoSearch;
+import com.zhongshu.secretKey.server.core.domain.test.TestInfo;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+
+/**
+ * @Author TRX
+ * @CreateDate: 2023/7/7
+ * @Version: 1.0
+ */
+public interface TestInfoDaoExtend {
+
+    Page<TestInfo> page(Pageable pageable, TestInfoSearch param);
+
+}

+ 77 - 0
SecretKeyServer/src/main/java/com/zhongshu/secretKey/server/core/dao/test/impl/TestInfoDaoImpl.java

@@ -0,0 +1,77 @@
+package com.zhongshu.secretKey.server.core.dao.test.impl;
+
+import com.github.microservice.components.data.mongo.mongo.helper.DBHelper;
+import com.zhongshu.secretKey.client.model.test.TestInfoSearch;
+import com.zhongshu.secretKey.server.core.dao.BaseImpl;
+import com.zhongshu.secretKey.server.core.dao.test.extend.TestInfoDaoExtend;
+import com.zhongshu.secretKey.server.core.domain.test.TestInfo;
+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 TestInfoDaoImpl extends BaseImpl implements TestInfoDaoExtend {
+
+    @Autowired
+    private MongoTemplate mongoTemplate;
+
+    @Autowired
+    private DBHelper dbHelper;
+
+    @Override
+    public Page<TestInfo> page(Pageable pageable, TestInfoSearch param) {
+        Criteria criteria = buildFilterCriteria(param);
+
+        Sort sort = buildSort(param);
+        Query query = Query.query(criteria);
+        query.with(sort);
+        return dbHelper.pages(query, pageable, TestInfo.class);
+    }
+
+    private Criteria buildFilterCriteria(TestInfoSearch param) {
+        Criteria criteria = buildCriteriaNotOid(param);
+
+        if (StringUtils.isNotEmpty(param.getProjectOid())) {
+            criteria.and("projectOid").is(param.getProjectOid());
+        }
+
+        // 模糊搜索
+        List<Criteria> criterias = new ArrayList<>();
+        // 用户名称
+        if (StringUtils.isNotEmpty(param.getName())) {
+            Pattern pattern = Pattern.compile("^.*" + param.getName() + ".*$");
+            criterias.add(Criteria.where("name").is(pattern));
+        }
+        if (StringUtils.isNotEmpty(param.getCode())) {
+            Pattern pattern = Pattern.compile("^.*" + param.getCode() + ".*$");
+            criterias.add(Criteria.where("code").is(pattern));
+        }
+        if (!CollectionUtils.isEmpty(criterias)) {
+            criteria.andOperator(criterias.toArray(new Criteria[]{}));
+        }
+
+        if (StringUtils.isNotEmpty(param.getKeyWord())) {
+            Pattern pattern = Pattern.compile("^.*" + param.getKeyWord() + ".*$");
+            criteria.orOperator(
+                    Criteria.where("name").regex(pattern),
+                    Criteria.where("code").regex(pattern)
+            );
+        }
+        return criteria;
+    }
+
+}

+ 31 - 0
SecretKeyServer/src/main/java/com/zhongshu/secretKey/server/core/domain/test/TestInfo.java

@@ -0,0 +1,31 @@
+package com.zhongshu.secretKey.server.core.domain.test;
+
+import com.zhongshu.secretKey.client.types.DataState;
+import com.zhongshu.secretKey.server.core.domain.base.SuperMain;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.checkerframework.common.aliasing.qual.NonLeaked;
+import org.springframework.data.mongodb.core.mapping.Document;
+
+/**
+ * @author TRX
+ * @date 2024/12/24
+ */
+@Data
+@Document
+@AllArgsConstructor
+@NoArgsConstructor
+@NonLeaked
+public class TestInfo extends SuperMain {
+
+    @Schema(description = "名称")
+    private String name;
+
+    @Schema(description = "编码")
+    private String code;
+
+    @Schema(description = "状态")
+    private DataState state;
+}

+ 14 - 0
SecretKeyServer/src/main/java/com/zhongshu/secretKey/server/core/service/base/SuperService.java

@@ -178,4 +178,18 @@ public abstract class SuperService {
         return CommonUtil.initLog(request, getCurrentUserId());
     }
 
+    /**
+     * 编辑 entity 记录修改人的信息
+     *
+     * @param entity
+     */
+    public void initUpdateEntity(SuperMain entity) {
+        if (entity != null) {
+            try {
+
+            } catch (Exception e) {
+                log.error("initUpdateEntity {}", e.getMessage());
+            }
+        }
+    }
 }

+ 95 - 0
SecretKeyServer/src/main/java/com/zhongshu/secretKey/server/core/service/test/TestInfoService.java

@@ -0,0 +1,95 @@
+package com.zhongshu.secretKey.server.core.service.test;
+
+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.org.projectDict.ProjectDictModel;
+import com.zhongshu.card.client.model.org.projectDict.ProjectDictParam;
+import com.zhongshu.secretKey.client.model.test.TestInfoModel;
+import com.zhongshu.secretKey.client.model.test.TestInfoParam;
+import com.zhongshu.secretKey.client.model.test.TestInfoSearch;
+import com.zhongshu.secretKey.client.types.DataState;
+import com.zhongshu.secretKey.server.core.dao.test.TestInfoDao;
+import com.zhongshu.secretKey.server.core.domain.test.TestInfo;
+import com.zhongshu.secretKey.server.core.service.base.SuperService;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.ObjectUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.stereotype.Service;
+
+/**
+ * 测试管理
+ *
+ * @author TRX
+ * @date 2024/12/19
+ */
+@Slf4j
+@Service
+public class TestInfoService extends SuperService {
+
+    @Autowired
+    private TestInfoDao testInfoDao;
+
+    public ResultContent saveInfo(TestInfoParam param) {
+        TestInfo entity = null;
+
+        if (StringUtils.isNotEmpty(param.getId())) {
+            entity = testInfoDao.findTopById(param.getId());
+            if (ObjectUtils.isEmpty(entity)) {
+                return ResultContent.buildFail(String.format(ResultMessage.DATA_NOT_EXIST, param.getId()));
+            }
+            initUpdateEntity(entity);
+        } else {
+            entity = new TestInfo();
+            initEntityNoCheckOid(entity);
+        }
+        BeanUtils.copyProperties(param, entity);
+        testInfoDao.save(entity);
+        return ResultContent.buildSuccess();
+    }
+
+    public ResultContent<Page<TestInfoModel>> page(TestInfoSearch param, Pageable pageable) {
+        Page<TestInfo> page = testInfoDao.page(pageable, param);
+        return ResultContent.buildSuccess(PageEntityUtil.concurrent2PageModel(page, this::toModel));
+    }
+
+    public ResultContent deleteInfo(String id) {
+        TestInfo entity = testInfoDao.findTopById(id);
+        if (ObjectUtils.isEmpty(entity)) {
+            return ResultContent.buildFail(String.format(ResultMessage.DATA_NOT_EXIST, id));
+        }
+        testInfoDao.delete(entity);
+        return ResultContent.buildSuccess();
+    }
+
+    public ResultContent<TestInfoModel> getDetailInfo(String id) {
+        TestInfo entity = testInfoDao.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) {
+        TestInfo entity = testInfoDao.findTopById(id);
+        if (ObjectUtils.isEmpty(entity)) {
+            return ResultContent.buildFail(String.format(ResultMessage.DATA_NOT_EXIST, id));
+        }
+        entity.setState(state);
+        testInfoDao.save(entity);
+        return ResultContent.buildSuccess();
+    }
+
+    private ProjectDictModel toModel(TestInfo entity) {
+        ProjectDictModel model = new ProjectDictModel();
+        if (ObjectUtils.isNotEmpty(entity)) {
+            BeanUtils.copyProperties(entity, model);
+        }
+        return model;
+    }
+
+}