shiqian 4 жил өмнө
parent
commit
6c0199dd12

+ 0 - 60
boman-web-core/src/main/java/com/boman/web/core/domain/MainTableRecord.java

@@ -1,60 +0,0 @@
-package com.boman.web.core.domain;
-
-import com.alibaba.fastjson.JSONObject;
-import com.boman.gen.domain.GenTable;
-import lombok.Data;
-import lombok.Getter;
-import lombok.Setter;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * @author shiqian
- * @description
- * @date 2021年03月22日 10:04
- **/
-public class MainTableRecord {
-
-    private static final Logger LOGGER = LoggerFactory.getLogger(MainTableRecord.class);
-
-    private TableServiceContext context;
-    private RowRecord mainData;
-
-    @Setter
-    @Getter
-    private RowResult result;
-
-
-    public MainTableRecord(TableServiceContext context, GenTable genTable, Long id, JSONObject fixedData, JSONObject delTables) {
-        this.context = context;
-        this.mainData = new RowRecord(id, genTable, fixedData);
-    }
-
-    public Long getId() {
-        return mainData.getId();
-    }
-
-    public void setId(Long value) {
-        mainData.setId(value);
-    }
-
-    public GenTable getTable() {
-        return mainData.getGenTable();
-    }
-
-    public JSONObject getCommitData() {
-        return mainData.getCommitData();
-    }
-
-    public JSONObject getOriginalData() {
-        return mainData.getOriginalData();
-    }
-
-    public RowRecord getMainData() {
-        return mainData;
-    }
-
-    public void setMainData(RowRecord mainData) {
-        this.mainData = mainData;
-    }
-}

+ 0 - 100
boman-web-core/src/main/java/com/boman/web/core/domain/RowRecord.java

@@ -1,100 +0,0 @@
-package com.boman.web.core.domain;
-
-import com.alibaba.fastjson.JSONObject;
-import com.boman.gen.domain.GenTable;
-import lombok.Data;
-import lombok.extern.slf4j.Slf4j;
-
-/**
- * @author zc
- * @date 2019/02/19
- */
-@Slf4j
-public class RowRecord {
-
-    private GenTable genTable;
-
-    private Long id;
-
-    //提交过来的数据
-    private JSONObject postData = new JSONObject();
-
-    //原数据
-    private JSONObject originalData = new JSONObject();
-
-    //新数据
-    private JSONObject newData;
-
-    //将要提交到数据库中的数据
-    private JSONObject commitData = new JSONObject();
-
-    public RowRecord(Long id, GenTable genTable, JSONObject fixedData) {
-        this.id = id;
-        this.genTable = genTable;
-
-        if (fixedData == null) {
-            fixedData = new JSONObject();
-        }
-
-        fixedData.forEach((fieldName, fieldValue)->{
-            postData.put(fieldName.toUpperCase(), fieldValue);
-        });
-
-        for (String key : postData.keySet()) {
-            commitData.put(key, postData.get(key));
-        }
-
-        JSONObject jsonObject = new JSONObject();
-        jsonObject.put("baseData", originalData);
-        jsonObject.put("data", commitData);
-        newData = new JSONObject(jsonObject);
-    }
-
-    public GenTable getGenTable() {
-        return genTable;
-    }
-
-    public void setGenTable(GenTable genTable) {
-        this.genTable = genTable;
-    }
-
-    public Long getId() {
-        return id;
-    }
-
-    public void setId(Long id) {
-        this.id = id;
-    }
-
-    public JSONObject getPostData() {
-        return postData;
-    }
-
-    public void setPostData(JSONObject postData) {
-        this.postData = postData;
-    }
-
-    public JSONObject getOriginalData() {
-        return originalData;
-    }
-
-    public void setOriginalData(JSONObject originalData) {
-        this.originalData = originalData;
-    }
-
-    public JSONObject getNewData() {
-        return newData;
-    }
-
-    public void setNewData(JSONObject newData) {
-        this.newData = newData;
-    }
-
-    public JSONObject getCommitData() {
-        return commitData;
-    }
-
-    public void setCommitData(JSONObject commitData) {
-        this.commitData = commitData;
-    }
-}

+ 0 - 185
boman-web-core/src/main/java/com/boman/web/core/domain/TableServiceContext.java

@@ -1,185 +0,0 @@
-package com.boman.web.core.domain;
-
-import com.alibaba.fastjson.JSONObject;
-import com.boman.common.core.utils.SpringUtils;
-import com.boman.common.redis.RedisKey;
-import com.boman.common.redis.service.RedisService;
-import com.boman.gen.domain.GenTable;
-import com.google.common.base.Strings;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-import org.springframework.stereotype.Service;
-import org.springframework.util.StringUtils;
-
-import javax.annotation.Resource;
-import java.sql.Timestamp;
-import java.util.List;
-import java.util.Map;
-
-/**
- * @author shiqian
- * @description
- * @date 2021年03月22日 09:58
- **/
-@Service
-public class TableServiceContext {
-
-    private final static String PREFIX = "Controller:/event/do";
-
-    /**
-     * 当前表
-     */
-    private GenTable table;
-
-    /**
-     * 真实表名
-     */
-    private String realTableName;
-
-    /**
-     * 动作名(ADD,SAVE,SUBMIT,VOID,UNSUBMIT)
-     */
-    private String actionName;   //Controller:/event/doAdd
-
-    /**
-     * 业务发生的时间戳
-     */
-    private Timestamp currentTime;
-
-    /**
-     * 上行的数据
-     * 每个row对象对应到一条单据(如果存在事务,应该在这个级别上体现)
-     */
-    private List<MainTableRecord> rows;
-
-    /**
-     * 本次请求存放的临时数据
-     * !!慎用,最好不要在各个对象间传递
-     */
-    private Map<String, Object> values;
-
-    private boolean isDelMtable;
-
-    /**
-     * 是否批量新增
-     */
-    private boolean isInsertBacth = false;
-
-    private TableServiceContext() {
-        values = Maps.newHashMap();
-    }
-
-
-    @Resource
-    private RedisService redisService;
-
-    public static TableServiceContext createFrom(BaseTableDTO baseTableDTO) {
-        TableServiceContext result = new TableServiceContext();
-        String tableName = baseTableDTO.getTable();
-        if (StringUtils.isEmpty(tableName)) {
-            throw new IllegalArgumentException("表名参数不能为空");
-        }
-
-        //从redis中获取表信息
-        RedisService redisService = SpringUtils.getBean(RedisService.class);
-        result.table = redisService.getCacheObject(RedisKey.TABLE_INFO + tableName);
-
-        if (result.table == null) {
-            throw new IllegalArgumentException(tableName + "表信息不存在");
-        }
-
-        result.realTableName = result.table.getTableName();
-        if (Strings.isNullOrEmpty(result.realTableName)) {
-            throw new IllegalArgumentException(tableName + "表名不存在");
-        }
-
-        // 前台传过来的数据
-        JSONObject fixedData = baseTableDTO.getFixedData();
-        //删除
-        Boolean isdelmtable = baseTableDTO.getDelMTable();
-        JSONObject tabItem = baseTableDTO.getTabItem();
-        if (isdelmtable != null) {
-            result.isDelMtable = isdelmtable;
-        }
-
-        // 获取objid判断 新增或更新
-        Long objid = baseTableDTO.getObjId();
-        MainTableRecord mainRowData = new MainTableRecord(result, result.table, objid, fixedData, tabItem);
-        result.rows = Lists.newArrayList();
-        result.rows.add(mainRowData);
-
-        return result;
-    }
-
-    public GenTable getTable() {
-        return table;
-    }
-
-    public void setTable(GenTable table) {
-        this.table = table;
-    }
-
-    public String getRealTableName() {
-        return realTableName;
-    }
-
-    public void setRealTableName(String realTableName) {
-        this.realTableName = realTableName;
-    }
-
-    public String getActionName() {
-        return actionName;
-    }
-
-    public void setActionName(String actionName) {
-        this.actionName = actionName;
-    }
-
-    public Timestamp getCurrentTime() {
-        return currentTime;
-    }
-
-    public void setCurrentTime(Timestamp currentTime) {
-        this.currentTime = currentTime;
-    }
-
-    public List<MainTableRecord> getRows() {
-        return rows;
-    }
-
-    public void setRows(List<MainTableRecord> rows) {
-        this.rows = rows;
-    }
-
-    public Map<String, Object> getValues() {
-        return values;
-    }
-
-    public void setValues(Map<String, Object> values) {
-        this.values = values;
-    }
-
-    public boolean isDelMtable() {
-        return isDelMtable;
-    }
-
-    public void setDelMtable(boolean delMtable) {
-        isDelMtable = delMtable;
-    }
-
-    public boolean isInsertBacth() {
-        return isInsertBacth;
-    }
-
-    public void setInsertBacth(boolean insertBacth) {
-        isInsertBacth = insertBacth;
-    }
-//
-//    public Collection<Filter> getFilters() {
-//        return filters;
-//    }
-//
-//    public void setFilters(Collection<Filter> filters) {
-//        this.filters = filters;
-//    }
-}

+ 1 - 1
boman-web-core/src/main/java/com/boman/web/core/mapper/StandardlyMapper.java

@@ -107,7 +107,7 @@ public interface StandardlyMapper {
      * @param id        主键值
      * @return com.alibaba.fastjson.JSONObject
      */
-    @Select("select * from ${tableName} where ${pkName} = #{id}")
+    @Select("select * from ${tableName} where ${pkName} = #{id} limit 1")
     JSONObject selectById(@Param("tableName") String tableName
             , @Param("pkName") String pkName, @Param("id") Long id);
 

+ 6 - 9
boman-web-core/src/main/java/com/boman/web/core/service/TableServiceCmdService.java

@@ -376,30 +376,27 @@ public class TableServiceCmdService {
      * @return com.boman.common.core.web.domain.AjaxResult
      */
     public AjaxResult getObject(BaseTableSaveDTO dto) {
-        requireNonNull(dto.getTable());
+        String tableName = requireNonNull(dto.getTable());
 
-        GenTable genTable = getTableFromRedisByTableName(RedisKey.TABLE_INFO, dto.getTable());
+        GenTable genTable = getTableFromRedisByTableName(RedisKey.TABLE_INFO, tableName);
         String pkName = IdUtils.getPkName(genTable.getColumns());
         JSONObject fixedData = dto.getFixedData();
-        fixedData = ifNullSetEmpty(fixedData);
         Long id = fixedData.getLong(FormDataConstant.ID);
         requireNonNull(id);
         List<GenTableColumn> columns = genTable.getColumns();
         // id = -1时,查询该表单对应的字段名称
         if (ltZero(id)) {
-            return getByTableName(genTable.getTableName(), columns);
+            return getByTableName(tableName, columns);
         }
 
         // 默认查所有字段,不支持自定义
-        JSONObject json = selectService.selectById(genTable.getTableName(), pkName, id);
-        // name=username, value=zhangsan, type=input, types=[{},{}]
+        JSONObject json = selectService.selectById(tableName, pkName, id);
 
         handler(Collections.singletonList(json), columns);
 
-        List<JSONObject> list = packSingleObj(json, columns);
         JSONObject result = new JSONObject();
-        result.put(SHOW_DATA, list);
-        result.put(BUTTON_LIST, getButton(genTable.getTableName()));
+        result.put(SHOW_DATA, packSingleObj(json, columns));
+        result.put(BUTTON_LIST, getButton(tableName));
         return AjaxResult.success(result);
     }
 

+ 13 - 5
boman-web-core/src/main/java/com/boman/web/core/service/save/BaseSaveServiceImpl.java

@@ -5,6 +5,7 @@ import com.boman.common.core.constant.CacheConstants;
 import com.boman.common.core.utils.SecurityUtils;
 import com.boman.common.core.utils.obj.ObjectUtils;
 import com.boman.common.redis.service.RedisService;
+import com.boman.common.security.service.TokenService;
 import com.boman.gen.domain.GenTableColumn;
 import com.boman.system.api.model.LoginUser;
 import com.boman.web.core.constant.FormDataConstant;
@@ -57,7 +58,7 @@ public class BaseSaveServiceImpl implements IBaseSaveService {
 
         // 默认创建人和创建时间是都有的
         commitData.put(FormDataConstant.CREATE_TIME.toUpperCase(), currentTime);
-        commitData.put(FormDataConstant.CREATE_BY.toUpperCase(), "张三");
+        commitData.put(FormDataConstant.CREATE_BY.toUpperCase(), SecurityUtils.getUserId());
         int ret = mapper.insert(tableName, commitData);
         if (ret > 0) {
             LOGGER.info("保存成功,保存的数据为:{}", commitData);
@@ -68,19 +69,26 @@ public class BaseSaveServiceImpl implements IBaseSaveService {
         return RowResult.error("失败");
     }
 
-    private void handlerDefaultValue(JSONObject jsonObject, List<GenTableColumn> columns) {
+    /**
+     * 功能描述: 新增的时候处理默认值, 从redis中拿到存在token中的userEnv对象,根据数据库中存的默认值的key,和userEnv中的key做比对,
+     * 从中取出作为字段的默认值,redis中存userEnv的位置:{@link TokenService#packUserEnv(com.boman.system.api.model.LoginUser)}
+     *
+     * @param commitData commitData
+     * @param columns 所有的列
+     */
+    private void handlerDefaultValue(JSONObject commitData, List<GenTableColumn> columns) {
         String token = SecurityUtils.getToken();
         LoginUser loginUser = redisService.getCacheObject(CacheConstants.LOGIN_TOKEN_KEY + token);
         JSONObject userEnv = loginUser.getUserEnv();
         for (GenTableColumn column : columns) {
             // 有默认值的列, 并且前台传过来的key中不包含
             if (ObjectUtils.isNotEmpty(column.getDefaultValue())
-                    && !jsonObject.containsKey(column.getColumnName().toLowerCase())
-                    && !jsonObject.containsKey(column.getColumnName().toUpperCase())) {
+                    && !commitData.containsKey(column.getColumnName().toLowerCase())
+                    && !commitData.containsKey(column.getColumnName().toUpperCase())) {
                 String dbDefaultValue = column.getDefaultValue();
                 String defaultValue = ColumnUtils.parseVariables(dbDefaultValue);
                 String variables = dbDefaultValue.equalsIgnoreCase(defaultValue) ? dbDefaultValue : userEnv.getString(defaultValue);
-                jsonObject.put(column.getColumnName(), variables);
+                commitData.put(column.getColumnName(), variables);
             }
         }
     }

+ 1 - 1
boman-web-core/src/main/java/com/boman/web/core/service/select/IBaseSelectService.java

@@ -62,7 +62,7 @@ public interface IBaseSelectService {
      * @param tableName 表名
      * @param pkName    主键名称
      * @param idList    主键值
-     * @param showData  需要展示的列
+     * @param showData  需要展示的列,若为空,查所有
      * @return com.alibaba.fastjson.JSONObject
      */
     List<JSONObject> selectByIdList(String tableName, String pkName, List<Long> idList, JSONArray showData);

+ 2 - 1
boman-web-core/src/main/java/com/boman/web/core/utils/ColumnUtils.java

@@ -2,6 +2,7 @@ package com.boman.web.core.utils;
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.boman.common.core.utils.SecurityUtils;
 import com.boman.gen.domain.GenTableColumn;
 import com.boman.web.core.constant.FormDataConstant;
 import com.google.common.collect.Lists;
@@ -31,7 +32,7 @@ public class ColumnUtils {
         for (GenTableColumn column : columns) {
             // 判断是否有修改人、修改时间
             if (FormDataConstant.UPDATE_BY.equalsIgnoreCase(column.getColumnName())) {
-                jsonObject.put(FormDataConstant.UPDATE_BY, "张三");
+                jsonObject.put(FormDataConstant.UPDATE_BY, SecurityUtils.getUserId());
             }
             if (FormDataConstant.UPDATE_TIME.equalsIgnoreCase(column.getColumnName())) {
                 jsonObject.put(FormDataConstant.UPDATE_TIME, currentTime);