----------------------------------------------------------------------------------------------------
|
01.修改菜单、数据目录、单位的xls数据,编写递归查询SQL
|
02.登录时验证使用MD5+Salt密码
|
03.登录时的用户名和密码使用RSA加密、解密
|
04.WebSocket服务
|
05.资源实时监控(CPU信息+内存信息+在线用户+资源状态)
|
06.新建和修改用户密码时使用MD5加密
|
07.解决Swagger-UI无法传递Cookie信息
|
08.验证密码复杂度(8-20位包含字母、数字和特殊字符)
|
09.使用GDAL读取tif、shp、gdb文件
|
10.添加Mybatis Plus组件
|
11.解决表映射出错、根据ID查询失败、分页无效等问题
|
12.开发地名地址分页查询接口
|
13.开发上传shp文件读取第一条记录的WKT功能
|
14.解决上传文件时实体类映射异常
|
15.后台服务访问添加登录验证拦截器
|
16.开发切面日志功能
|
17.添加数据库监控功能(Druid Monitor)
|
18.设置下载文件的MIME类型
|
19.5分钟内密码错误5次拒绝登录
|
20.开发获取资源权限、菜单权限、操作权限接口
|
21.Redis服务配置强密码,并解决SpringBoot启动后无法访问
|
22.修改钻孔表的数据结构,添加新的字段
|
23.修改钻孔数据下载工具,更新新增字段的属性
|
24.身份认证拦截器添加黑白名单检查功能
|
25.开发自动生成Mybtis Plus代码小工具
|
26.批量生成基础数据表的实体类和Mapper类
|
27.修改所有的批量新增、删除、修改接口
|
28.开发大文件上传接口(commons-fileupload)
|
29.开发批量修改用户密码接口
|
30.开发上传Shp文件功能
|
31.使用Gdal读取Shp文件,读取后删除文件
|
32.修改字典表的数据结构,变更所有涉及的后台方法
|
33.开发值域表的操作接口
|
34.修改字典管理、值域管理的接口
|
35.对用户、菜单、角色、资源进行授权
|
36.添加查询角色、菜单、资源权限接口
|
37.开发根据实体名称动态查询表的记录数
|
38.开发根据实体名称进行动态分页查询
|
39.开发根据实体名称+字段+值模糊搜索前10条记录
|
40.开发根据实体名称查询空间表的WKT记录
|
41.搭建QGIS+Python开发环境
|
42.开发根据名称模糊搜索用户、单位的前10条记录
|
43.构建QGIS工程,使用Python运行工程
|
44.开发QGIS生成专题图功能
|
45.开发根据标绘JSON数据生成shp文件并下载
|
46.创建QGIS出图模板,开发根据模板出图功能
|
47.开发QGIS出图的C#服务 <
|
48.
|
49.
|
50.
|
-----------------------------------------------
|
.开发上传shp文件转换为JSON数据接口
|
.采用格式化参数运行Python程序
|
.开发.net服务调用Python程序,实现接口出图功能
|
.开发读取Excel表格功能
|
.开发根据实体名称动态读取Excel功能
|
.
|
----------------------------------------------------------------------------------------------------
|
java 调用gdal读取gdb数据,linux下java调用gdal:
|
https://blog.csdn.net/weixin_53853459/article/details/120954597
|
https://blog.csdn.net/qq_43444401/article/details/125649414
|
https://blog.csdn.net/qq_43961619/article/details/124627871
|
|
http://127.0.0.1:12316/dict/selectCount?tab=sys_user
|
http://127.0.0.1:12316/Dict/selectByPage?tab=sys_user&pageSize=10&pageIndex=0
|
|
http://127.0.0.1:12316/Style/selectCount?name=edp
|
http://127.0.0.1:12316/Style/selectByPage?name=edp&pageSize=10&pageIndex=0
|
|
http://127.0.0.1/lf/sg/login.html
|
http://127.0.0.1:12316/swagger-ui.html
|
http://192.168.20.106:12316/swagger-ui.html
|
http://localhost:12316/sign/toIndex
|
http://localhost:12316/sign/toLogin
|
http://127.0.0.1:12316/sign/toLogin?service=http://www.sina.com.cn
|
|
.gdb > HFCP+LRRL + TFCA
|
.shp > F5004_WT.shp + F5004_WL.shp + F5004.shp
|
------------------------------------------------------------------------------- 暂时未对应的Controller
|
data/DownloadController
|
data/MetaFileController
|
sys/AttachController
|
sys/MsgController
|
|
----------------------------------------------------------------------------------------------------
|
java和js实现aes加密解密:
|
https://blog.csdn.net/weixin_30663839/article/details/114049667
|
|
http://192.168.20.39:12306/
|
http://192.168.20.39:12315/
|
http://192.168.20.39:12316/
|
----------------------------------------------------------------------------------------------------
|
String path = System.getProperty("user.dir");
|
|
String uid = RsaHelper.decrypt(user.getUid());
|
String pwd = RsaHelper.decrypt(user.getPwd());
|
|
String p1="Admin@123";
|
boolean f = p1.equalsIgnoreCase("Some text here");
|
String p2= RsaHelper.encrypt(p1);
|
String p3= RsaHelper.decrypt(p2);
|
|
http://192.168.20.39:8088/cas/login,admin/Admin@123,postgres
|
|
String pwd = "Admin@123";
|
String md5 = "b37f70636f1164e86cc8796201737933f65af63918d8442b";
|
boolean f1 = Md5Helper.validatePassword(pwd, md5);
|
|
String md5Pwd = Md5Helper.reverse(Md5Helper.generate(pwd));
|
boolean f2 = Md5Helper.validatePassword(pwd, md5Pwd);
|
|
new String(Base64.getDecoder().decode(username));
|
|
下载:http://127.0.0.1:12316/style/download?guid=15deb4e6bf02db827e39521758520fd5
|
|
使用Commons FileUpLoad 文件上传功能:
|
https://www.itdaan.com/blog/2017/08/08/b2dbc1106fa7.html
|
Postgresql按天、周、月、年统计信息:
|
https://blog.csdn.net/qq_44663150/article/details/119681400
|
----------------------------------------------------------------------------------------------------
|
一、开发运行环境
|
JDK版本:1.8
|
maven版本:3.5
|
文件编码:UTF-8
|
|
二、技术框架说明
|
总体采用了前后端分离的技术方案,后台提供REST服务,前端使用MVVM框架做用户交互。
|
前后端可并行独立开发。
|
----------------------------------------------------------------------------------------------------
|
服务端:
|
核心框架:SpringBoot
|
持久层框架:Mybatis
|
安全框架:Shiro
|
缓存:redis
|
|
前端:
|
JS框架:vue.js
|
主页框架:adminLTE(基于Bootstrap)
|
表格插件:jqGrid
|
树形表格:tree-table
|
树形插件:ztree
|
弹窗组件:layer
|
表单校验:validator
|
|
private static final String SQLSERVER_URL = "jdbc:sqlserver://192.168.0.77\\ZKZS;databaseName=xian";
|
---------------------------------------------------------------------------------------------------- floatserver
|
http://localhost:12316/floatserver/checkout/license
|
String str = EntityUtils.toString(entity, "UTF-8");
|
java -jar C:\360\luyten054\luyten-0.5.4.jar
|
|
请求:
|
8dfb75298185cbcc4b2d485fdb4f25627f7aeb4dd41329076b5015586e4d56cf755f0dfd19be0d80e2573e0a2a22edca35215b390607b0ff68deab90c69296df60934315036bd8a64ee668a39502754b701be7534d0ca2e790161194d673d9454c44c570a1dbe604ac5952be731ca15809f9f4d43ad1b023f69981ce77abacc50e8e5217627eb236d5f6d114e00585d9a597f3a195b0b0c0ff8cf1e2445ca12e
|
响应:
|
8dfb75298185cbcc4b2d485fdb4f25627f7aeb4dd41329076b5015586e4d56cfe2c56f12cd9852c447904210117b41fe2672b24d7e82fd581ad5a0983b501b5bcbe97d65dbbe770dbdc4a98e80d2966a71ecd0041a5282283bff853d70caf7aed671bc9c9d4bedf6d1d0294394861af40f195d68a965d957d53c78aa50ada3afc65d1a526c54648e6e081e8f7f7ab1c31b9f75916170e638b0b9216d30204864afe3a7a1bc8a6563bf44daf6a29e27c19f798c4f82dbb904ea4aa4fcc87a82226d9bf3e891ecb97b94263064fec025e3aa7c440d7c0e8ed559b84ae2438ec0fc438444a03c992883170ecdde20e08552efcf9d584de469930b27c81f946548d5c6e63e815671182b03b5e6e622ddb10a3f6a35ad3f44ec247a3b2dee0e936020d48efb7abc2d2abfb555f61d54c85eca
|
|
{"machineId":"dba5c0f908f92fbdb6f0a3f58a5a3193","isRegistered":true,"registeredModules":[1,3,4,9,10,11,12,13,17,25,30,33,37],"modules":[{"id":1,"name":"wms","group":"GISServer","title":"动态地图服务"},{"id":3,"name":"tms","group":"GISServer","title":"瓦片地图服务"},{"id":9,"name":"wfs","group":"GISServer","title":"要素服务"},{"id":12,"name":"wns","group":"GISServer","title":"网络分析服务"},{"id":13,"name":"geocode","group":"GISServer","title":"地理编码服务"},{"id":17,"name":"wcs","group":"GISServer","title":"栅格服务"},{"id":25,"name":"c3d","group":"GISServer","title":"三维模型服务"},{"id":30,"name":"cts","group":"GISServer","title":"三维地形服务"},{"id":33,"name":"cimservice","group":"CIMSuite","title":"语义模型服务"},{"id":37,"name":"websdk","group":"WEBSDK","title":"WEBSDK"},{"id":38,"name":"pw","group":"Parallelworld","title":" Parallelworld"},{"id":50,"name":"ext","group":"extension","title":"extension"}],"expireDate":1668486201730,"isFloating":true,"floatServerIp":"192.168.20.106","floatServerPort":12316,"message":"OK","success":true}
|
|
{"id":"dba5c0f908f92fbdb6f0a3f58a5a3193","expireDate":"2023-01-17","localId":"192.168.20.106|E0-70-EA-AA-B6-43","availableNum":12,"time":1668394770458,"licenseCode":"78a82f0920de0f557f8177bec1e48601c4dc25e4054a00728e4314b56528d3a1632de5298edee38a65412277977a174fea5d91c452b19ef138dbc2ba089ba632"}
|
------------------------------------------------------------------------------------------------ 权限
|
管道基础大数据平台: 删除
|
综合展示\综合展示\查询: 下载、上传
|
综合展示\综合展示\标绘: 新增、修改、删除
|
综合展示\专题图: 统计
|
综合展示\资料馆: 下载
|
-------------------------------------------
|
数据管理\数据上传: 新增、修改、删除、上传、下载
|
数据管理\目录管理: 新增、修改、删除
|
数据管理\数据检索: 新增、修改、删除、上传、下载
|
数据管理\版本管理: 新增、修改、删除
|
数据管理\字典管理: 新增、修改、删除
|
数据管理\元数据管理: 新增、修改、删除、上传、下载
|
数据管理\样式管理: 新增、修改、删除、上传、下载
|
-------------------------------------------
|
运维管理\系统管理\菜单管理: 新增、修改、删除
|
运维管理\系统管理\用户管理: 新增、修改、删除
|
运维管理\系统管理\单位管理: 新增、修改、删除
|
运维管理\系统管理\资源管理: 新增、修改、删除、上传
|
运维管理\系统管理\角色管理: 新增、修改、删除
|
运维管理\系统管理\权限管理: 新增、修改、删除
|
|
运维管理\授权管理\用户角色授权:新增、修改、删除
|
运维管理\授权管理\菜单权限授权:新增、修改、删除
|
运维管理\授权管理\角色菜单授权:新增、修改、删除
|
运维管理\授权管理\角色资源授权:新增、修改、删除
|
|
运维管理\运维监控\令牌管理: 新增、修改、删除
|
运维管理\运维监控\黑白/名单: 新增、修改、删除
|
运维管理\系统配置: 修改
|
----------------------------------------------------------------------------------------------------
|
// 获取请求方式: GET
|
String getMethod()
|
|
// 获取虚拟目录(上下文目录):虚拟路径通过在application配置当中可以配置
|
// 配置:server.servlet.context-path=/aaa
|
String getContextPath()
|
|
// 获取Servlet路径:就是获取的controller当中配置的路径
|
String getServletPath()
|
|
/// 获取请求参数: id=3
|
// http://localhost:8080/aaa/test?id=3
|
String getQueryString()
|
|
// 获取请求URI:/servletDemo/demo1
|
// 上下文路径+controller当中配置的路径
|
String getRequestURI()
|
|
// 获取完整请求路径:http://localhost:8080/aaa/test
|
String getRequestURL()
|
|
// 获取协议及版本:HTTP/1.1
|
String getProtocol()
|
|
// 获取客户机的IP地址:192.168.0.0
|
String getRemoteAddr()
|
|
// 获取请求头数据,通过请求头名称获取值
|
String getHeader(String name)
|
|
// 获取所有请求头信息
|
Enumeration<String> getHeaderNames()
|
|
// 获取流对象-获取字符输入流,只能操作字符数据
|
BufferedReader getReader()
|
|
// 获取流对象-获取字节输入流,既能操作字节也能操作字符
|
ServletInputStream getInputStream()
|
|
// 获取请求参数通用方式(根据参数名称获取参数值) username=zhangsan
|
String getParameter(String name)
|
|
// 获取请求参数名称获取参数值的数组 hobby=xx&hobby=game
|
String[] getParameters(String name)
|
|
// 获取请求参数名称(与获取请求头方法类似)
|
Enumeration<String> getParameterNames()
|
|
// 获取所有参数的Map集合
|
Map<String,String> getParameterMap()
|
|
request.setCharacterEncoding("UTF-8");
|
|
// 通过request对象获取请求转发服务器:
|
RequestDispatcher getRequestDispatcher(String path);
|
|
// 使用==RequestDispatcher对象来进行转发
|
forward(ServlertRequest request,ServletResponse response);
|
|
//设置状态码
|
response.setStatus(304);
|
|
// 设置指定名称响应头的值,下面是导出的时候我们经常要设置的响应头,响应头当中还有文件的名称,也就是通过流下载文件的时候那个文件名称
|
response.setHeader("Content-Disposition", "attachment;filename=" + zipName);
|
|
// 1.字符输出流
|
PrintWriter getWriter()
|
|
// 2.字节输出流(一般导出就是将文件写到字节流,然后响应response)
|
ServletOutputStream getOutputStream()
|
|
// 注意:在同一个Servlet,二种输出流不能同时使用,产生互斥
|
// response提供了专门负责重定向的方法
|
response.sendRedirect("/项目地址/资源地址");
|
|
// 指定服务器响应中文的编码方式
|
response.setCharacterEncoding("GBK");
|
|
// 统一服务器和客户端的编码方式
|
response.setContentType("text/html;charset=utf-8");
|
|
// 导出的时候如果需要直接通过response流导出Excel,需要和前端设置上下文类型,如下:
|
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
|
----------------------------------------------------------------------------------------------------
|