src/main/java/com/lf/server/config/InitConfig.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/lf/server/controller/all/BaseQueryController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/lf/server/helper/ClassHelper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/lf/server/helper/StringHelper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/lf/server/mapper/all/BasicMapper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/lf/server/mapper/all/GeomBaseMapper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/lf/server/service/all/BaseQueryService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/lf/server/service/show/LocateService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/lf/server/config/InitConfig.java
@@ -10,7 +10,6 @@ import com.lf.server.entity.bd.DlgAgnpEntity; import com.lf.server.helper.AesHelper; import com.lf.server.helper.PathHelper; import com.lf.server.helper.StringHelper; import com.lf.server.mapper.bd.DlgAgnpMapper; import com.lf.server.service.all.PermsService; import com.lf.server.service.sys.ArgsService; @@ -82,8 +81,10 @@ } private void testMybatisPlus() { List<String> list0 = dlgAgnpMapper.selectFuzzy("bd.dlg_agnp", "name", "%å¿%"); DlgAgnpEntity dlg = dlgAgnpMapper.selectById(1); String wkt = dlgAgnpMapper.selectWktById(2); String wkt = dlgAgnpMapper.selectWktById("bd.dlg_agnp", 2); Map<String, Object> map = new HashMap<String, Object>(3); map.put("gid", 2); src/main/java/com/lf/server/controller/all/BaseQueryController.java
@@ -1,7 +1,6 @@ package com.lf.server.controller.all; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.OrderItem; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -9,6 +8,7 @@ import com.lf.server.entity.all.ResponseMsg; import com.lf.server.helper.AesHelper; import com.lf.server.helper.StringHelper; import com.lf.server.mapper.all.BasicMapper; import com.lf.server.mapper.all.GeomBaseMapper; import com.lf.server.service.all.BaseQueryService; import io.swagger.annotations.ApiImplicitParam; @@ -38,13 +38,13 @@ @GetMapping({"/selectCount"}) public ResponseMsg<Long> selectCount(String name, String filter, String wkt, Integer srid) { try { BaseMapper baseMapper = baseQueryService.getBaseMapper(name); BasicMapper baseMapper = baseQueryService.getBasicMapper(name); if (baseMapper == null) { return fail("æ¥è¯¢å¯¹è±¡ä¸åå¨", null); } QueryWrapper wrapper = new QueryWrapper(); baseQueryService.addFilterWrapper(baseMapper, wrapper, filter); baseQueryService.addFilterWrapper(wrapper, filter); baseQueryService.addGeomWrapper(baseMapper, wrapper, wkt, srid); long count = baseMapper.selectCount(wrapper); @@ -68,13 +68,13 @@ @GetMapping(value = "/selectByPage") public ResponseMsg<List<Object>> selectByPage(String name, String filter, String wkt, Integer srid, Integer pageIndex, Integer pageSize) { try { BaseMapper baseMapper = baseQueryService.getBaseMapper(name); BasicMapper baseMapper = baseQueryService.getBasicMapper(name); if (baseMapper == null) { return fail("æ¥è¯¢å¯¹è±¡ä¸åå¨", null); } QueryWrapper wrapper = new QueryWrapper(); baseQueryService.addFilterWrapper(baseMapper, wrapper, filter); baseQueryService.addFilterWrapper(wrapper, filter); baseQueryService.addGeomWrapper(baseMapper, wrapper, wkt, srid); Page<Object> page = new Page<>(pageIndex, pageSize); @@ -101,7 +101,12 @@ return fail("æ¥è¯¢å¯¹è±¡ä¸åå¨", null); } String wkt = baseMapper.selectWktById(gid); String tab = baseQueryService.getTabName(baseMapper); if (StringHelper.isNull(tab)) { return fail("æ¥è¯¢å¯¹è±¡ä¸åå¨", null); } String wkt = baseMapper.selectWktById(tab, gid); if (!StringHelper.isEmpty(wkt)) { wkt = AesHelper.encrypt(wkt); } @@ -111,4 +116,36 @@ return fail(ex.getMessage(), null); } } @SysLog() @ApiOperation(value = "æ¨¡ç³æç´¢") @ApiImplicitParams({ @ApiImplicitParam(name = "name", value = "æ å°åç§°", dataType = "String", paramType = "query", example = "dlgAgnp"), @ApiImplicitParam(name = "field", value = "åæ®µ", dataType = "String", paramType = "query", example = "name"), @ApiImplicitParam(name = "value", value = "å¼", dataType = "String", paramType = "query", example = "'å¿'") }) @GetMapping(value = "/selectFuzzy") public ResponseMsg<List<String>> selectFuzzy(String name, String field, String value) { try { BasicMapper baseMapper = baseQueryService.getBasicMapper(name); if (baseMapper == null) { return fail("æ¥è¯¢å¯¹è±¡ä¸åå¨", null); } String tab = baseQueryService.getTabName(baseMapper); if (StringHelper.isNull(tab)) { return fail("æ¥è¯¢å¯¹è±¡ä¸åå¨", null); } if (StringHelper.isEmpty(field) || StringHelper.isSqlInjection(field)) { return fail("æ¥è¯¢åæ®µä¸æ£ç¡®", null); } value = value == null ? StringHelper.getLikeStr("") : StringHelper.getLikeStr(value.replace("'", "")); List<String> rs = baseMapper.selectFuzzy(tab, field, value); return success(rs); } catch (Exception ex) { return fail(ex.getMessage(), null); } } } src/main/java/com/lf/server/helper/ClassHelper.java
@@ -35,7 +35,7 @@ * @param baseMapper ç¶Mapper * @return å®ä½ç±» */ public static Object createInstanceByBaseMapper(BaseMapper baseMapper) { public static Object createEntityByMapper(BaseMapper baseMapper) { String className = baseMapper.getClass().getName().replace(".mapper", ".entity").replace("Mapper", "Entity"); return createInstance(className); src/main/java/com/lf/server/helper/StringHelper.java
@@ -116,8 +116,8 @@ /** * è·å like å符串 */ public static String getLikeStr(String name) { return StringHelper.isEmpty(name) ? null : "%" + name.trim() + "%"; public static String getLikeStr(String str) { return StringHelper.isEmpty(str) ? null : "%" + str.trim() + "%"; } /** src/main/java/com/lf/server/mapper/all/BasicMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,25 @@ package com.lf.server.mapper.all; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import java.util.List; /** * åºç¡Mapper * @author WWW * @param <T> æ³å */ public interface BasicMapper<T> extends BaseMapper<T> { /** * æ¨¡ç³æç´¢ * * @param tab 表å * @param field åæ®µ * @param value å¼ * @return ç»æå表 */ @Select("select ${field} from ${tab} where ${field} like #{value} order by ${field} limit 10") public List<String> selectFuzzy(@Param("tab") String tab, @Param("field") String field, @Param("value") String value); } src/main/java/com/lf/server/mapper/all/GeomBaseMapper.java
@@ -1,21 +1,21 @@ package com.lf.server.mapper.all; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; /** * 空é´åºç¡Mapper * @author WWW * @param <T> * @param <T> æ³å */ public interface GeomBaseMapper<T> extends BaseMapper<T> { public interface GeomBaseMapper<T> extends BasicMapper<T> { /** * æ ¹æ®IDæ¥è¯¢WKT * * @param gid * @return * @param tab 表å * @param gid GID * @return WKT */ @Select("select st_astext(geom) geom from bd.dlg_agnp where gid = #{gid}") public String selectWktById(@Param("gid") Integer gid); @Select("select st_astext(geom) geom from ${tab} where gid = #{gid}") public String selectWktById(@Param("tab") String tab, @Param("gid") Integer gid); } src/main/java/com/lf/server/service/all/BaseQueryService.java
@@ -1,10 +1,10 @@ package com.lf.server.service.all; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.lf.server.helper.AesHelper; import com.lf.server.helper.ClassHelper; import com.lf.server.helper.StringHelper; import com.lf.server.mapper.all.BasicMapper; import com.lf.server.mapper.all.GeomBaseMapper; import org.springframework.stereotype.Service; @@ -20,17 +20,17 @@ * @param name Mapperå * @return BaseMapper */ public BaseMapper getBaseMapper(String name) { public BasicMapper getBasicMapper(String name) { if (StringHelper.isEmpty(name)) { return null; } Object obj = ClassHelper.getBean(name.trim() + "Mapper"); if (!(obj instanceof BaseMapper)) { if (!(obj instanceof BasicMapper)) { return null; } return (BaseMapper) obj; return (BasicMapper) obj; } /** @@ -55,11 +55,10 @@ /** * æ·»å è¿æ»¤æ¡ä»¶ * * @param baseMapper ç¶Mapper * @param wrapper QueryWrapper * @param filter åå§è¿æ»¤æ¡ä»¶å符串 * @param wrapper QueryWrapper * @param filter åå§è¿æ»¤æ¡ä»¶å符串 */ public void addFilterWrapper(BaseMapper baseMapper, QueryWrapper wrapper, String filter) { public void addFilterWrapper(QueryWrapper wrapper, String filter) { if (StringHelper.isEmpty(filter)) { return; } @@ -140,16 +139,31 @@ /** * æ·»å 空é´è¿æ»¤æ¡ä»¶ * * @param baseMapper ç¶Mapper * @param wrapper QueryWrapper * @param wkt WKTï¼èåææ¬ï¼ * @param srid 空é´å¼ç¨æ è¯ç¬¦ * @param basicMapper ç¶Mapper * @param wrapper QueryWrapper * @param wkt WKTï¼èåææ¬ï¼ * @param srid 空é´å¼ç¨æ è¯ç¬¦ * @throws Exception å¼å¸¸ */ public void addGeomWrapper(BaseMapper baseMapper, QueryWrapper wrapper, String wkt, Integer srid) throws Exception { if (baseMapper instanceof GeomBaseMapper && !StringHelper.isEmpty(wkt) && srid != null) { public void addGeomWrapper(BasicMapper basicMapper, QueryWrapper wrapper, String wkt, Integer srid) throws Exception { if (basicMapper instanceof GeomBaseMapper && !StringHelper.isEmpty(wkt) && srid != null) { wkt = AesHelper.decrypt(wkt); wrapper.apply(String.format("ST_Intersects(geom, ST_PolygonFromText('%s', %d))", wkt, srid)); } } /** * æ ¹æ®Mapperè·å表å * * @param basicMapper Mapper * @return 表å */ public String getTabName(BasicMapper basicMapper) { Object obj = ClassHelper.createEntityByMapper(basicMapper); if (obj == null) { return null; } return null; } } src/main/java/com/lf/server/service/show/LocateService.java
@@ -6,6 +6,7 @@ import com.lf.server.entity.bd.DlgAgnpEntity; import com.lf.server.helper.StringHelper; import com.lf.server.mapper.bd.DlgAgnpMapper; import com.lf.server.service.all.BaseQueryService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -17,6 +18,9 @@ public class LocateService { @Autowired DlgAgnpMapper dlgAgnpMapper; @Autowired BaseQueryService baseQueryService; public Page<DlgAgnpEntity> selectAddrByPage(String name, Integer pageSize, Integer pageIndex) { Page<DlgAgnpEntity> paging = new Page<>(pageIndex, pageSize); @@ -32,6 +36,11 @@ } public String selectWktById(Integer id) { return dlgAgnpMapper.selectWktById(id); String tab = baseQueryService.getTabName(dlgAgnpMapper); if (StringHelper.isNull(tab)) { return null; } return dlgAgnpMapper.selectWktById(tab, id); } }