wangming преди 1 година
родител
ревизия
4ae966d37c
променени са 17 файла, в които са добавени 918 реда и са изтрити 0 реда
  1. 16 0
      business-common/src/main/java/com/rongwei/bscommon/sys/dao/ZhcxInterfaceInformationGetDao.java
  2. 16 0
      business-common/src/main/java/com/rongwei/bscommon/sys/dao/ZhcxInterfaceInformationGetParamDao.java
  3. 26 0
      business-common/src/main/java/com/rongwei/bscommon/sys/service/CommonInterfaceService.java
  4. 16 0
      business-common/src/main/java/com/rongwei/bscommon/sys/service/ZhcxInterfaceInformationGetParamService.java
  5. 32 0
      business-common/src/main/java/com/rongwei/bscommon/sys/service/ZhcxInterfaceInformationGetService.java
  6. 356 0
      business-common/src/main/java/com/rongwei/bscommon/sys/service/impl/CommonInterfaceServiceImpl.java
  7. 20 0
      business-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ZhcxInterfaceInformationGetParamServiceImpl.java
  8. 47 0
      business-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ZhcxInterfaceInformationGetServiceImpl.java
  9. 113 0
      business-entity/src/main/java/com/rongwei/bsentity/domain/ZhcxInterfaceInformationGetDo.java
  10. 79 0
      business-entity/src/main/java/com/rongwei/bsentity/domain/ZhcxInterfaceInformationGetParamDo.java
  11. 20 0
      business-entity/src/main/java/com/rongwei/bsentity/dto/CommonGetParam.java
  12. 31 0
      business-entity/src/main/java/com/rongwei/bsentity/dto/CommonInterfaceRequest.java
  13. 26 0
      business-entity/src/main/java/com/rongwei/bsentity/dto/InterfaceCommonSqlPropertyDto.java
  14. 30 0
      business-entity/src/main/java/com/rongwei/bsentity/dto/InterfaceWriteParamDto.java
  15. 50 0
      business-server/src/main/java/com/rongwei/bsserver/controller/CommonInterfaceController.java
  16. 20 0
      business-server/src/main/java/com/rongwei/bsserver/controller/ZhcxInterfaceInformationGetController.java
  17. 20 0
      business-server/src/main/java/com/rongwei/bsserver/controller/ZhcxInterfaceInformationGetParamController.java

+ 16 - 0
business-common/src/main/java/com/rongwei/bscommon/sys/dao/ZhcxInterfaceInformationGetDao.java

@@ -0,0 +1,16 @@
+package com.rongwei.bscommon.sys.dao;
+
+import com.rongwei.bsentity.domain.ZhcxInterfaceInformationGetDo;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 接口管理-接口信息_GET Mapper 接口
+ * </p>
+ *
+ * @author wm
+ * @since 2024-04-07
+ */
+public interface ZhcxInterfaceInformationGetDao extends BaseMapper<ZhcxInterfaceInformationGetDo> {
+
+}

+ 16 - 0
business-common/src/main/java/com/rongwei/bscommon/sys/dao/ZhcxInterfaceInformationGetParamDao.java

@@ -0,0 +1,16 @@
+package com.rongwei.bscommon.sys.dao;
+
+import com.rongwei.bsentity.domain.ZhcxInterfaceInformationGetParamDo;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 接口管理-接口信息-参数 Mapper 接口
+ * </p>
+ *
+ * @author wm
+ * @since 2024-04-07
+ */
+public interface ZhcxInterfaceInformationGetParamDao extends BaseMapper<ZhcxInterfaceInformationGetParamDo> {
+
+}

+ 26 - 0
business-common/src/main/java/com/rongwei/bscommon/sys/service/CommonInterfaceService.java

@@ -0,0 +1,26 @@
+package com.rongwei.bscommon.sys.service;
+
+import cn.hutool.json.JSONObject;
+import com.rongwei.bsentity.dto.CommonInterfaceRequest;
+import com.rongwei.rwcommon.vo.ColumnQueryType;
+
+import java.util.List;
+import java.util.Map;
+
+public interface CommonInterfaceService {
+
+    /**
+     * 基础查询
+     *
+     * @param query
+     * @return
+     */
+    List<Map<String, Object>> commonBaseGet(CommonInterfaceRequest<List<ColumnQueryType>> query);
+
+    /**
+     * 基础写入
+     *
+     * @param json
+     */
+    void commonBaseWrite(CommonInterfaceRequest<List<JSONObject>> json);
+}

+ 16 - 0
business-common/src/main/java/com/rongwei/bscommon/sys/service/ZhcxInterfaceInformationGetParamService.java

@@ -0,0 +1,16 @@
+package com.rongwei.bscommon.sys.service;
+
+import com.rongwei.bsentity.domain.ZhcxInterfaceInformationGetParamDo;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 接口管理-接口信息-参数 服务类
+ * </p>
+ *
+ * @author wm
+ * @since 2024-04-07
+ */
+public interface ZhcxInterfaceInformationGetParamService extends IService<ZhcxInterfaceInformationGetParamDo> {
+
+}

+ 32 - 0
business-common/src/main/java/com/rongwei/bscommon/sys/service/ZhcxInterfaceInformationGetService.java

@@ -0,0 +1,32 @@
+package com.rongwei.bscommon.sys.service;
+
+import com.rongwei.bsentity.domain.ZhcxInterfaceInformationGetDo;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 接口管理-接口信息_GET 服务类
+ * </p>
+ *
+ * @author wm
+ * @since 2024-04-07
+ */
+public interface ZhcxInterfaceInformationGetService extends IService<ZhcxInterfaceInformationGetDo> {
+
+    /**
+     * 通过编码获取接口
+     *
+     * @param code
+     * @return
+     */
+    ZhcxInterfaceInformationGetDo getByCode(String code);
+
+    /**
+     * 通过编码获取接口
+     *
+     * @param code
+     * @return
+     */
+    ZhcxInterfaceInformationGetDo getByCodeThrow(String code);
+
+}

+ 356 - 0
business-common/src/main/java/com/rongwei/bscommon/sys/service/impl/CommonInterfaceServiceImpl.java

@@ -0,0 +1,356 @@
+package com.rongwei.bscommon.sys.service.impl;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.json.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.rongwei.bscommon.sys.service.CommonInterfaceService;
+import com.rongwei.bscommon.sys.service.ZhcxInterfaceInformationGetParamService;
+import com.rongwei.bscommon.sys.service.ZhcxInterfaceInformationGetService;
+import com.rongwei.bsentity.domain.ZhcxInterfaceInformationGetDo;
+import com.rongwei.bsentity.domain.ZhcxInterfaceInformationGetParamDo;
+import com.rongwei.bsentity.dto.CommonInterfaceRequest;
+import com.rongwei.bsentity.dto.InterfaceCommonSqlPropertyDto;
+import com.rongwei.bsentity.dto.InterfaceWriteParamDto;
+import com.rongwei.commonservice.service.dao.CommonSqlDao;
+import com.rongwei.rwadmincommon.system.dao.SysGeneralCRUDDao;
+import com.rongwei.rwcommon.base.exception.CustomException;
+import com.rongwei.rwcommon.utils.SecurityUtil;
+import com.rongwei.rwcommon.utils.StringUtils;
+import com.rongwei.rwcommon.vo.ColumnQueryType;
+import com.rongwei.rwcommon.vo.CriteriaBuilder;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.PlatformTransactionManager;
+import org.springframework.transaction.TransactionDefinition;
+import org.springframework.transaction.TransactionStatus;
+import org.springframework.transaction.support.DefaultTransactionDefinition;
+
+import java.util.*;
+
+@Service
+@Slf4j
+public class CommonInterfaceServiceImpl implements CommonInterfaceService {
+
+    @Autowired
+    private ZhcxInterfaceInformationGetService zhcxInterfaceInformationGetService;
+    @Autowired
+    private ZhcxInterfaceInformationGetParamService zhcxInterfaceInformationGetParamService;
+    @Autowired
+    private SysGeneralCRUDDao generalCRUDDao;
+    @Autowired
+    private PlatformTransactionManager platformTransactionManager;
+    @Autowired
+    private CommonSqlDao commonSqlDao;
+
+    /**
+     * 基础查询
+     *
+     * @param query
+     * @return
+     */
+    @Override
+    public List<Map<String, Object>> commonBaseGet(CommonInterfaceRequest<List<ColumnQueryType>> query) {
+        //验签
+        verifySign(query);
+
+        return executeBaseGet(query);
+    }
+
+    /**
+     * 基础写入
+     *
+     * @param json
+     */
+    @Override
+    public void commonBaseWrite(CommonInterfaceRequest<List<JSONObject>> json) {
+        //验证
+        verifySign(json);
+
+        //写入
+        executeBaseWrite(json);
+    }
+
+    /**
+     * 验签
+     *
+     * @param param
+     */
+    private void verifySign(CommonInterfaceRequest<?> param) {
+        if(ObjectUtil.isEmpty(param.getInterfaceCode())) {
+            throw new CustomException("接口不存在!");
+        }
+
+        if(ObjectUtil.isEmpty(param.getSign())) {
+            throw new CustomException("请求缺少签名!");
+        }
+    }
+
+    /**
+     * 执行
+     *
+     * @param query
+     * @return
+     */
+    private List<Map<String, Object>> executeBaseGet(CommonInterfaceRequest<List<ColumnQueryType>> query) {
+        //获取接口
+        ZhcxInterfaceInformationGetDo informationGetDo = zhcxInterfaceInformationGetService.getByCodeThrow(query.getInterfaceCode());
+        //格式化
+        String querySql = initQuerySql(informationGetDo, query.getData());
+        return generalCRUDDao.queryDataFromSql(querySql);
+    }
+
+    /**
+     * 写入
+     *
+     * @param json
+     */
+    private void executeBaseWrite(CommonInterfaceRequest<List<JSONObject>> json) {
+        if(ObjectUtil.isEmpty(json.getData())) {
+            throw new CustomException("请传入请求参数");
+        }
+
+        //获取接口
+        ZhcxInterfaceInformationGetDo informationGetDo = zhcxInterfaceInformationGetService.getByCodeThrow(json.getInterfaceCode());
+
+        //字段信息
+        InterfaceWriteParamDto writeParamDto = getinterfaceWriteCols(informationGetDo.getId());
+
+        InterfaceCommonSqlPropertyDto propertyDto = InterfaceCommonSqlPropertyDto.builder().build();
+        //生成sql
+        List<String> sqlList = genSql(informationGetDo.getTablename(), writeParamDto, json.getData(), propertyDto);
+
+        DefaultTransactionDefinition definition = new DefaultTransactionDefinition();
+        //隔离级别
+        definition.setIsolationLevel(TransactionDefinition.ISOLATION_READ_COMMITTED);
+        definition.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
+        TransactionStatus status = platformTransactionManager.getTransaction(definition);
+        try {
+            for(String sql : sqlList) {
+                commonSqlDao.sqlUpdate(sql);
+            }
+            platformTransactionManager.commit(status);
+        } catch (Exception e) {
+            platformTransactionManager.rollback(status);
+            log.error("保存失败", e);
+            throw new CustomException("保存失败");
+        }
+    }
+
+    /**
+     * 生成执行sql
+     *
+     * @param tableName
+     * @param writeParamDto
+     * @param jsonList
+     * @return
+     */
+    private List<String> genSql(String tableName, InterfaceWriteParamDto writeParamDto, List<JSONObject> jsonList, InterfaceCommonSqlPropertyDto sqlPropertyDto) {
+        List<String> sqlList = new ArrayList<>();
+        //请求数据
+        for(JSONObject json : jsonList) {
+            //唯一标识sql片段
+            Set<String> uniqueWheres = getUniqueWheres(writeParamDto.getUniqueColList(), json);
+            String sqlType = getExecuteSqlType(tableName, uniqueWheres);
+            sqlPropertyDto.setSqlType(sqlType);
+
+            List<String> valueSql = colValueSql(writeParamDto, json, sqlPropertyDto);
+            StringBuilder sqlSb = new StringBuilder();
+            if("insert".equals(sqlType)) {
+                sqlSb.append("INSERT INTO ").append(tableName).append("(");
+                sqlSb.append(StringUtils.join(writeParamDto.getColList(), ","));
+                //如果没有主键,添加主键
+                if(!writeParamDto.getColList().contains("ID")) {
+                    sqlSb.append(", ID");
+                }
+                if(!writeParamDto.getColList().contains("DELETED")) {
+                    sqlSb.append(", DELETED");
+                }
+                //value
+                sqlSb.append(") VALUES (");
+                sqlSb.append(StringUtils.join(valueSql, ","));
+                //如果没有主键,添加主键
+                if(!writeParamDto.getColList().contains("ID")) {
+                    sqlSb.append(", '").append(SecurityUtil.getUUID()).append("'");
+                }
+
+                if(!writeParamDto.getColList().contains("DELETED")) {
+                    sqlSb.append(", '0'");
+                }
+
+                sqlSb.append(")");
+            } else {
+                sqlSb.append("UPDATE ").append(tableName).append(" SET ");
+                sqlSb.append(StringUtils.join(valueSql, ","));
+                sqlSb.append(" WHERE ");
+                    sqlSb.append(StringUtils.join(uniqueWheres, " AND "));
+            }
+
+            sqlList.add(sqlSb.toString());
+        }
+
+        return sqlList;
+
+    }
+
+    /**
+     * 值sql片段
+     *
+     * @param writeParamDto
+     * @param json
+     * @param sqlPropertyDto
+     * @return
+     */
+    private List<String> colValueSql(InterfaceWriteParamDto writeParamDto, JSONObject json, InterfaceCommonSqlPropertyDto sqlPropertyDto) {
+        List<String> list = new ArrayList<>();
+        for(String col : writeParamDto.getColList()) {
+            //值为空,不做生成sql
+            if(ObjectUtil.isEmpty(json.getStr(col))) {
+                continue;
+            }
+
+            StringBuilder sb = new StringBuilder();
+            //修改
+            if("update".equals(sqlPropertyDto.getSqlType())) {
+                sb.append(col).append("='").append(json.getStr(col)).append("'");
+            }
+            //插入
+            else {
+                sb.append("'").append(json.getStr(col)).append("'");
+            }
+
+            list.add(sb.toString());
+        }
+        return list;
+    }
+
+    /**
+     * 判断数据为新增或者修改
+     *
+     * @param tableName
+     * @param uniqueWheres
+     * @return insert update
+     */
+    private String getExecuteSqlType(String tableName, Set<String> uniqueWheres) {
+        StringBuilder existSql = new StringBuilder();
+        existSql.append("SELECT COUNT(1) AS total FROM ").append(tableName).append(" WHERE ");
+        existSql.append(StringUtils.join(uniqueWheres, " AND ")).append(" LIMIT 1");
+        List<Map<String, Object>> maps = generalCRUDDao.queryDataFromSql(existSql.toString());
+
+        if(ObjectUtil.isEmpty(maps)) {
+            return "insert";
+        }
+
+        if(ObjectUtil.isNull(maps.get(0))) {
+            return "insert";
+        }
+
+        if(ObjectUtil.isNull(maps.get(0).get("total"))) {
+            return "insert";
+        }
+
+        int total = Integer.parseInt(String.valueOf(maps.get(0).get("total")));
+
+        return total > 0 ? "update" : "insert";
+    }
+
+    /**
+     * 获取唯一标识sql片段
+     *
+     * @param uniqueColList
+     * @param json
+     * @return
+     */
+    private Set<String> getUniqueWheres(List<String> uniqueColList, JSONObject json) {
+        //唯一标识
+        Set<String> uniqueWheres = new HashSet<>(uniqueColList.size());
+        //唯一标识
+        for(String unique:  uniqueColList) {
+            StringBuilder uniqueSb = new StringBuilder();
+            uniqueSb.append(unique).append("=");
+            if(ObjectUtil.isNotNull(json.getStr(unique))) {
+                uniqueSb.append("'").append(json.getStr(unique, "")).append("'");
+            } else {
+                uniqueSb.append("''");
+            }
+            uniqueWheres.add(uniqueSb.toString());
+        }
+
+        if(!uniqueColList.contains("DELETED")) {
+            uniqueWheres.add("DELETED='0'");
+        }
+
+        return uniqueWheres;
+    }
+
+    /**
+     * 获取字段信息
+     *
+     * @param interfaceId
+     * @return 如果未查询到,会返回null
+     */
+    private InterfaceWriteParamDto getinterfaceWriteCols(String interfaceId) {
+        //请求参数
+        LambdaQueryWrapper<ZhcxInterfaceInformationGetParamDo> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.eq(ZhcxInterfaceInformationGetParamDo::getDeleted, "0")
+                .eq(ZhcxInterfaceInformationGetParamDo::getParamtype, "in")
+                .eq(ZhcxInterfaceInformationGetParamDo::getInterfaceid, interfaceId);
+        List<ZhcxInterfaceInformationGetParamDo> paramDoList = zhcxInterfaceInformationGetParamService.list(queryWrapper);
+
+        if(ObjectUtil.isEmpty(paramDoList)) {
+            throw new CustomException("请通知管理员,该接口无请求参数");
+        }
+        List<String> colList = new ArrayList<>(paramDoList.size());
+        List<String> uniqueColList = new ArrayList<>();
+        Map<String, ZhcxInterfaceInformationGetParamDo> map = new HashMap<>(paramDoList.size());
+        for(ZhcxInterfaceInformationGetParamDo param : paramDoList) {
+            colList.add(param.getColname());
+
+            //主键标识
+            if("1".equals(param.getUniqueflag())) {
+                uniqueColList.add(param.getColname());
+            }
+
+            map.put(param.getColname(), param);
+        }
+
+        if(ObjectUtil.isEmpty(uniqueColList)) {
+            throw new CustomException("请联系管理员,该接口未设置唯一标识");
+        }
+
+        return InterfaceWriteParamDto.builder()
+                .colList(colList)
+                .uniqueColList(uniqueColList)
+                .colMap(map)
+                .build();
+    }
+
+    /**
+     *
+     *
+     * @param informationGetDo
+     * @param param
+     * @return
+     */
+    private String initQuerySql(ZhcxInterfaceInformationGetDo informationGetDo, List<ColumnQueryType> param) {
+        StringBuilder mainSb = new StringBuilder();
+        mainSb.append("SELECT * FROM");
+        if("table".equals(informationGetDo.getDatasourcetype())) {
+            mainSb.append(informationGetDo.getDatasource());
+            mainSb.append(" tb ");
+        } else if("sql".equals(informationGetDo.getDatasourcetype())) {
+            mainSb.append("(");
+            mainSb.append(informationGetDo.getDatasource());
+            mainSb.append(") tb ");
+        }
+
+        //where条件
+        StringBuffer whereSqlSb = new StringBuffer();
+        CriteriaBuilder.whereSql(whereSqlSb, param, informationGetDo.getDatasourcetype());
+
+        mainSb.append(whereSqlSb);
+
+        return mainSb.toString();
+    }
+}

+ 20 - 0
business-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ZhcxInterfaceInformationGetParamServiceImpl.java

@@ -0,0 +1,20 @@
+package com.rongwei.bscommon.sys.service.impl;
+
+import com.rongwei.bsentity.domain.ZhcxInterfaceInformationGetParamDo;
+import com.rongwei.bscommon.sys.dao.ZhcxInterfaceInformationGetParamDao;
+import com.rongwei.bscommon.sys.service.ZhcxInterfaceInformationGetParamService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 接口管理-接口信息-参数 服务实现类
+ * </p>
+ *
+ * @author wm
+ * @since 2024-04-07
+ */
+@Service
+public class ZhcxInterfaceInformationGetParamServiceImpl extends ServiceImpl<ZhcxInterfaceInformationGetParamDao, ZhcxInterfaceInformationGetParamDo> implements ZhcxInterfaceInformationGetParamService {
+
+}

+ 47 - 0
business-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ZhcxInterfaceInformationGetServiceImpl.java

@@ -0,0 +1,47 @@
+package com.rongwei.bscommon.sys.service.impl;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.rongwei.bsentity.domain.ZhcxInterfaceInformationGetDo;
+import com.rongwei.bscommon.sys.dao.ZhcxInterfaceInformationGetDao;
+import com.rongwei.bscommon.sys.service.ZhcxInterfaceInformationGetService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.rongwei.rwcommon.base.exception.CustomException;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 接口管理-接口信息_GET 服务实现类
+ * </p>
+ *
+ * @author wm
+ * @since 2024-04-07
+ */
+@Service
+public class ZhcxInterfaceInformationGetServiceImpl extends ServiceImpl<ZhcxInterfaceInformationGetDao, ZhcxInterfaceInformationGetDo> implements ZhcxInterfaceInformationGetService {
+
+    /**
+     * 通过编码获取接口
+     *
+     * @param code
+     * @return
+     */
+    @Override
+    public ZhcxInterfaceInformationGetDo getByCode(String code) {
+        LambdaQueryWrapper<ZhcxInterfaceInformationGetDo> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.eq(ZhcxInterfaceInformationGetDo::getInterfacecode, code)
+                .eq(ZhcxInterfaceInformationGetDo::getStatus, "启用")
+                .eq(ZhcxInterfaceInformationGetDo::getDeleted, "0");
+        return getOne(queryWrapper);
+    }
+
+    @Override
+    public ZhcxInterfaceInformationGetDo getByCodeThrow(String code) {
+        ZhcxInterfaceInformationGetDo informationGetDo = getByCode(code);
+        if(ObjectUtil.isNull(informationGetDo)) {
+            throw new CustomException("接口不存在!");
+        }
+        return informationGetDo;
+    }
+}

+ 113 - 0
business-entity/src/main/java/com/rongwei/bsentity/domain/ZhcxInterfaceInformationGetDo.java

@@ -0,0 +1,113 @@
+package com.rongwei.bsentity.domain;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.rongwei.rwcommon.base.BaseDo;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotation.TableField;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 接口管理-接口信息_GET
+ * </p>
+ *
+ * @author wm
+ * @since 2024-04-07
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@Accessors(chain = true)
+@TableName("ZHCX_INTERFACE_INFORMATION_GET")
+public class ZhcxInterfaceInformationGetDo extends BaseDo {
+
+    private static final long serialVersionUID=1L;
+
+    /**
+     * 主键
+     */
+    @TableField("ID")
+    private String id;
+    /**
+     * 租户ID
+     */
+    @TableField("TENANTID")
+    private String tenantid;
+    /**
+     * 扩展预留
+     */
+    @TableField("ROPTION")
+    private String roption;
+    /**
+     * 接口分类
+     */
+    @TableField("INTERFACECLASSIFY")
+    private String interfaceclassify;
+    /**
+     * 接口编码
+     */
+    @TableField("INTERFACECODE")
+    private String interfacecode;
+    /**
+     * 接口名称
+     */
+    @TableField("INTERFACENAME")
+    private String interfacename;
+    /**
+     * 接口地址
+     */
+    @TableField("INTERFACEURL")
+    private String interfaceurl;
+    /**
+     * 数据源类型(table,sql)
+     */
+    @TableField("DATASOURCETYPE")
+    private String datasourcetype;
+    /**
+     * 数据源id
+     */
+    @TableField("DATASOURCEID")
+    private String datasourceid;
+    /**
+     * 数据源id
+     */
+    @TableField("TABLENAME")
+    private String tablename;
+    /**
+     * 数据源
+     */
+    @TableField("DATASOURCE")
+    private String datasource;
+    /**
+     * 描述
+     */
+    @TableField("DISCRIPTION")
+    private String discription;
+    /**
+     * 参数示例
+     */
+    @TableField("EXAMPLE")
+    private String example;
+    /**
+     * 内容类型(application/json)
+     */
+    @TableField("CONTENTTYPE")
+    private String contenttype;
+    /**
+     * 请求方法(get,post)
+     */
+    @TableField("REQUESTMETHOD")
+    private String requestmethod;
+    /**
+     * 接口状态(启用,禁用)
+     */
+    @TableField("STATUS")
+    private String status;
+
+    /**
+     * 接口类型(query,update)
+     */
+    @TableField("INTERFACETYPE")
+    private String interfacetype;
+}

+ 79 - 0
business-entity/src/main/java/com/rongwei/bsentity/domain/ZhcxInterfaceInformationGetParamDo.java

@@ -0,0 +1,79 @@
+package com.rongwei.bsentity.domain;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.rongwei.rwcommon.base.BaseDo;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotation.TableField;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 接口管理-接口信息-参数
+ * </p>
+ *
+ * @author wm
+ * @since 2024-04-07
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@Accessors(chain = true)
+@TableName("ZHCX_INTERFACE_INFORMATION_GET_PARAM")
+public class ZhcxInterfaceInformationGetParamDo extends BaseDo {
+
+    private static final long serialVersionUID=1L;
+
+    /**
+     * 主键
+     */
+    @TableField("ID")
+    private String id;
+    /**
+     * 租户ID
+     */
+    @TableField("TENANTID")
+    private String tenantid;
+    /**
+     * 扩展预留
+     */
+    @TableField("ROPTION")
+    private String roption;
+    /**
+     * 接口信息id
+     */
+    @TableField("INTERFACEID")
+    private String interfaceid;
+    /**
+     * 接口信息id
+     */
+    @TableField("COLNAME")
+    private String colname;
+    /**
+     * 参数类型
+     */
+    @TableField("PARAMTYPE")
+    private String paramtype;
+    /**
+     * 参数描述
+     */
+    @TableField("PARAMDESC")
+    private String paramdesc;
+    /**
+     * 格式化
+     */
+    @TableField("PATTERN")
+    private String pattern;
+
+    /**
+     * 字段类型
+     */
+    @TableField("FIELDTYPE")
+    private String fieldtype;
+
+    /**
+     * 唯一标识(1,0)
+     */
+    @TableField("UNIQUEFLAG")
+    private String uniqueflag;
+}

+ 20 - 0
business-entity/src/main/java/com/rongwei/bsentity/dto/CommonGetParam.java

@@ -0,0 +1,20 @@
+package com.rongwei.bsentity.dto;
+
+import com.rongwei.rwcommon.vo.ColumnQueryType;
+import lombok.*;
+
+import java.util.List;
+
+@Setter
+@Getter
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class CommonGetParam {
+
+    /**
+     * 字段查询类型列表
+     */
+    private List<ColumnQueryType> columnQueryTypes;
+
+}

+ 31 - 0
business-entity/src/main/java/com/rongwei/bsentity/dto/CommonInterfaceRequest.java

@@ -0,0 +1,31 @@
+package com.rongwei.bsentity.dto;
+
+import lombok.*;
+
+@Setter
+@Getter
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class CommonInterfaceRequest<T> {
+
+    /**
+     * 签名
+     */
+    private String sign;
+
+    /**
+     * 接口编码
+     */
+    private String interfaceCode;
+
+    /**
+     * 请求参数
+     */
+    private T data;
+
+    /**
+     * 用户id
+     */
+    private String appUserId;
+}

+ 26 - 0
business-entity/src/main/java/com/rongwei/bsentity/dto/InterfaceCommonSqlPropertyDto.java

@@ -0,0 +1,26 @@
+package com.rongwei.bsentity.dto;
+
+import lombok.*;
+
+@Setter
+@Getter
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class InterfaceCommonSqlPropertyDto {
+
+    /**
+     * sql类型 insert update
+     */
+    private String sqlType;
+
+    /**
+     * 过滤空值 暂未做处理
+     */
+    private boolean filterInsertNullFlag;
+
+    /**
+     * 过滤空值 暂未做处理
+     */
+    private boolean filterUpdateNullFlag;
+}

+ 30 - 0
business-entity/src/main/java/com/rongwei/bsentity/dto/InterfaceWriteParamDto.java

@@ -0,0 +1,30 @@
+package com.rongwei.bsentity.dto;
+
+import com.rongwei.bsentity.domain.ZhcxInterfaceInformationGetParamDo;
+import lombok.*;
+
+import java.util.List;
+import java.util.Map;
+
+@Setter
+@Getter
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class InterfaceWriteParamDto {
+
+    /**
+     * 字段列表
+     */
+    private List<String> colList;
+
+    /**
+     * 唯一字段列表
+     */
+    private List<String> uniqueColList;
+
+    /**
+     * 字段明细
+     */
+    private Map<String, ZhcxInterfaceInformationGetParamDo> colMap;
+}

+ 50 - 0
business-server/src/main/java/com/rongwei/bsserver/controller/CommonInterfaceController.java

@@ -0,0 +1,50 @@
+package com.rongwei.bsserver.controller;
+
+import cn.hutool.json.JSONObject;
+import com.rongwei.bscommon.sys.service.CommonInterfaceService;
+import com.rongwei.bsentity.dto.CommonInterfaceRequest;
+import com.rongwei.rwcommon.base.R;
+import com.rongwei.rwcommon.vo.ColumnQueryType;
+import com.rongwei.rwcommon.vo.CriteriaQuery;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+import java.util.Map;
+
+@RestController
+@RequestMapping("/common")
+public class CommonInterfaceController {
+
+    @Autowired
+    private CommonInterfaceService commonInterfaceService;
+
+    /**
+     * 基础通用查询
+     *
+     * @param query
+     * @return
+     */
+    @RequestMapping("base/get/{interfaceCode}")
+    public R commonBaseGet(@PathVariable(name = "interfaceCode") String interfaceCode,  @RequestBody CommonInterfaceRequest<List<ColumnQueryType>> query) {
+        query.setInterfaceCode(interfaceCode);
+        List<Map<String, Object>> mapList = commonInterfaceService.commonBaseGet(query);
+        return R.ok(mapList);
+    }
+
+    /**
+     * 基础通用写入
+     *
+     * @param json
+     * @return
+     */
+    @RequestMapping("base/write/{interfaceCode}")
+    public R commonBaseWrite(@PathVariable(name = "interfaceCode") String interfaceCode,  @RequestBody CommonInterfaceRequest<List<JSONObject>> json) {
+        json.setInterfaceCode(interfaceCode);
+        commonInterfaceService.commonBaseWrite(json);
+        return R.ok();
+    }
+}

+ 20 - 0
business-server/src/main/java/com/rongwei/bsserver/controller/ZhcxInterfaceInformationGetController.java

@@ -0,0 +1,20 @@
+package com.rongwei.bsserver.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 接口管理-接口信息_GET 前端控制器
+ * </p>
+ *
+ * @author wm
+ * @since 2024-04-07
+ */
+@RestController
+@RequestMapping("/zhcxInterfaceInformationGet")
+public class ZhcxInterfaceInformationGetController {
+
+}
+

+ 20 - 0
business-server/src/main/java/com/rongwei/bsserver/controller/ZhcxInterfaceInformationGetParamController.java

@@ -0,0 +1,20 @@
+package com.rongwei.bsserver.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 接口管理-接口信息-参数 前端控制器
+ * </p>
+ *
+ * @author wm
+ * @since 2024-04-07
+ */
+@RestController
+@RequestMapping("/zhcxInterfaceInformationGetParam")
+public class ZhcxInterfaceInformationGetParamController {
+
+}
+