From 1719a940307a1e8ebc7d122b2dce010f51d4a361 Mon Sep 17 00:00:00 2001 From: wangbing Date: Mon, 14 Oct 2019 18:01:36 +0800 Subject: [PATCH] 111 --- .../com/example/action/AjaxController.java | 85 +++++- .../com/example/action/GlobalController.java | 21 +- .../java/com/example/config/SqliteConfig.java | 17 +- .../com/example/module/admin/ent/Mapping.java | 18 +- .../com/example/module/admin/ent/Port.java | 33 --- .../com/example/module/admin/ent/Service.java | 77 ++++++ .../module/admin/mgr/FreeMarkerManager.java | 58 ++++ .../module/admin/mgr/MappingManagerImpl.java | 35 ++- .../admin/req/MappingCreateRequest.java | 11 + .../module/admin/req/MappingFindRequest.java | 23 +- .../admin/req/MappingUpdateRequest.java | 63 +++-- .../module/admin/rsp/PortLoadResponse.java | 8 + .../main/resources/application-dev.properties | 4 +- .../resources/application-prod.properties | 4 +- admin/src/main/resources/static/js/ajax.js | 6 + .../main/resources/{ => templates}/nginx.conf | 0 .../resources/templates/screen/mapping.ftl | 254 ++++++++---------- .../java/com/example/mapping/MappingTest.java | 9 +- .../src/test/resources/application.properties | 2 +- .../java/xyz/wbsite/wsqlite/ObjectClient.java | 7 +- 20 files changed, 492 insertions(+), 243 deletions(-) delete mode 100644 admin/src/main/java/com/example/module/admin/ent/Port.java create mode 100644 admin/src/main/java/com/example/module/admin/ent/Service.java create mode 100644 admin/src/main/java/com/example/module/admin/mgr/FreeMarkerManager.java create mode 100644 admin/src/main/java/com/example/module/admin/rsp/PortLoadResponse.java rename admin/src/main/resources/{ => templates}/nginx.conf (100%) diff --git a/admin/src/main/java/com/example/action/AjaxController.java b/admin/src/main/java/com/example/action/AjaxController.java index bfee39a..4fb0c38 100644 --- a/admin/src/main/java/com/example/action/AjaxController.java +++ b/admin/src/main/java/com/example/action/AjaxController.java @@ -1,25 +1,41 @@ package com.example.action; -import com.example.config.NginxConfig; +import com.example.frame.base.BaseResponse; +import com.example.frame.base.Error; +import com.example.frame.base.ErrorType; +import com.example.frame.base.Token; import com.example.frame.utils.*; import com.example.module.admin.ent.NginxCtrl; +import com.example.module.admin.ent.Service; import com.example.module.admin.mgr.MappingManager; -import com.example.module.admin.req.*; +import com.example.module.admin.req.MappingCreateRequest; +import com.example.module.admin.req.MappingDeleteRequest; +import com.example.module.admin.req.MappingFindRequest; +import com.example.module.admin.req.MappingUpdateRequest; +import com.example.module.admin.rsp.MappingFindResponse; +import com.example.module.admin.rsp.PortLoadResponse; +import freemarker.cache.ClassTemplateLoader; +import freemarker.cache.MultiTemplateLoader; +import freemarker.cache.TemplateLoader; +import freemarker.template.Configuration; +import freemarker.template.Template; +import freemarker.template.TemplateException; +import freemarker.template.TemplateExceptionHandler; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.util.ClassUtils; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer; +import xyz.wbsite.wsqlite.ObjectClient; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import java.io.BufferedReader; -import java.io.InputStreamReader; - -import com.example.frame.base.BaseResponse; -import com.example.frame.base.ErrorType; -import com.example.frame.base.Token; -import com.example.frame.base.Error; +import java.io.*; +import java.sql.SQLException; +import java.util.HashMap; +import java.util.List; @Controller public class AjaxController { @@ -28,6 +44,10 @@ public class AjaxController { private MappingManager mappingManager; @Autowired private NginxCtrl nginxCtrl; + @Autowired + private ObjectClient objectClient; + @Autowired + private FreeMarkerConfigurer freeMarkerConfigurer; @RequestMapping("/ajax") @ResponseBody @@ -82,6 +102,9 @@ public class AjaxController { case "ajax.admin.mapping.find": baseResponse = findMapping(jsonString, token); break; + case "ajax.admin.port.load": + baseResponse = loadPort(jsonString, token); + break; default: baseResponse.addError(ErrorType.INVALID_PARAMETER, Message.NOT_EXIST_METHOD); break; @@ -161,4 +184,44 @@ public class AjaxController { return mappingManager.find(request, token); } + private BaseResponse loadPort(String jsonString, Token token) { + PortLoadResponse response = new PortLoadResponse(); + try { + List select = objectClient.select(Service.class, 1, 0); + + for (Service service : select) { + MappingFindRequest mappingFindRequest = new MappingFindRequest(); + mappingFindRequest.setPortId(service.getId()); + mappingFindRequest.setPageSize(0); + MappingFindResponse mappingFindResponse = mappingManager.find(mappingFindRequest, token); + if (mappingFindResponse.hasError()) { + response.addErrors(mappingFindResponse.getErrors()); + return response; + } + service.setMappingList(mappingFindResponse.getResult()); + } + response.setResult(select); + } catch (SQLException | ClassNotFoundException e) { + e.printStackTrace(); + response.addError(ErrorType.BUSINESS_ERROR, "配置加载错误"); + return response; + } + return response; + } + + private void flushConfig() { + try { + HashMap context = new HashMap<>(); + Template template = freeMarkerConfigurer.getConfiguration().getTemplate("nginx.conf"); + Writer wr = new OutputStreamWriter(new FileOutputStream(outfile), "UTF-8"); + //写入 + template.process(context, wr); + //关闭流 + wr.close(); + } catch (IOException e) { + e.printStackTrace(); + } catch (TemplateException e) { + e.printStackTrace(); + } + } } diff --git a/admin/src/main/java/com/example/action/GlobalController.java b/admin/src/main/java/com/example/action/GlobalController.java index 78b74c5..0f9892f 100644 --- a/admin/src/main/java/com/example/action/GlobalController.java +++ b/admin/src/main/java/com/example/action/GlobalController.java @@ -26,6 +26,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.IOException; + import org.springframework.beans.factory.annotation.Value; import org.springframework.web.servlet.mvc.method.annotation.SseEmitter; @@ -35,6 +36,7 @@ import java.util.HashMap; import java.util.Timer; import java.util.TimerTask; import java.util.concurrent.ConcurrentHashMap; +import java.util.function.Consumer; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -119,6 +121,7 @@ public class GlobalController implements ErrorController { /** * 当未明确指定控制器时,走该请求,默认返回对应的layout布局和screen视图 * 当需要使用layout时,不需要返回值,ViewNameTranslator会处理对应关系 + * * @param model * @param request */ @@ -181,7 +184,7 @@ public class GlobalController implements ErrorController { file = "test.txt"; headers.setContentDispositionFormData("attachment", new String(file.getBytes("UTF-8"), "iso-8859-1")); return new ResponseEntity("test".getBytes(), - headers, HttpStatus.CREATED); + headers, HttpStatus.CREATED); } return new ResponseEntity(FileUtils.readFileToByteArray(new File(file)), @@ -198,6 +201,22 @@ public class GlobalController implements ErrorController { @RequestMapping(value = "/sse/{userId}", produces = "text/event-stream;charset=UTF-8") public SseEmitter sse(@PathVariable String userId) { SseEmitter sseEmitter = new SseEmitter(10000000L); + sseEmitter.onError(new Consumer() { + private String key = userId; + + @Override + public void accept(Throwable throwable) { + sseMap.remove(key); + } + }); + sseEmitter.onCompletion(new Runnable() { + private String key = userId; + + @Override + public void run() { + sseMap.remove(key); + } + }); if (sseMap.get(userId) != null) { sseMap.remove(userId); } diff --git a/admin/src/main/java/com/example/config/SqliteConfig.java b/admin/src/main/java/com/example/config/SqliteConfig.java index 7d77705..04707a4 100644 --- a/admin/src/main/java/com/example/config/SqliteConfig.java +++ b/admin/src/main/java/com/example/config/SqliteConfig.java @@ -1,24 +1,17 @@ package com.example.config; -import com.example.frame.utils.FileUtil; -import com.example.frame.utils.ZipUtil; +import com.example.frame.utils.IDgenerator; import com.example.module.admin.ent.Mapping; -import com.example.module.admin.ent.Port; +import com.example.module.admin.ent.Service; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.system.ApplicationHome; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.env.Environment; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.util.StringUtils; import xyz.wbsite.wsqlite.ObjectClient; -import javax.annotation.PostConstruct; import java.io.File; -import java.io.IOException; -import java.io.InputStream; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; @@ -43,11 +36,11 @@ public class SqliteConfig { ArrayList objects = new ArrayList<>(); objects.add(Mapping.class); - objects.add(Port.class); + objects.add(Service.class); ObjectClient objectClient = new ObjectClient(new File(dbpath, "data.db"), objects); - List select = objectClient.select(Port.class, 1, 1); - if (select.size() == 0 && objectClient.insert(Port.class, new Port("8888")) != 1) { + List select = objectClient.select(Service.class, 1, 1); + if (select.size() == 0 && objectClient.insert(Service.class, new Service(IDgenerator.nextId(), "8888", "默认端口")) != 1) { throw new RuntimeException("Nginx default port 8888 init failed."); } diff --git a/admin/src/main/java/com/example/module/admin/ent/Mapping.java b/admin/src/main/java/com/example/module/admin/ent/Mapping.java index e9a355d..c67c099 100644 --- a/admin/src/main/java/com/example/module/admin/ent/Mapping.java +++ b/admin/src/main/java/com/example/module/admin/ent/Mapping.java @@ -1,6 +1,6 @@ package com.example.module.admin.ent; -import com.example.frame.base.BaseEntity; +import com.fasterxml.jackson.annotation.JsonFormat; import xyz.wbsite.wsqlite.anonation.TableField; import java.util.Date; @@ -19,6 +19,13 @@ public class Mapping { */ @TableField private Long id; + + /** + * ID - 端口ID + */ + @TableField + private Long serviceId; + /** * NAME - 映射名称 */ @@ -35,10 +42,19 @@ public class Mapping { @TableField private String bz; @TableField +// @JsonFormat(timezone = "GMT+8", pattern = "yyyyMMddHHmmss") private Date createTime; @TableField private boolean isDeleted; + public Long getServiceId() { + return serviceId; + } + + public void setServiceId(Long serviceId) { + this.serviceId = serviceId; + } + public String getName() { return name; } diff --git a/admin/src/main/java/com/example/module/admin/ent/Port.java b/admin/src/main/java/com/example/module/admin/ent/Port.java deleted file mode 100644 index 311954a..0000000 --- a/admin/src/main/java/com/example/module/admin/ent/Port.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.example.module.admin.ent; - -import xyz.wbsite.wsqlite.anonation.TableField; - -import java.util.Date; - -/** - * MAPPING - 映射 - * - * @author author - * @version 0.0.1 - * @since 2019-09-28 - */ -public class Port { - - /** - * VALUE - 端口值 - */ - @TableField - private String value; - - public String getValue() { - return value; - } - - public void setValue(String value) { - this.value = value; - } - - public Port(String value) { - this.value = value; - } -} \ No newline at end of file diff --git a/admin/src/main/java/com/example/module/admin/ent/Service.java b/admin/src/main/java/com/example/module/admin/ent/Service.java new file mode 100644 index 0000000..a04b3b2 --- /dev/null +++ b/admin/src/main/java/com/example/module/admin/ent/Service.java @@ -0,0 +1,77 @@ +package com.example.module.admin.ent; + +import xyz.wbsite.wsqlite.anonation.TableField; + +import java.util.Date; +import java.util.List; + +/** + * MAPPING - 映射 + * + * @author author + * @version 0.0.1 + * @since 2019-09-28 + */ +public class Service { + + /** + * VALUE - 端口ID + */ + @TableField + private Long id; + + /** + * VALUE - 端口值 + */ + @TableField + private String value; + + /** + * VALUE - 备注 + */ + @TableField + private String bz; + + private List mappingList; + + public List getMappingList() { + return mappingList; + } + + public void setMappingList(List mappingList) { + this.mappingList = mappingList; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public String getBz() { + return bz; + } + + public void setBz(String bz) { + this.bz = bz; + } + + public Service() { + } + + public Service(Long id, String value, String bz) { + this.id = id; + this.value = value; + this.bz = bz; + } +} \ No newline at end of file diff --git a/admin/src/main/java/com/example/module/admin/mgr/FreeMarkerManager.java b/admin/src/main/java/com/example/module/admin/mgr/FreeMarkerManager.java new file mode 100644 index 0000000..3363e0b --- /dev/null +++ b/admin/src/main/java/com/example/module/admin/mgr/FreeMarkerManager.java @@ -0,0 +1,58 @@ +package com.example.module.admin.mgr; + +import freemarker.cache.ClassTemplateLoader; +import freemarker.cache.MultiTemplateLoader; +import freemarker.cache.TemplateLoader; +import freemarker.template.Configuration; +import freemarker.template.Template; +import freemarker.template.TemplateException; +import freemarker.template.TemplateExceptionHandler; +import org.springframework.util.ClassUtils; +import org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer; + +import java.io.*; + +public class FreeMarkerManager { + private FreeMarkerConfigurer freeMarkerConfigurer; + + public FreeMarkerManager() { + freeMarkerConfigurer = new FreeMarkerConfigurer(); + // 初始化一些配置 + Configuration cfg = new Configuration(Configuration.VERSION_2_3_28); + cfg.setDefaultEncoding("UTF-8"); + cfg.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER); + cfg.setNumberFormat("0.##"); + + MultiTemplateLoader multiTemplateLoader = new MultiTemplateLoader(new TemplateLoader[]{ + new ClassTemplateLoader(ClassUtils.getDefaultClassLoader(), "/modules"), + }); + + cfg.setTemplateLoader(multiTemplateLoader); + freeMarkerConfigurer.setConfiguration(cfg); + } + + public void outputTemp(File outfile, String template, Object model) { + try { + if (!outfile.exists()) { + outfile.createNewFile(); + } + + //获取连接 + Configuration configuration = freeMarkerConfigurer.getConfiguration(); + //设置编码 + configuration.setDefaultEncoding("UTF-8"); + //获取ftl,由于已经在配置文件中配置了路径所以在这里直接写模板名称就可以 + Template temp = configuration.getTemplate(template); + //输出文件路径 + Writer wr = new OutputStreamWriter(new FileOutputStream(outfile),"UTF-8"); + //写入 + temp.process(model, wr); + //关闭流 + wr.close(); + } catch (IOException e) { + e.printStackTrace(); + } catch (TemplateException e) { + e.printStackTrace(); + } + } +} diff --git a/admin/src/main/java/com/example/module/admin/mgr/MappingManagerImpl.java b/admin/src/main/java/com/example/module/admin/mgr/MappingManagerImpl.java index df1f314..d133c6a 100644 --- a/admin/src/main/java/com/example/module/admin/mgr/MappingManagerImpl.java +++ b/admin/src/main/java/com/example/module/admin/mgr/MappingManagerImpl.java @@ -20,6 +20,8 @@ import org.springframework.stereotype.Service; import xyz.wbsite.wsqlite.ObjectClient; import java.sql.SQLException; +import java.util.Date; +import java.util.List; /** * MAPPING - 映射 @@ -52,12 +54,16 @@ public class MappingManagerImpl implements MappingManager { long id = IDgenerator.nextId(); Mapping entity = MapperUtil.map(request, Mapping.class); entity.setId(id); + entity.setCreateTime(new Date()); try { int insert = objectClient.insert(Mapping.class, entity); - - System.out.println(); + if (insert != 1) { + response.addError(ErrorType.BUSINESS_ERROR, "新增错误"); + return response; + } + response.setId(id); } catch (SQLException | ClassNotFoundException e) { - e.printStackTrace(); + response.addError(ErrorType.BUSINESS_ERROR, "新增错误"); } response.setId(id); @@ -79,6 +85,13 @@ public class MappingManagerImpl implements MappingManager { return response; } + try { + int update = objectClient.delete(Mapping.class, "ID = " + request.getId()); + response.setResult((long) update); + } catch (SQLException | ClassNotFoundException e) { + response.addError(ErrorType.BUSINESS_ERROR, "删除错误"); + } + return response; } @@ -98,6 +111,14 @@ public class MappingManagerImpl implements MappingManager { return response; } + Mapping mapping = MapperUtil.map(request, Mapping.class); + + try { + int update = objectClient.update(Mapping.class, mapping, "ID = " + mapping.getId()); + response.setResult((long) update); + } catch (SQLException | ClassNotFoundException e) { + response.addError(ErrorType.BUSINESS_ERROR, "更新错误"); + } return response; } @@ -117,6 +138,14 @@ public class MappingManagerImpl implements MappingManager { return response; } + try { + List select = objectClient.select(Mapping.class, 1, 0); + response.setResult(select); + } catch (SQLException | ClassNotFoundException e) { + e.printStackTrace(); + response.addError(ErrorType.BUSINESS_ERROR, "Sqlite错误"); + } + return response; } } diff --git a/admin/src/main/java/com/example/module/admin/req/MappingCreateRequest.java b/admin/src/main/java/com/example/module/admin/req/MappingCreateRequest.java index 0b0c3c8..b68cd91 100644 --- a/admin/src/main/java/com/example/module/admin/req/MappingCreateRequest.java +++ b/admin/src/main/java/com/example/module/admin/req/MappingCreateRequest.java @@ -23,6 +23,9 @@ public class MappingCreateRequest extends BaseRequest { @NotNull(message = "映射名称不能为空") private String name; + @NotNull(message = "服务Id不能为空") + private Long serviceId; + /** * VALUE - 映射值 */ @@ -36,6 +39,14 @@ public class MappingCreateRequest extends BaseRequest { */ private String bz; + public Long getServiceId() { + return serviceId; + } + + public void setServiceId(Long serviceId) { + this.serviceId = serviceId; + } + public String getName() { return name; } diff --git a/admin/src/main/java/com/example/module/admin/req/MappingFindRequest.java b/admin/src/main/java/com/example/module/admin/req/MappingFindRequest.java index 9c13159..d05cfa5 100644 --- a/admin/src/main/java/com/example/module/admin/req/MappingFindRequest.java +++ b/admin/src/main/java/com/example/module/admin/req/MappingFindRequest.java @@ -14,26 +14,13 @@ public class MappingFindRequest extends BaseFindRequest { /** * 用户名 */ - private String username; + private Long portId; - /** - * 用户密码 - */ - private String password; - - public String getUsername() { - return this.username; - } - - public void setUsername(String username) { - this.username = username; - } - - public String getPassword() { - return this.password; + public Long getPortId() { + return portId; } - public void setPassword(String password) { - this.password = password; + public void setPortId(Long portId) { + this.portId = portId; } } diff --git a/admin/src/main/java/com/example/module/admin/req/MappingUpdateRequest.java b/admin/src/main/java/com/example/module/admin/req/MappingUpdateRequest.java index cd58649..9ba5ee1 100644 --- a/admin/src/main/java/com/example/module/admin/req/MappingUpdateRequest.java +++ b/admin/src/main/java/com/example/module/admin/req/MappingUpdateRequest.java @@ -4,6 +4,7 @@ import com.example.frame.base.BaseUpdateRequest; import javax.validation.constraints.NotNull; import org.hibernate.validator.constraints.Length; import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.Pattern; /** * MappingUpdateRequest - 映射更新 @@ -20,39 +21,65 @@ public class MappingUpdateRequest extends BaseUpdateRequest { @NotNull(message = "主键不能为NULL") private Long id; + @NotNull(message = "服务Id不能为空") + private Long serviceId; + /** - * 用户名 + * NAME - 映射名称 */ - @Length(min = 0, max = 100, message = "用户名长度不合法(0-100)") - private String username; + @NotNull(message = "映射名称不能为空") + private String name; /** - * 用户密码 + * VALUE - 映射值 */ - @Length(min = 0, max = 100, message = "用户密码长度不合法(0-100)") - private String password; + @NotNull(message = "映射值不能为空") + @Pattern(regexp = "[^/]*", message = "映射值不能存在/") + @Pattern(regexp = "\\w*", message = "映射值需为英文") + private String value; - public Long getId() { - return this.id; + /** + * BZ - 备注 + */ + private String bz; + + public String getName() { + return name; } - public void setId(Long id) { - this.id = id; + public void setName(String name) { + this.name = name; + } + + public String getValue() { + return value; } - public String getUsername() { - return this.username; + public void setValue(String value) { + this.value = value; } - public void setUsername(String username) { - this.username = username; + public String getBz() { + return bz; + } + + public void setBz(String bz) { + this.bz = bz; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; } - public String getPassword() { - return this.password; + public Long getServiceId() { + return serviceId; } - public void setPassword(String password) { - this.password = password; + public void setServiceId(Long serviceId) { + this.serviceId = serviceId; } } diff --git a/admin/src/main/java/com/example/module/admin/rsp/PortLoadResponse.java b/admin/src/main/java/com/example/module/admin/rsp/PortLoadResponse.java new file mode 100644 index 0000000..006c03c --- /dev/null +++ b/admin/src/main/java/com/example/module/admin/rsp/PortLoadResponse.java @@ -0,0 +1,8 @@ +package com.example.module.admin.rsp; + + +import com.example.frame.base.BaseFindResponse; +import com.example.module.admin.ent.Service; + +public class PortLoadResponse extends BaseFindResponse { +} \ No newline at end of file diff --git a/admin/src/main/resources/application-dev.properties b/admin/src/main/resources/application-dev.properties index 78934af..5bb2254 100644 --- a/admin/src/main/resources/application-dev.properties +++ b/admin/src/main/resources/application-dev.properties @@ -1,5 +1,5 @@ # 开发环境 -server.port=8080 +server.service=8080 server.servlet.context-path=/ spring.mvc.static-path-pattern=/static/** spring.resources.static-locations=classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/ @@ -37,7 +37,7 @@ spring.freemarker.expose-session-attributes=false spring.freemarker.expose-spring-macro-helpers=false spring.freemarker.settings.template_update_delay=1 spring.freemarker.settings.locale=zh_CN -spring.freemarker.settings.datetime_format=yyyy-MM-dd +spring.freemarker.settings.datetime_format=yyyy-MM-dd HH:mm:ss spring.freemarker.settings.date_format=yyyy-MM-dd spring.freemarker.settings.number_format=#.## spring.freemarker.settings.classic_compatible=true diff --git a/admin/src/main/resources/application-prod.properties b/admin/src/main/resources/application-prod.properties index 16791ab..6eee83f 100644 --- a/admin/src/main/resources/application-prod.properties +++ b/admin/src/main/resources/application-prod.properties @@ -1,5 +1,5 @@ # 生产环境 -server.port=80 +server.service=80 server.servlet.context-path=/ spring.mvc.static-path-pattern=/static/** spring.resources.static-locations=classpath:static/ @@ -37,7 +37,7 @@ spring.freemarker.expose-session-attributes=false spring.freemarker.expose-spring-macro-helpers=false spring.freemarker.settings.template_update_delay=1 spring.freemarker.settings.locale=zh_CN -spring.freemarker.settings.datetime_format=yyyy-MM-dd +spring.freemarker.settings.datetime_format=yyyy-MM-dd HH:mm:ss spring.freemarker.settings.date_format=yyyy-MM-dd spring.freemarker.settings.number_format=#.## spring.freemarker.settings.classic_compatible=true diff --git a/admin/src/main/resources/static/js/ajax.js b/admin/src/main/resources/static/js/ajax.js index 4863e74..dcfdf31 100644 --- a/admin/src/main/resources/static/js/ajax.js +++ b/admin/src/main/resources/static/js/ajax.js @@ -158,4 +158,10 @@ window.ajax = { data: JSON.stringify(data), }) }, + portLoad: function(data) { + return jsonRequest({ + method:"ajax.admin.port.load", + data: JSON.stringify(data), + }) + }, } \ No newline at end of file diff --git a/admin/src/main/resources/nginx.conf b/admin/src/main/resources/templates/nginx.conf similarity index 100% rename from admin/src/main/resources/nginx.conf rename to admin/src/main/resources/templates/nginx.conf diff --git a/admin/src/main/resources/templates/screen/mapping.ftl b/admin/src/main/resources/templates/screen/mapping.ftl index 6d323f5..ee6f4a1 100644 --- a/admin/src/main/resources/templates/screen/mapping.ftl +++ b/admin/src/main/resources/templates/screen/mapping.ftl @@ -1,68 +1,81 @@
- - - - - - - - - - 搜索 - 重置 - - - - - Nginx 控制中心 - - - - - - - - - - - - + + + Nginx 控制中心 + + + + + + + + + + + + + + + + + + + + - + - - + + - 应用 - - + + + + + + + 保存 + + - 新增 + 新增 - 导出 - - - + + + + + + + - - + + @@ -74,68 +87,55 @@ - - + width="150px" + label="名称" + prop="name"> + width="150px" + label="路径" + prop="value"> + width="150px" + label="创建日期" + prop="createTime"> + label="备注" + prop="bz"> + width="150px" + align="right"> + - - -