Browse Source

对象类型 接口实现

yucheng 3 years ago
parent
commit
eaf416208f

+ 18 - 0
dc-business/dc-digital/src/main/java/com/persagy/dc/basic/utils/DigitalCommonUtils.java

@@ -38,6 +38,24 @@ public class DigitalCommonUtils {
     }
 
     /**
+     * 确认项目范围条件
+     * @param wrapper 查询条件
+     */
+    public static <T extends BaseEntity> void ensureProjectCriteria(QueryWrapper<T> wrapper, String projectId) {
+        List<String> inSql = new ArrayList<>();
+        // 0-平台级数据
+        inSql.add(CommonConstant.DEFAULT_ID);
+        // groupCode-集团级数据
+        if(!CommonConstant.DEFAULT_ID.equalsIgnoreCase(projectId)) {
+            inSql.add(AppContext.getContext().getGroupCode());
+        }
+        if(StrUtil.isNotBlank(projectId)) {
+            inSql.add(projectId);
+        }
+        wrapper.in(AppContext.PROJECT_ID, inSql);
+    }
+
+    /**
      * 获取数据范围ID
      * @return 0-平台级数据,groupCode-集团级数据,projectId-项目级数据
      */

+ 24 - 0
dc-business/dc-digital/src/main/java/com/persagy/dc/define/service/IObjectTypeService.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.persagy.dc.define.entity.ObjectType;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * 对象类型 接口
@@ -14,6 +15,29 @@ import java.util.List;
 public interface IObjectTypeService {
 
     /**
+     * 查询Map
+     * @return <code, name>
+     */
+    Map<String, String> queryCodeNameMap();
+
+    /**
+     * 按项目、应用查询 - 支持订阅
+     * @param projectId 项目ID
+     * @param appId 应用ID
+     * @return 列表结果
+     */
+    List<ObjectType> queryByProjectAndApp(String projectId, String appId);
+
+    /**
+     * 按项目、应用查询 - 支持订阅
+     * @param page 分页条件
+     * @param projectId 项目ID
+     * @param appId 应用ID
+     * @return 分页结果
+     */
+    Page queryByProjectAndApp(Page page, String projectId, String appId);
+
+    /**
      * 按条件查询
      * @param queryWrapper 查询条件
      * @return 列表

+ 43 - 0
dc-business/dc-digital/src/main/java/com/persagy/dc/define/service/impl/ObjectTypeServiceImpl.java

@@ -4,10 +4,13 @@ import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.map.MapUtil;
 import cn.hutool.core.text.StrFormatter;
+import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.persagy.dc.basic.constant.DigitalMessageConstant;
+import com.persagy.dc.basic.utils.DigitalCommonUtils;
 import com.persagy.dc.basic.utils.DigitalMessageHelper;
 import com.persagy.dc.common.constant.ValidEnum;
 import com.persagy.dc.common.exception.BusinessException;
@@ -16,6 +19,8 @@ import com.persagy.dc.define.dao.ObjectTypeMapper;
 import com.persagy.dc.define.entity.ObjectType;
 import com.persagy.dc.define.service.IObjectTypeService;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.cache.annotation.CacheEvict;
+import org.springframework.cache.annotation.Cacheable;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -37,6 +42,41 @@ public class ObjectTypeServiceImpl implements IObjectTypeService {
     private DigitalMessageHelper messageSender;
 
     @Override
+    @Cacheable(key = "targetClass + methodName + #p0 + #p1")
+    public List<ObjectType> queryByProjectAndApp(String projectId, String appId) {
+        // TODO 指定条件查询使用Redis
+        QueryWrapper<ObjectType> wrapper = new QueryWrapper<>();
+        DigitalCommonUtils.ensureProjectCriteria(wrapper, projectId);
+        if(StrUtil.isNotBlank(appId)) {
+            // TODO 根据应用ID关联订阅条件
+
+        }
+        return queryByCondition(wrapper);
+    }
+
+    @Override
+    @Cacheable(key = "targetClass + methodName")
+    public Map<String, String> queryCodeNameMap() {
+        LambdaQueryWrapper<ObjectType> wrapper = new LambdaQueryWrapper<>();
+        wrapper.select(ObjectType::getId, ObjectType::getCode, ObjectType::getName);
+        wrapper.eq(ObjectType::getValid, ValidEnum.TRUE.getType());
+        List<ObjectType> voList = queryByCondition(wrapper);
+        return CollUtil.fieldValueAsMap(voList, "code", "name");
+    }
+
+    @Override
+    public Page queryByProjectAndApp(Page page, String projectId, String appId) {
+        // TODO 分页查询使用ES
+        QueryWrapper<ObjectType> wrapper = new QueryWrapper<>();
+        DigitalCommonUtils.ensureProjectCriteria(wrapper, projectId);
+        if(StrUtil.isNotBlank(appId)) {
+            // TODO 根据应用ID关联订阅条件
+
+        }
+        return queryByCondition(page, wrapper);
+    }
+
+    @Override
     public List<ObjectType> queryByCondition(Wrapper<ObjectType> queryWrapper) {
         return dao.selectList(queryWrapper);
     }
@@ -47,6 +87,7 @@ public class ObjectTypeServiceImpl implements IObjectTypeService {
     }
 
     @Override
+    @CacheEvict(allEntries = true)
     public List<ObjectType> insert(List<ObjectType> voList) {
         if(CollUtil.isEmpty(voList)) {
             return null;
@@ -64,6 +105,7 @@ public class ObjectTypeServiceImpl implements IObjectTypeService {
     }
 
     @Override
+    @CacheEvict(allEntries = true)
     public List<ObjectType> update(List<ObjectType> voList) {
         if(CollUtil.isEmpty(voList)) {
             return null;
@@ -125,6 +167,7 @@ public class ObjectTypeServiceImpl implements IObjectTypeService {
     }
 
     @Override
+    @CacheEvict(allEntries = true)
     public void delete(List<String> idList) {
         if(CollUtil.isEmpty(idList)) {
             return;