From 583b5864d5e09cd76fcb71c8fd0491d09d54d0d7 Mon Sep 17 00:00:00 2001 From: taixingyiji Date: Fri, 28 Mar 2025 18:34:20 +0800 Subject: [PATCH] feat: add highgo support --- hcframe-parent/hcframe-base/pom.xml | 9 +- .../module/data/module/BaseMapperImpl.java | 18 +++- .../base/module/data/module/Condition.java | 18 ++-- .../module/data/module/SelectCondition.java | 2 +- .../module/datasource/utils/DataUnit.java | 1 + .../shiro/service/ShiroServiceImpl.java | 87 +++++++++++++------ 6 files changed, 93 insertions(+), 42 deletions(-) diff --git a/hcframe-parent/hcframe-base/pom.xml b/hcframe-parent/hcframe-base/pom.xml index d4a7b19..555fb3a 100644 --- a/hcframe-parent/hcframe-base/pom.xml +++ b/hcframe-parent/hcframe-base/pom.xml @@ -9,7 +9,7 @@ 4.0.0 hcframe-base - 1.2.3-SNAPSHOT + 1.2.4-SNAPSHOT 8 @@ -48,6 +48,13 @@ + + + + com.highgo + HgdbJdbc + 6.2.3 + org.apache.logging.log4j log4j-api diff --git a/hcframe-parent/hcframe-base/src/main/java/com/taixingyiji/base/module/data/module/BaseMapperImpl.java b/hcframe-parent/hcframe-base/src/main/java/com/taixingyiji/base/module/data/module/BaseMapperImpl.java index 2d5b8e2..641827b 100644 --- a/hcframe-parent/hcframe-base/src/main/java/com/taixingyiji/base/module/data/module/BaseMapperImpl.java +++ b/hcframe-parent/hcframe-base/src/main/java/com/taixingyiji/base/module/data/module/BaseMapperImpl.java @@ -58,6 +58,9 @@ public class BaseMapperImpl implements BaseMapper { if (dataType.contains("sqlite")) { datasourceConfig.setCommonType(DataUnit.SQLITE); } + if(dataType.contains("highgo")) { + datasourceConfig.setCommonType(DataUnit.HANGO); + } } JudgesNull(dataMap.getData(), "data can not be null!"); JudgesNull(dataMap.getTableName(), "tableName can not be null!"); @@ -65,7 +68,7 @@ public class BaseMapperImpl implements BaseMapper { dataMap.setPkName("ID"); } int i; - if (DataUnit.ORACLE.equals(datasourceConfig.getCommonType()) || DataUnit.DAMENG.equals(datasourceConfig.getCommonType())) { + if (DataUnit.ORACLE.equals(datasourceConfig.getCommonType()) || DataUnit.DAMENG.equals(datasourceConfig.getCommonType()) || DataUnit.HANGO.equals(datasourceConfig.getCommonType())) { if (org.springframework.util.StringUtils.isEmpty(dataMap.get(dataMap.getPkName()))) { Object id = getSequence(dataMap.getTableName(), dataMap.getPkName()); dataMap.toBuilder().add(dataMap.getPkName(), id); @@ -82,10 +85,14 @@ public class BaseMapperImpl implements BaseMapper { return i; } + private String formatTable(String tableName) { + return "`"+tableName+"`"; + } @Override public int save(String tableName, String pkName, Map data) { JudgesNull(tableName, "data can not be null!"); JudgesNull(data, "tableName can not be null!"); + tableName = formatTable(tableName); String key; DatasourceConfig datasourceConfig = new DatasourceConfig(); try { @@ -132,6 +139,7 @@ public class BaseMapperImpl implements BaseMapper { private int updateByWhere(Condition condition, String tableName, Map data) { Map params = condition.getParamMap(); + tableName = formatTable(tableName); params.put("tableName", tableName); params.put("info", data); params.put("sql", condition.getSql()); @@ -244,6 +252,7 @@ public class BaseMapperImpl implements BaseMapper { private int deleteByWhere(Condition condition, String tableName) { Map params = condition.getParamMap(); + tableName = formatTable(tableName); params.put("tableName", tableName); params.put("sql", condition.getSql()); return sqlSessionTemplate.delete(TABLE_MAPPER_PACKAGE + "deleteByWhere", params); @@ -330,6 +339,7 @@ public class BaseMapperImpl implements BaseMapper { @Override public List> selectAll(String tableName) { JudgesNull(tableName, "tableName can not be null!"); + tableName = formatTable(tableName); return tableMapper.useSql(SelectCondition.builder().tableName(tableName).build().getSql()); } @@ -734,7 +744,7 @@ public class BaseMapperImpl implements BaseMapper { String key = entry.getKey(); Object value = entry.getValue(); if (!key.equals(pkName) && value != null && !(value instanceof String && ((String) value).isEmpty())) { - sql.append(key).append(" = #{item").append(index).append("_").append(key).append("}, "); + sql.append("`").append(key).append("`").append(" = #{item").append(index).append("_").append(key).append("}, "); paramMap.put("item" + index + "_" + key, value); hasSetClause = true; } @@ -746,7 +756,7 @@ public class BaseMapperImpl implements BaseMapper { // 如果没有要更新的字段,跳过这条记录 continue; } - sql.append(" WHERE ").append(pkName).append(" = #{item").append(index).append("_").append(pkName).append("};"); + sql.append(" WHERE ").append("`").append(pkName).append("`").append(" = #{item").append(index).append("_").append(pkName).append("};"); paramMap.put("item" + index + "_" + pkName, item.get(pkName)); index++; } @@ -769,7 +779,7 @@ public class BaseMapperImpl implements BaseMapper { try { id = tableMapper.getSequence(tableName); } catch (Exception e) { - MyPageHelper.start(WebPageInfo.builder().pageNum(1).pageSize(1).order(WebPageInfo.DESC).sortField(pkName).build()); + MyPageHelper.noCount(WebPageInfo.builder().pageNum(1).pageSize(1).order(WebPageInfo.DESC).sortField(pkName).build()); DataMap dataMap = DataMap.builder().tableName(tableName).pkName(pkName).fields(pkName).build(); Condition condition = Condition.creatCriteria(dataMap).build(); Map map = selectOneByCondition(condition); diff --git a/hcframe-parent/hcframe-base/src/main/java/com/taixingyiji/base/module/data/module/Condition.java b/hcframe-parent/hcframe-base/src/main/java/com/taixingyiji/base/module/data/module/Condition.java index f6fdec4..910b2a1 100644 --- a/hcframe-parent/hcframe-base/src/main/java/com/taixingyiji/base/module/data/module/Condition.java +++ b/hcframe-parent/hcframe-base/src/main/java/com/taixingyiji/base/module/data/module/Condition.java @@ -273,7 +273,7 @@ public class Condition implements Serializable { value = value.toString().replaceAll("\"", ""); } String sqlKey = "item_" + IdUtil.fastUUID(); - this.conditionSql += " " + key + EQUAL + "#{" + sqlKey + "}"; + this.conditionSql += " `" + key +"` "+ EQUAL + "#{" + sqlKey + "}"; this.paramMap.put(sqlKey, value); return this; } @@ -290,7 +290,7 @@ public class Condition implements Serializable { public ConditionBuilder like(String key, Object value) { sqlCheckLike(value); - this.conditionSql += " " + key + " " + LIKE + " '" + value + "'"; + this.conditionSql += " `" + key +"` "+ " " + LIKE + " '" + value + "'"; return this; } @@ -318,7 +318,7 @@ public class Condition implements Serializable { i++; } inStr.append(R_CURVES); - this.conditionSql += " " + key + " " + IN + " " + inStr.toString(); + this.conditionSql += " `" + key +"` "+ " " + IN + " " + inStr.toString(); return this; } @@ -337,7 +337,7 @@ public class Condition implements Serializable { String sqlKey2 = "item_" + IdUtil.fastUUID(); this.paramMap.put(sqlKey, start); this.paramMap.put(sqlKey2, end); - this.conditionSql += " " + key + " " + BETWEEN + " #{" + sqlKey + "} " + AND + " #{" + sqlKey2 + "} "; + this.conditionSql += " `" + key +"` "+ " " + BETWEEN + " #{" + sqlKey + "} " + AND + " #{" + sqlKey2 + "} "; return this; } @@ -354,7 +354,7 @@ public class Condition implements Serializable { public ConditionBuilder lt(String key, Object value) { String sqlKey = "item_" + IdUtil.fastUUID(); this.paramMap.put(sqlKey, value); - this.conditionSql += " " + key + " " + LT + " #{" + sqlKey + "} "; + this.conditionSql += " `" + key +"` "+ " " + LT + " #{" + sqlKey + "} "; return this; } @@ -376,7 +376,7 @@ public class Condition implements Serializable { public ConditionBuilder notEqual(String key, Object value) { String sqlKey = "item_" + IdUtil.fastUUID(); this.paramMap.put(sqlKey, value); - this.conditionSql += " " + key + " " + NOT_EQUAL + " #{" + sqlKey + "} "; + this.conditionSql += " `" + key +"` "+ " " + NOT_EQUAL + " #{" + sqlKey + "} "; return this; } @@ -393,7 +393,7 @@ public class Condition implements Serializable { public ConditionBuilder gt(String key, Object value) { String sqlKey = "item_" + IdUtil.fastUUID(); this.paramMap.put(sqlKey, value); - this.conditionSql += " " + key + " " + GT + " #{" + sqlKey + "} "; + this.conditionSql += " `" + key +"` "+ " " + GT + " #{" + sqlKey + "} "; return this; } @@ -410,7 +410,7 @@ public class Condition implements Serializable { public ConditionBuilder lte(String key, Object value) { String sqlKey = "item_" + IdUtil.fastUUID(); this.paramMap.put(sqlKey, value); - this.conditionSql += " " + key + " " + LTE + " #{" + value.toString() + "} "; + this.conditionSql += " `" + key +"` "+ " " + LTE + " #{" + value.toString() + "} "; return this; } @@ -427,7 +427,7 @@ public class Condition implements Serializable { public ConditionBuilder gte(String key, Object value) { String sqlKey = "item_" + IdUtil.fastUUID(); this.paramMap.put(sqlKey, value); - this.conditionSql += " " + key + " " + GTE + " #{" + value.toString() + "} "; + this.conditionSql += " `" + key +"` "+ " " + GTE + " #{" + value.toString() + "} "; return this; } diff --git a/hcframe-parent/hcframe-base/src/main/java/com/taixingyiji/base/module/data/module/SelectCondition.java b/hcframe-parent/hcframe-base/src/main/java/com/taixingyiji/base/module/data/module/SelectCondition.java index 9badd81..3e55e30 100644 --- a/hcframe-parent/hcframe-base/src/main/java/com/taixingyiji/base/module/data/module/SelectCondition.java +++ b/hcframe-parent/hcframe-base/src/main/java/com/taixingyiji/base/module/data/module/SelectCondition.java @@ -113,7 +113,7 @@ public class SelectCondition implements Serializable { } public SelectBuilder tableName(String tableName) { - this.tableName = tableName; + this.tableName = "`"+tableName+"`"; return this; } diff --git a/hcframe-parent/hcframe-base/src/main/java/com/taixingyiji/base/module/datasource/utils/DataUnit.java b/hcframe-parent/hcframe-base/src/main/java/com/taixingyiji/base/module/datasource/utils/DataUnit.java index 43f28a1..3d3f539 100644 --- a/hcframe-parent/hcframe-base/src/main/java/com/taixingyiji/base/module/datasource/utils/DataUnit.java +++ b/hcframe-parent/hcframe-base/src/main/java/com/taixingyiji/base/module/datasource/utils/DataUnit.java @@ -12,6 +12,7 @@ public class DataUnit { public static final String MYSQL = "Mysql"; public static final String ORACLE = "Oracle"; public static final String DAMENG = "Dameng"; + public static final String HANGO= "HanGO"; public static final String MASTERBEAN = "masterDataSource"; public static final String DYNAMICBEAN = "dynamicDataSource"; public static final String PASSWORD = "******"; diff --git a/hcframe-parent/hcframe-base/src/main/java/com/taixingyiji/base/module/shiro/service/ShiroServiceImpl.java b/hcframe-parent/hcframe-base/src/main/java/com/taixingyiji/base/module/shiro/service/ShiroServiceImpl.java index 7311084..34d8c9e 100644 --- a/hcframe-parent/hcframe-base/src/main/java/com/taixingyiji/base/module/shiro/service/ShiroServiceImpl.java +++ b/hcframe-parent/hcframe-base/src/main/java/com/taixingyiji/base/module/shiro/service/ShiroServiceImpl.java @@ -3,6 +3,9 @@ package com.taixingyiji.base.module.shiro.service; import com.taixingyiji.base.common.ResultVO; import com.taixingyiji.base.common.ServiceException; import com.taixingyiji.base.common.config.FrameConfig; +import com.taixingyiji.base.module.data.exception.SqlException; +import com.taixingyiji.base.module.data.module.BaseMapper; +import com.taixingyiji.base.module.data.module.Condition; import com.taixingyiji.base.module.shiro.dao.FtTokenDao; import com.taixingyiji.base.module.shiro.FtToken; import com.taixingyiji.base.common.utils.TokenProccessor; @@ -35,7 +38,8 @@ public class ShiroServiceImpl implements ShiroService { @Resource FtTokenDao tokenMapper; - + @Resource + BaseMapper baseMapper; @Resource RedisUtil redisUtil; @@ -52,10 +56,11 @@ public class ShiroServiceImpl implements ShiroService { Map result = new HashMap<>(); FtToken tokenEntity = new FtToken(); + Map resultEntity = new HashMap<>(); Date now = new Date(); // 是否使用redis存入token if (isRedisLogin) { - boolean flag = redisUtil.set("session:"+userId, token, EXPIRE / 1000); + boolean flag = redisUtil.set("session:" + userId, token, EXPIRE / 1000); if (flag) { Map map = new HashMap<>(2); map.put("userId", userId); @@ -72,25 +77,42 @@ public class ShiroServiceImpl implements ShiroService { throw new ServiceException("登陆失败"); } } else { - tokenEntity.setUserId(userId); +// tokenEntity.setUserId(userId); //判断是否生成过token - tokenEntity = tokenMapper.selectOne(tokenEntity); - if (tokenEntity == null) { - tokenEntity = new FtToken(); - tokenEntity.setTokenId(UUID.randomUUID().toString() + System.currentTimeMillis()); - tokenEntity.setUserId(userId); - tokenEntity.setToken(token); - tokenEntity.setUpdateTime(now); - tokenEntity.setExpireTime(expireTime); - //保存token - tokenMapper.insertSelective(tokenEntity); + Condition condition = Condition.creatCriteria().andEqual("USER_ID", userId).build(); + resultEntity = baseMapper.selectOneByCondition("FT_TOKEN", condition); + if (resultEntity == null || resultEntity.isEmpty()) { + resultEntity = new HashMap<>(); + resultEntity.put("TOKEN_ID", UUID.randomUUID().toString() + System.currentTimeMillis()); + resultEntity.put("USER_ID", userId); + resultEntity.put("TOKEN", token); + resultEntity.put("UPDATE_TIME", now); + resultEntity.put("EXPIRE_TIME", expireTime); + baseMapper.save("FT_TOKEN", "TOKEN_ID", resultEntity); } else { - tokenEntity.setToken(token); - tokenEntity.setUpdateTime(now); - tokenEntity.setExpireTime(expireTime); - //更新token - int i = tokenMapper.updateByPrimaryKey(tokenEntity); + resultEntity.put("TOKEN", token); + resultEntity.put("UPDATE_TIME", now); + resultEntity.put("EXPIRE_TIME", expireTime); + int i = baseMapper.updateByPk("FT_TOKEN", "TOKEN_ID", resultEntity); + SqlException.base(i, "登录失败"); } +// tokenEntity = tokenMapper.selectOne(tokenEntity); +// if (tokenEntity == null) { +// tokenEntity = new FtToken(); +// tokenEntity.setTokenId(UUID.randomUUID().toString() + System.currentTimeMillis()); +// tokenEntity.setUserId(userId); +// tokenEntity.setToken(token); +// tokenEntity.setUpdateTime(now); +// tokenEntity.setExpireTime(expireTime); +// //保存token +// tokenMapper.insertSelective(tokenEntity); +// } else { +// tokenEntity.setToken(token); +// tokenEntity.setUpdateTime(now); +// tokenEntity.setExpireTime(expireTime); +// //更新token +// int i = tokenMapper.updateByPrimaryKey(tokenEntity); +// } } //返回token给前端 result.put("token", token); @@ -104,8 +126,8 @@ public class ShiroServiceImpl implements ShiroService { // Map map = (Map) redisUtil.get("tokenSession:"+accessToken); String userId = (String) redisUtil.hget("tokenSession:" + accessToken, "userId"); // String userId = (String) map.get("userId"); - redisUtil.del("tokenSession:"+accessToken); - redisUtil.del("session:"+userId); + redisUtil.del("tokenSession:" + accessToken); + redisUtil.del("session:" + userId); return ResultVO.getSuccess(); } else { //生成一个token @@ -113,11 +135,15 @@ public class ShiroServiceImpl implements ShiroService { //生成一个token String token = tokenProccessor.makeToken(); //修改token - FtToken tokenEntity = new FtToken(); - tokenEntity.setToken(token); - Example example = new Example(FtToken.class); - example.createCriteria().andEqualTo("token", accessToken); - int i = tokenMapper.updateByExampleSelective(tokenEntity, example); +// FtToken tokenEntity = new FtToken(); +// tokenEntity.setToken(token); +// Example example = new Example(FtToken.class); +// example.createCriteria().andEqualTo("token", accessToken); +// int i = tokenMapper.updateByExampleSelective(tokenEntity, example); + Map resultEntity = new HashMap<>(); + resultEntity.put("TOKEN", token); + Condition condition = Condition.creatCriteria().andEqual("TOKEN", accessToken).build(); + int i = baseMapper.updateByCondition("FT_TOKEN", resultEntity, condition); if (i == 1) { return ResultVO.getSuccess(); } else { @@ -129,8 +155,15 @@ public class ShiroServiceImpl implements ShiroService { @Override public FtToken findByToken(String accessToken) { FtToken osToken = new FtToken(); - osToken.setToken(accessToken); - return tokenMapper.selectOne(osToken); +// osToken.setToken(accessToken); + Condition condition = Condition.creatCriteria().equal("TOKEN", accessToken).build(); + Map map = baseMapper.selectOneByCondition("FT_TOKEN", condition); + osToken.setToken((String) map.get("TOKEN")); + osToken.setTokenId((String) map.get("TOKEN_ID")); + osToken.setUserId((String) map.get("USER_ID")); + osToken.setExpireTime((Date) map.get("EXPIRE_TIME")); + osToken.setUpdateTime((Date) map.get("UPDATE_TIME")); + return osToken; } @Override