Browse Source

标签字典

wujiefeng 1 năm trước cách đây
mục cha
commit
b2b8888317
15 tập tin đã thay đổi với 332 bổ sung16 xóa
  1. 46 0
      FullCardClient/src/main/java/com/zhongshu/card/client/model/dictionary/DictionaryItemModel.java
  2. 14 0
      FullCardClient/src/main/java/com/zhongshu/card/client/model/dictionary/DictionaryItemQueryParam.java
  3. 39 0
      FullCardClient/src/main/java/com/zhongshu/card/client/model/dictionary/DictionaryModel.java
  4. 18 0
      FullCardClient/src/main/java/com/zhongshu/card/client/model/dictionary/DictionaryQueryParam.java
  5. 19 3
      FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/dictionary/DictionaryController.java
  6. 2 1
      FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/dictionary/DictionaryItemDao.java
  7. 8 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/dictionary/extend/DictionaryDaoExtend.java
  8. 0 4
      FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/dictionary/extend/DictionaryItemDaoEetend.java
  9. 11 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/dictionary/extend/DictionaryItemDaoExtend.java
  10. 39 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/dictionary/impl/DictionaryDaoImpl.java
  11. 36 2
      FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/dictionary/impl/DictionaryItemDaoImpl.java
  12. 1 1
      FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/dictionary/Dictionary.java
  13. 3 1
      FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/dictionary/DictionaryItem.java
  14. 45 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/model/dictionary/DItemChildrenResult.java
  15. 51 4
      FullCardServer/src/main/java/com/zhongshu/card/server/core/service/dictionary/DictionaryService.java

+ 46 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/dictionary/DictionaryItemModel.java

@@ -0,0 +1,46 @@
+package com.zhongshu.card.client.model.dictionary;
+
+import com.zhongshu.card.client.type.DictionaryType;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import org.springframework.stereotype.Indexed;
+
+import java.util.Dictionary;
+
+@Data
+public class DictionaryItemModel {
+
+    private String id;
+
+    private Long createTime;
+
+    private Long updateTime;
+
+    //字典id
+    @Schema(description = "字典id")
+    private String dictionaryId;
+
+    //父级id
+    @Schema(description = "父级id")
+    private String parentId;
+
+    //唯一值
+    @Schema(description = "项编码")
+    private String key;
+
+    //字典项
+    @Schema(description = "项名称")
+    private String name;
+
+    //类型
+    @Schema(description = "项类型")
+    private DictionaryType type;
+
+    //排序
+    @Schema(description = "排序")
+    private Integer sort;
+
+    //禁用状态
+    @Schema(description = "状态")
+    private boolean disable;
+}

+ 14 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/dictionary/DictionaryItemQueryParam.java

@@ -0,0 +1,14 @@
+package com.zhongshu.card.client.model.dictionary;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Data
+public class DictionaryItemQueryParam {
+
+    @Schema(name = "name", description = "字典编码/名称")
+    private String name;
+
+    @Schema(name = "dictionaryId", description = "字典id")
+    private String dictionaryId;
+}

+ 39 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/dictionary/DictionaryModel.java

@@ -0,0 +1,39 @@
+package com.zhongshu.card.client.model.dictionary;
+
+import com.zhongshu.card.client.type.DictionaryType;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import org.springframework.stereotype.Indexed;
+
+@Data
+public class DictionaryModel {
+
+    private String id;
+
+    private Long createTime;
+
+    private Long updateTime;
+
+    //项目id
+    @Schema(description = "项目id")
+    private String projectId;
+
+    //字典类型
+    @Schema(description = "字典编码")
+    private String key;
+
+    //名称
+    @Schema(description = "字典名称")
+    private String name;
+
+    //描述
+    @Schema(description = "描述")
+    private String description;
+
+    @Schema(description = "类型")
+    private DictionaryType type;
+
+    //启动/禁用
+    @Schema(description = "状态")
+    private boolean disabled;
+}

+ 18 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/dictionary/DictionaryQueryParam.java

@@ -0,0 +1,18 @@
+package com.zhongshu.card.client.model.dictionary;
+
+import com.zhongshu.card.client.type.DictionaryType;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Data
+public class DictionaryQueryParam {
+
+    @Schema(name = "projectId", description = "项目id")
+    private String projectId;
+
+    @Schema(name = "name", description = "字典编码/名称")
+    private String name;
+
+    @Schema(name = "type", description = "字典类型")
+    private DictionaryType type;
+}

+ 19 - 3
FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/dictionary/DictionaryController.java

@@ -1,14 +1,16 @@
 package com.zhongshu.card.server.core.controller.dictionary;
 
 import com.github.microservice.net.ResultContent;
-import com.zhongshu.card.client.model.dictionary.AddDictionaryItemParam;
-import com.zhongshu.card.client.model.dictionary.AddDictionaryParam;
-import com.zhongshu.card.client.model.dictionary.UpdateDictionaryParam;
+import com.zhongshu.card.client.model.dictionary.*;
+import com.zhongshu.card.client.model.pay.PeriodQueryModel;
 import com.zhongshu.card.client.model.pay.RechargeParam;
 import com.zhongshu.card.server.core.service.dictionary.DictionaryService;
 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.Pageable;
+import org.springframework.data.web.PageableDefault;
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
@@ -39,6 +41,13 @@ public class DictionaryController {
         return dictionaryService.deleteDictionary(id);
     }
 
+    @Operation(summary = "分页查询字典", description = "分页查询字典")
+    @RequestMapping(value = "pageDictionary", method = RequestMethod.POST)
+    public Object page(@Parameter(hidden = true) @PageableDefault(page = 0, size = 10)Pageable pageable,
+                       @Parameter(required = true) DictionaryQueryParam param){
+        return dictionaryService.page(pageable, param);
+    }
+
     @Operation(summary = "添加项", description = "添加项")
     @RequestMapping(value = "addItem", method = RequestMethod.POST)
     public ResultContent addItem(@RequestBody AddDictionaryItemParam param){
@@ -56,4 +65,11 @@ public class DictionaryController {
     public ResultContent deleteItem(@RequestParam("id") String id){
         return dictionaryService.deleteItem(id);
     }
+
+    @Operation(summary = "分页查询项", description = "分页查询项")
+    @RequestMapping(value = "pageItem", method = RequestMethod.POST)
+    public Object pageItem(@Parameter(hidden = true) @PageableDefault(page = 0, size = 10)Pageable pageable,
+                           @Parameter(required = true) DictionaryItemQueryParam param){
+        return dictionaryService.pageItem(pageable, param);
+    }
 }

+ 2 - 1
FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/dictionary/DictionaryItemDao.java

@@ -2,9 +2,10 @@ package com.zhongshu.card.server.core.dao.dictionary;
 
 import com.github.microservice.components.data.mongo.mongo.dao.MongoDao;
 import com.zhongshu.card.server.core.dao.dictionary.extend.DictionaryDaoExtend;
+import com.zhongshu.card.server.core.dao.dictionary.extend.DictionaryItemDaoExtend;
 import com.zhongshu.card.server.core.domain.dictionary.DictionaryItem;
 
-public interface DictionaryItemDao extends MongoDao<DictionaryItem>, DictionaryDaoExtend {
+public interface DictionaryItemDao extends MongoDao<DictionaryItem>, DictionaryItemDaoExtend {
 
     DictionaryItem findTopById(String id);
 

+ 8 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/dictionary/extend/DictionaryDaoExtend.java

@@ -1,4 +1,12 @@
 package com.zhongshu.card.server.core.dao.dictionary.extend;
 
+import com.zhongshu.card.client.model.dictionary.DictionaryQueryParam;
+import com.zhongshu.card.client.type.DictionaryType;
+import com.zhongshu.card.server.core.domain.dictionary.Dictionary;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+
 public interface DictionaryDaoExtend {
+
+    Page<Dictionary> page(Pageable pageable, String projectId, String name, DictionaryType type);
 }

+ 0 - 4
FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/dictionary/extend/DictionaryItemDaoEetend.java

@@ -1,4 +0,0 @@
-package com.zhongshu.card.server.core.dao.dictionary.extend;
-
-public interface DictionaryItemDaoEetend {
-}

+ 11 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/dictionary/extend/DictionaryItemDaoExtend.java

@@ -0,0 +1,11 @@
+package com.zhongshu.card.server.core.dao.dictionary.extend;
+
+import com.zhongshu.card.client.model.dictionary.DictionaryItemModel;
+import com.zhongshu.card.server.core.domain.dictionary.DictionaryItem;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+
+public interface DictionaryItemDaoExtend {
+
+    Page<DictionaryItem> page(Pageable pageable, String dictionaryId, String name);
+}

+ 39 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/dictionary/impl/DictionaryDaoImpl.java

@@ -1,6 +1,45 @@
 package com.zhongshu.card.server.core.dao.dictionary.impl;
 
+import com.github.microservice.components.data.mongo.mongo.helper.DBHelper;
+import com.zhongshu.card.client.model.dictionary.DictionaryQueryParam;
+import com.zhongshu.card.client.type.DictionaryType;
 import com.zhongshu.card.server.core.dao.dictionary.extend.DictionaryDaoExtend;
+import com.zhongshu.card.server.core.domain.dictionary.Dictionary;
+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.query.Criteria;
+import org.springframework.data.mongodb.core.query.Query;
+
+import java.util.regex.Pattern;
 
 public class DictionaryDaoImpl implements DictionaryDaoExtend {
+
+    @Autowired
+    DBHelper dbHelper;
+
+    @Override
+    public Page<Dictionary> page(Pageable pageable, String projectId, String name, DictionaryType type) {
+        Criteria criteria = new Criteria();
+
+        if (StringUtils.isNotBlank(projectId)) {
+            criteria.and("projectId").is(projectId);
+        }
+
+        if (StringUtils.isNotBlank(name)) {
+            Pattern pattern = Pattern.compile("^.*" + name + ".*$");
+            criteria.orOperator(Criteria.where("name").regex(pattern), Criteria.where("key").regex(pattern));
+        }
+
+        if (type != null) {
+            criteria.and("type").is(type);
+        }
+        Query query = Query.query(criteria);
+
+        query.with(Sort.by(Sort.Order.asc("sort"), Sort.Order.desc("createTime")));
+
+        return dbHelper.pages(query, pageable, Dictionary.class);
+    }
 }

+ 36 - 2
FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/dictionary/impl/DictionaryItemDaoImpl.java

@@ -1,6 +1,40 @@
 package com.zhongshu.card.server.core.dao.dictionary.impl;
 
-import com.zhongshu.card.server.core.dao.dictionary.extend.DictionaryItemDaoEetend;
+import com.github.microservice.components.data.mongo.mongo.helper.DBHelper;
+import com.zhongshu.card.server.core.dao.dictionary.extend.DictionaryItemDaoExtend;
+import com.zhongshu.card.server.core.domain.dictionary.DictionaryItem;
+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.query.Criteria;
+import org.springframework.data.mongodb.core.query.Query;
 
-public class DictionaryItemDaoImpl implements DictionaryItemDaoEetend {
+import javax.imageio.metadata.IIOMetadataFormat;
+import java.util.regex.Pattern;
+
+public class DictionaryItemDaoImpl implements DictionaryItemDaoExtend {
+
+    @Autowired
+    DBHelper dbHelper;
+
+    @Override
+    public Page<DictionaryItem> page(Pageable pageable, String dictionaryId, String name) {
+        Criteria criteria = new Criteria();
+
+        if (StringUtils.isNotBlank(dictionaryId)) {
+            criteria.and("dictionary._id").is(dictionaryId);
+        }
+
+        if (StringUtils.isNotBlank(name)) {
+            Pattern pattern = Pattern.compile("^.*" + name + ".*$");
+            criteria.orOperator(Criteria.where("name").regex(pattern), Criteria.where("key").regex(pattern));
+        }
+
+        Query query = Query.query(criteria);
+        query.with(Sort.by(Sort.Order.asc("sort"), Sort.Order.desc("createTime")));
+
+        return dbHelper.pages(query, pageable, DictionaryItem.class);
+    }
 }

+ 1 - 1
FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/dictionary/Dictionary.java

@@ -19,7 +19,7 @@ import org.springframework.stereotype.Controller;
 @AllArgsConstructor
 @NoArgsConstructor
 @CompoundIndexes(
-        @CompoundIndex(name = "projectId_key", def = "{'projectId' : 1, 'key' : 1}")
+        @CompoundIndex(name = "projectId_key", def = "{'projectId' : 1, 'key' : 1}", unique = true)
 )
 public class Dictionary extends SuperEntity {
 

+ 3 - 1
FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/dictionary/DictionaryItem.java

@@ -17,10 +17,12 @@ import org.springframework.data.mongodb.core.mapping.Document;
 @AllArgsConstructor
 @NoArgsConstructor
 @CompoundIndexes(
-        @CompoundIndex(name = "dictionaryId_key", def = "{'dictionary._id' : 1, 'path' : 1}")
+        @CompoundIndex(name = "dictionary_key", def = "{'dictionary' : 1, 'key' : 1}", unique = true)
 )
 public class DictionaryItem extends SuperEntity {
 
+    private String idString;
+
     //字典id
     @DBRef(lazy = true)
     private Dictionary dictionary;

+ 45 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/model/dictionary/DItemChildrenResult.java

@@ -0,0 +1,45 @@
+package com.zhongshu.card.server.core.model.dictionary;
+
+import com.zhongshu.card.client.type.DictionaryType;
+import com.zhongshu.card.server.core.domain.dictionary.Dictionary;
+import com.zhongshu.card.server.core.domain.dictionary.DictionaryItem;
+import lombok.Data;
+import org.springframework.data.mongodb.core.index.Indexed;
+import org.springframework.data.mongodb.core.mapping.DBRef;
+
+import java.util.List;
+
+@Data
+public class DItemChildrenResult {
+
+    private String id;
+
+    //字典id
+    private Dictionary dictionary;
+
+    //父级id
+    @Indexed
+    private String parentId;
+
+    //唯一值
+    @Indexed
+    private String key;
+
+    //字典项
+    private String name;
+
+    //类型
+    private DictionaryType type;
+
+    //排序
+    @Indexed
+    private Integer sort;
+
+    //禁用状态
+    @Indexed
+    private boolean disable;
+
+    private Long level;
+
+    private List<DItemChildrenResult> children;
+}

+ 51 - 4
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/dictionary/DictionaryService.java

@@ -1,21 +1,25 @@
 package com.zhongshu.card.server.core.service.dictionary;
 
+import com.github.microservice.auth.security.helper.AuthHelper;
+import com.github.microservice.components.data.base.util.PageEntityUtil;
 import com.github.microservice.net.ResultContent;
-import com.zhongshu.card.client.model.dictionary.AddDictionaryItemParam;
-import com.zhongshu.card.client.model.dictionary.AddDictionaryParam;
-import com.zhongshu.card.client.model.dictionary.UpdateDictionaryParam;
+import com.zhongshu.card.client.model.dictionary.*;
 import com.zhongshu.card.client.type.DictionaryType;
 import com.zhongshu.card.server.core.dao.dictionary.DictionaryDao;
 import com.zhongshu.card.server.core.dao.dictionary.DictionaryItemDao;
 import com.zhongshu.card.server.core.domain.dictionary.Dictionary;
 import com.zhongshu.card.server.core.domain.dictionary.DictionaryItem;
+import com.zhongshu.card.server.core.service.base.SuperService;
 import org.apache.commons.lang3.StringUtils;
+import org.bson.types.ObjectId;
 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;
 
 @Service
-public class DictionaryService {
+public class DictionaryService extends SuperService {
 
     @Autowired
     private DictionaryDao dictionaryDao;
@@ -23,6 +27,9 @@ public class DictionaryService {
     @Autowired
     private DictionaryItemDao dictionaryItemDao;
 
+    @Autowired
+    AuthHelper authHelper;
+
     public ResultContent init(){
         return null;
     }
@@ -38,6 +45,7 @@ public class DictionaryService {
             return ResultContent.buildFail("字典编码已存在");
         }
         Dictionary dictionary = new Dictionary();
+
         BeanUtils.copyProperties(param, dictionary);
         dictionary.setType(DictionaryType.Customize);
         dictionaryDao.save(dictionary);
@@ -88,6 +96,27 @@ public class DictionaryService {
         return ResultContent.buildSuccess();
     }
 
+    public Object page(Pageable pageable, DictionaryQueryParam param){
+        String projectId = param.getProjectId();
+        if (StringUtils.isBlank(projectId)){
+            projectId = getCurrentProjectOid();
+        }
+        if (StringUtils.isBlank(projectId)){
+            return ResultContent.buildFail("项目id不能为空");
+        };
+
+        Page<Dictionary> page = dictionaryDao.page(pageable, param.getProjectId(), param.getName(), param.getType());
+        return PageEntityUtil.concurrent2PageModel(page, this::toModel);
+    }
+
+    private DictionaryModel toModel(Dictionary dictionary){
+        DictionaryModel dictionaryModel = new DictionaryModel();
+        if (dictionary != null){
+            BeanUtils.copyProperties(dictionary, dictionaryModel);
+        }
+        return dictionaryModel;
+    }
+
     /**
      * 添加项
      */
@@ -101,6 +130,10 @@ public class DictionaryService {
         BeanUtils.copyProperties(param, dictionaryItem, "id");
         dictionaryItem.setType(DictionaryType.Customize);
         dictionaryItem.setDictionary(dictionary);
+        String id = new ObjectId().toHexString();
+        dictionaryItem.setId(id);
+        dictionaryItem.setIdString(id);
+        dictionaryItem.setCreateTime(System.currentTimeMillis());
         dictionaryItemDao.save(dictionaryItem);
         return ResultContent.buildSuccess();
     }
@@ -148,4 +181,18 @@ public class DictionaryService {
         return ResultContent.buildSuccess();
     }
 
+    public Object pageItem(Pageable pageable, DictionaryItemQueryParam param){
+        Page<DictionaryItem> page = dictionaryItemDao.page(pageable, param.getDictionaryId(), param.getName());
+        return PageEntityUtil.concurrent2PageModel(page, this::toItemModel);
+    }
+
+    private DictionaryItemModel toItemModel(DictionaryItem dictionaryItem){
+        DictionaryItemModel dictionaryItemModel = new DictionaryItemModel();
+        if (dictionaryItem != null){
+            BeanUtils.copyProperties(dictionaryItem, dictionaryItemModel);
+            dictionaryItemModel.setDictionaryId(dictionaryItem.getDictionary().getId());
+        }
+        return dictionaryItemModel;
+    }
+
 }