diff --git a/pom.xml b/pom.xml
index bfc114d..6a1b3bf 100644
--- a/pom.xml
+++ b/pom.xml
@@ -7,6 +7,7 @@
xymanager_admin
xymanager_service
xymanager_common
+ xymanager_dao
xymanager_framework
com.shxy
@@ -28,6 +29,7 @@
1.2.8
2.2.0
1.4.0
+ 1.4
@@ -98,6 +100,23 @@
+
+
+ commons-fileupload
+ commons-fileupload
+ ${commons.fileupload.version}
+
+
+
+
+
+ cn.hutool
+ hutool-all
+ 5.7.20
+
+
+
+
org.springframework.boot
spring-boot-starter-test
diff --git a/xymanager_admin/src/main/java/com/shxy/xymanager_admin/XymanagerAdminApplication.java b/xymanager_admin/src/main/java/com/shxy/xymanager_admin/XymanagerAdminApplication.java
index 0010db4..3d8441b 100644
--- a/xymanager_admin/src/main/java/com/shxy/xymanager_admin/XymanagerAdminApplication.java
+++ b/xymanager_admin/src/main/java/com/shxy/xymanager_admin/XymanagerAdminApplication.java
@@ -7,12 +7,16 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.ConfigurableApplicationContext;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.EnableAspectJAutoProxy;
import org.springframework.core.env.Environment;
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
@MapperScan("com.shxy.**.dao")
+@EnableAspectJAutoProxy(exposeProxy = true)
@Slf4j
@EnableConfigurationProperties
+@ComponentScan(basePackages = {"com.shxy"})
public class XymanagerAdminApplication {
public static void main(String[] args) {
diff --git a/xymanager_admin/src/main/java/com/shxy/xymanager_admin/controller/TerminalController.java b/xymanager_admin/src/main/java/com/shxy/xymanager_admin/controller/TerminalController.java
new file mode 100644
index 0000000..9ac3273
--- /dev/null
+++ b/xymanager_admin/src/main/java/com/shxy/xymanager_admin/controller/TerminalController.java
@@ -0,0 +1,39 @@
+package com.shxy.xymanager_admin.controller;
+
+import com.shxy.xymanager_common.annotation.Log;
+import com.shxy.xymanager_common.base.BaseController;
+import com.shxy.xymanager_common.base.ResponseReult;
+import com.shxy.xymanager_common.bean.ServiceBody;
+import com.shxy.xymanager_common.bean.ServiceStatus;
+import com.shxy.xymanager_common.model.TerminalListModel;
+import com.shxy.xymanager_service.service.TerminalService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+
+@Api(value = "设备接口", tags = "设备接口相关")
+@RestController
+@Slf4j
+public class TerminalController extends BaseController {
+
+ @Autowired
+ TerminalService terminalService;
+
+ @ApiOperation(value = "获取设备列表", notes = "获取设备列表接口", httpMethod = "POST")
+ @ApiResponses({@ApiResponse(code = 200, message = "请求成功"), @ApiResponse(code = 400, message = "请求参数没填好"), @ApiResponse(code = 404, message = "请求路径没有或页面跳转路径不对")})
+ @RequestMapping("/getTerminalList")
+ @Log(title = "获取设备列表", type = "查询")
+ public ResponseReult getTerminalList() {
+ ServiceBody serviceBody = terminalService.getTerminalList();
+ if (serviceBody.getCode() == ServiceStatus.SUCCESS) {
+ return ResponseReult.success(serviceBody.getData());
+ } else {
+ return ResponseReult.error(serviceBody.getCode(), serviceBody.getMsg());
+ }
+ }
+}
diff --git a/xymanager_admin/src/main/java/com/shxy/xymanager_admin/controller/TestController.java b/xymanager_admin/src/main/java/com/shxy/xymanager_admin/controller/TestController.java
index 9123f2b..bb3d729 100644
--- a/xymanager_admin/src/main/java/com/shxy/xymanager_admin/controller/TestController.java
+++ b/xymanager_admin/src/main/java/com/shxy/xymanager_admin/controller/TestController.java
@@ -6,22 +6,32 @@ import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Api(value = "测试接口", tags = "测试接口tags")
-@RestController
+@Controller
@Slf4j
public class TestController {
- @ApiOperation(value = "测试", notes = "测试notes", httpMethod = "POST")
- @ApiResponses({@ApiResponse(code = 200, message = "请求成功"), @ApiResponse(code = 400, message = "请求参数没填好"), @ApiResponse(code = 404, message = "请求路径没有或页面跳转路径不对")})
- @RequestMapping("/getBannerList")
- @Log(title = "测试", type = "查询")
- public String gettest() {
- log.info("有一个沙雕点了链接");
- return "index";
- }
+// @ApiOperation(value = "测试", notes = "测试notes", httpMethod = "POST")
+// @ApiResponses({@ApiResponse(code = 200, message = "请求成功"), @ApiResponse(code = 400, message = "请求参数没填好"), @ApiResponse(code = 404, message = "请求路径没有或页面跳转路径不对")})
+// @RequestMapping("/getBannerList")
+// @Log(title = "测试", type = "查询")
+// public String gettest() {
+// log.info("有一个沙雕点了链接");
+// return "index222";
+// }
+//
+//
+// @GetMapping("")
+// @Log(title = "测试", type = "查询")
+// public String hhtest() {
+// log.info("有一个沙雕点了链接");
+// return "index2";
+// }
}
diff --git a/xymanager_admin/src/test/java/com/shxy/xymanager_admin/XymanagerAdminApplicationTests.java b/xymanager_admin/src/test/java/com/shxy/xymanager_admin/XymanagerAdminApplicationTests.java
index 9e56cc7..2f38242 100644
--- a/xymanager_admin/src/test/java/com/shxy/xymanager_admin/XymanagerAdminApplicationTests.java
+++ b/xymanager_admin/src/test/java/com/shxy/xymanager_admin/XymanagerAdminApplicationTests.java
@@ -1,13 +1,9 @@
package com.shxy.xymanager_admin;
-import com.shxy.xymanager_common.entity.TerminalChannels;
import com.shxy.xymanager_common.entity.Terminals;
import com.shxy.xymanager_dao.dao.TerminalsDao;
-import jdk.nashorn.internal.ir.Terminal;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.Date;
@@ -17,6 +13,7 @@ class XymanagerAdminApplicationTests {
@Autowired
TerminalsDao terminalsDao;
+
@Test
void contextLoads() {
diff --git a/xymanager_common/pom.xml b/xymanager_common/pom.xml
index dd3cb59..3bcf5ed 100644
--- a/xymanager_common/pom.xml
+++ b/xymanager_common/pom.xml
@@ -75,6 +75,24 @@
com.alibaba
fastjson
+
+
+
+ commons-fileupload
+ commons-fileupload
+
+
+
+ cn.hutool
+ hutool-all
+
+
+
+
+ com.github.pagehelper
+ pagehelper-spring-boot-starter
+
+
diff --git a/xymanager_common/src/main/java/com/shxy/xymanager_common/base/BaseController.java b/xymanager_common/src/main/java/com/shxy/xymanager_common/base/BaseController.java
new file mode 100644
index 0000000..c85f680
--- /dev/null
+++ b/xymanager_common/src/main/java/com/shxy/xymanager_common/base/BaseController.java
@@ -0,0 +1,121 @@
+package com.shxy.xymanager_common.base;
+
+
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import com.shxy.xymanager_common.page.PageDomain;
+import com.shxy.xymanager_common.page.TableDataInfo;
+import com.shxy.xymanager_common.page.TableSupport;
+import com.shxy.xymanager_common.util.StringUtils;
+import com.shxy.xymanager_common.util.http.HttpStatus;
+import com.shxy.xymanager_common.util.sql.SqlUtils;
+
+import java.util.List;
+
+
+/**
+ * web层通用数据处理
+ *
+ * @author xzg
+ */
+public class BaseController {
+
+ /**
+ * 将前台传递过来的日期格式的字符串,自动转化为Date类型
+ */
+// @InitBinder
+// public void initBinder(WebDataBinder binder) {
+// // Date 类型转换
+// binder.registerCustomEditor(Date.class, new PropertyEditorSupport() {
+// @Override
+// public void setAsText(String text) {
+// setValue(DateUtils.parseDate(text));
+// }
+//
+// @Override
+// public String getAsText() {
+// Date value = (Date) getValue();
+// if(null == value){
+// value = new Date();
+// }
+// SimpleDateFormat df =new SimpleDateFormat("yyyy-MM-dd");
+// return df.format(value);
+//
+// }
+// });
+//// binder.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"), true));
+// }
+
+ /**
+ * 设置请求分页数据
+ */
+ protected void startPage() {
+ PageDomain pageDomain = TableSupport.buildPageRequest();
+ Integer pageNum = pageDomain.getPageNum();
+ Integer pageSize = pageDomain.getPageSize();
+ if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)) {
+ String orderBy = SqlUtils.escapeOrderBySql(pageDomain.getOrderBy());
+ Boolean reasonable = pageDomain.getReasonable();
+ PageHelper.startPage(pageNum, pageSize, orderBy).setReasonable(reasonable);
+ }
+ }
+
+ /**
+ * 设置请求排序数据
+ */
+ protected void startOrderBy() {
+ PageDomain pageDomain = TableSupport.buildPageRequest();
+ if (StringUtils.isNotEmpty(pageDomain.getOrderBy())) {
+ String orderBy = SqlUtils.escapeOrderBySql(pageDomain.getOrderBy());
+ PageHelper.orderBy(orderBy);
+ }
+ }
+
+ /**
+ * 响应请求分页数据
+ */
+ @SuppressWarnings({"rawtypes", "unchecked"})
+ protected TableDataInfo getDataTable(List> list) {
+ TableDataInfo rspData = new TableDataInfo();
+ rspData.setCode(HttpStatus.HTTP_OK);
+ rspData.setMsg("查询成功");
+ rspData.setRows(list);
+ rspData.setTotal(new PageInfo(list).getTotal());
+ return rspData;
+ }
+
+ /**
+ * 页面跳转
+ */
+ public String redirect(String url) {
+ return StringUtils.format("redirect:{}", url);
+ }
+
+// /**
+// * 获取用户缓存信息
+// */
+// public LoginUser getLoginUser() {
+// return SecurityUtils.getLoginUser();
+// }
+//
+// /**
+// * 获取登录用户id
+// */
+// public Long getUserId() {
+// return getLoginUser().getUserId();
+// }
+//
+// /**
+// * 获取登录部门id
+// */
+// public Long getDeptId() {
+// return getLoginUser().getDeptId();
+// }
+//
+// /**
+// * 获取登录用户名
+// */
+// public String getUsername() {
+// return getLoginUser().getUsername();
+// }
+}
diff --git a/xymanager_common/src/main/java/com/shxy/xymanager_common/base/BaseEntity.java b/xymanager_common/src/main/java/com/shxy/xymanager_common/base/BaseEntity.java
new file mode 100644
index 0000000..7ffc1a6
--- /dev/null
+++ b/xymanager_common/src/main/java/com/shxy/xymanager_common/base/BaseEntity.java
@@ -0,0 +1,5 @@
+package com.shxy.xymanager_common.base;
+
+
+public class BaseEntity {
+}
diff --git a/xymanager_common/src/main/java/com/shxy/xymanager_common/base/ResponseReult.java b/xymanager_common/src/main/java/com/shxy/xymanager_common/base/ResponseReult.java
new file mode 100644
index 0000000..614a790
--- /dev/null
+++ b/xymanager_common/src/main/java/com/shxy/xymanager_common/base/ResponseReult.java
@@ -0,0 +1,121 @@
+package com.shxy.xymanager_common.base;
+
+import com.shxy.xymanager_common.exception.IErrorCode;
+import com.shxy.xymanager_common.util.http.HttpStatus;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+
+// @ApiModel: 用对象来接收参数
+@ApiModel(value = "接口返回", description = "接口响应返回")
+public class ResponseReult implements Serializable {
+ /**
+ * 返回对象
+ */
+ @ApiModelProperty(value = "返回对象", name = "返回对象")
+ private T data;
+ /**
+ * 返回状态码
+ */
+ @ApiModelProperty(value = "返回状态码", name = "返回状态码", required = true)
+ private int code;
+ /**
+ * 返回描述
+ */
+ @ApiModelProperty(value = "返回描述", name = "返回描述")
+ private String msg;
+
+ public T getData() {
+ return data;
+ }
+
+ public void setData(T data) {
+ this.data = data;
+ }
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public void setCode(int code, String msg) {
+ this.code = code;
+ this.msg = msg;
+ }
+
+ public String getMsg() {
+ return msg;
+ }
+
+ public void setMsg(String msg) {
+ this.msg = msg;
+ }
+
+ /**
+ * 返回成功消息
+ *
+ * @return 成功消息
+ */
+ public static ResponseReult success(T obj) {
+ ResponseReult success = ResponseReult.success();
+ if (obj != null) {
+ success.setData(obj);
+ }
+ return success;
+ }
+
+ /**
+ * 返回成功消息
+ *
+ * @return 成功消息
+ */
+ public static ResponseReult success() {
+ ResponseReult response = new ResponseReult<>();
+ response.setCode(HttpStatus.HTTP_OK, "操作成功");
+ return response;
+ }
+
+ /**
+ * 返回失败消息
+ *
+ * @return 失败消息
+ */
+ public static ResponseReult error() {
+ ResponseReult response = ResponseReult.error(HttpStatus.HTTP_INTERNAL_ERROR, "操作失败");
+ return response;
+ }
+
+ /**
+ * 返回失败消息
+ *
+ * @return 失败消息
+ */
+ public static ResponseReult error(int code, String msg) {
+ ResponseReult response = new ResponseReult<>();
+ response.setCode(code, msg);
+ return response;
+ }
+
+ /**
+ * 失败返回结果
+ *
+ * @param errorCode 错误码
+ */
+ public static ResponseReult error(IErrorCode errorCode) {
+ return ResponseReult.error(errorCode.getCode(), errorCode.getMessage());
+ }
+
+ /**
+ * 失败返回结果
+ *
+ * @param message 错误信息
+ */
+ public static ResponseReult error(String message) {
+ return ResponseReult.error(HttpStatus.HTTP_INTERNAL_ERROR, message);
+ }
+
+}
diff --git a/xymanager_common/src/main/java/com/shxy/xymanager_common/bean/ServiceBody.java b/xymanager_common/src/main/java/com/shxy/xymanager_common/bean/ServiceBody.java
new file mode 100644
index 0000000..616919b
--- /dev/null
+++ b/xymanager_common/src/main/java/com/shxy/xymanager_common/bean/ServiceBody.java
@@ -0,0 +1,25 @@
+package com.shxy.xymanager_common.bean;
+
+import lombok.Data;
+
+/**
+ * service服务请求返回
+ *
+ * @author 晶晶
+ */
+@Data
+public class ServiceBody {
+
+ /**
+ * 返回体
+ */
+ private T data;
+ /**
+ * 返回状态码
+ */
+ private int code;
+ /**
+ * 错误描述
+ */
+ private String msg;
+}
diff --git a/xymanager_common/src/main/java/com/shxy/xymanager_common/bean/ServiceStatus.java b/xymanager_common/src/main/java/com/shxy/xymanager_common/bean/ServiceStatus.java
new file mode 100644
index 0000000..43e18c4
--- /dev/null
+++ b/xymanager_common/src/main/java/com/shxy/xymanager_common/bean/ServiceStatus.java
@@ -0,0 +1,17 @@
+package com.shxy.xymanager_common.bean;
+
+/**
+ * 返回状态码
+ *
+ * @author xzg
+ */
+public class ServiceStatus {
+ /**
+ * 操作成功
+ */
+ public static final int SUCCESS = 200;
+ /**
+ * 操作失败
+ */
+ public static final int ERROR = 400;
+}
diff --git a/xymanager_common/src/main/java/com/shxy/xymanager_common/entity/Terminals.java b/xymanager_common/src/main/java/com/shxy/xymanager_common/entity/Terminals.java
index 255af21..d7045c8 100644
--- a/xymanager_common/src/main/java/com/shxy/xymanager_common/entity/Terminals.java
+++ b/xymanager_common/src/main/java/com/shxy/xymanager_common/entity/Terminals.java
@@ -1,11 +1,18 @@
package com.shxy.xymanager_common.entity;
+import lombok.Data;
+
import java.io.Serializable;
import java.util.Date;
+@Data
public class Terminals implements Serializable {
private Integer id;
+ private Integer lineid;
+
+ private Integer towerid;
+
private String cmdid;
private Short orgId;
@@ -36,123 +43,4 @@ public class Terminals implements Serializable {
private static final long serialVersionUID = 1L;
- public Integer getId() {
- return id;
- }
-
- public void setId(Integer id) {
- this.id = id;
- }
-
- public String getCmdid() {
- return cmdid;
- }
-
- public void setCmdid(String cmdid) {
- this.cmdid = cmdid == null ? null : cmdid.trim();
- }
-
- public Short getOrgId() {
- return orgId;
- }
-
- public void setOrgId(Short orgId) {
- this.orgId = orgId;
- }
-
- public String getEquipName() {
- return equipName;
- }
-
- public void setEquipName(String equipName) {
- this.equipName = equipName == null ? null : equipName.trim();
- }
-
- public String getDisplayName() {
- return displayName;
- }
-
- public void setDisplayName(String displayName) {
- this.displayName = displayName == null ? null : displayName.trim();
- }
-
- public String getModel() {
- return model;
- }
-
- public void setModel(String model) {
- this.model = model == null ? null : model.trim();
- }
-
- public String getEssentialInfoVersion() {
- return essentialInfoVersion;
- }
-
- public void setEssentialInfoVersion(String essentialInfoVersion) {
- this.essentialInfoVersion = essentialInfoVersion == null ? null : essentialInfoVersion.trim();
- }
-
- public Byte getHasPan() {
- return hasPan;
- }
-
- public void setHasPan(Byte hasPan) {
- this.hasPan = hasPan;
- }
-
- public String getBsManufacturer() {
- return bsManufacturer;
- }
-
- public void setBsManufacturer(String bsManufacturer) {
- this.bsManufacturer = bsManufacturer == null ? null : bsManufacturer.trim();
- }
-
- public Date getBsProductionDate() {
- return bsProductionDate;
- }
-
- public void setBsProductionDate(Date bsProductionDate) {
- this.bsProductionDate = bsProductionDate;
- }
-
- public String getBsIdentifier() {
- return bsIdentifier;
- }
-
- public void setBsIdentifier(String bsIdentifier) {
- this.bsIdentifier = bsIdentifier == null ? null : bsIdentifier.trim();
- }
-
- public Double getLatitude() {
- return latitude;
- }
-
- public void setLatitude(Double latitude) {
- this.latitude = latitude;
- }
-
- public Double getLongitude() {
- return longitude;
- }
-
- public void setLongitude(Double longitude) {
- this.longitude = longitude;
- }
-
- public Date getCreateTime() {
- return createTime;
- }
-
- public void setCreateTime(Date createTime) {
- this.createTime = createTime;
- }
-
- public Date getUpdateTime() {
- return updateTime;
- }
-
- public void setUpdateTime(Date updateTime) {
- this.updateTime = updateTime;
- }
}
\ No newline at end of file
diff --git a/xymanager_common/src/main/java/com/shxy/xymanager_common/exception/ApiException.java b/xymanager_common/src/main/java/com/shxy/xymanager_common/exception/ApiException.java
new file mode 100644
index 0000000..d075186
--- /dev/null
+++ b/xymanager_common/src/main/java/com/shxy/xymanager_common/exception/ApiException.java
@@ -0,0 +1,37 @@
+package com.shxy.xymanager_common.exception;
+
+
+import lombok.Data;
+
+/**
+ * 自定义API异常
+ * Created by 晶晶 on 2022/3/24.
+ */
+@Data
+public class ApiException extends RuntimeException {
+ private IErrorCode errorCode;
+ private int error;
+
+ public ApiException(IErrorCode errorCode) {
+ super(errorCode.getMessage());
+ this.errorCode = errorCode;
+ }
+
+ public ApiException(String message) {
+ super(message);
+ }
+
+ public ApiException(int errorcode, String message) {
+ super(message);
+ this.error = errorcode;
+ }
+
+ public ApiException(Throwable cause) {
+ super(cause);
+ }
+
+ public ApiException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+}
diff --git a/xymanager_common/src/main/java/com/shxy/xymanager_common/exception/Asserts.java b/xymanager_common/src/main/java/com/shxy/xymanager_common/exception/Asserts.java
new file mode 100644
index 0000000..9554a01
--- /dev/null
+++ b/xymanager_common/src/main/java/com/shxy/xymanager_common/exception/Asserts.java
@@ -0,0 +1,39 @@
+package com.shxy.xymanager_common.exception;
+
+
+import com.shxy.xymanager_common.bean.ServiceBody;
+import com.shxy.xymanager_common.bean.ServiceStatus;
+
+/**
+ * 断言处理类,用于抛出各种API异常
+ * Created by macro on 2020/2/27.
+ */
+public class Asserts {
+ public static void fail(String message) {
+ throw new ApiException(message);
+ }
+
+ public static void fail(IErrorCode errorCode) {
+ throw new ApiException(errorCode);
+ }
+
+ public static void fail(int errorCode, String message) {
+ throw new ApiException(errorCode, message);
+ }
+
+
+ public static ServiceBody success(T data) {
+ ServiceBody serviceBody = new ServiceBody();
+ serviceBody.setCode(ServiceStatus.SUCCESS);
+ serviceBody.setData(data);
+ return serviceBody;
+ }
+
+ public static ServiceBody error(String data) {
+ ServiceBody serviceBody = new ServiceBody();
+ serviceBody.setCode(ServiceStatus.ERROR);
+ serviceBody.setData(null);
+ serviceBody.setMsg(data);
+ return serviceBody;
+ }
+}
diff --git a/xymanager_common/src/main/java/com/shxy/xymanager_common/exception/GlobalExceptionHandler.java b/xymanager_common/src/main/java/com/shxy/xymanager_common/exception/GlobalExceptionHandler.java
new file mode 100644
index 0000000..566c4fa
--- /dev/null
+++ b/xymanager_common/src/main/java/com/shxy/xymanager_common/exception/GlobalExceptionHandler.java
@@ -0,0 +1,68 @@
+package com.shxy.xymanager_common.exception;
+
+import com.shxy.xymanager_common.base.ResponseReult;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.FieldError;
+import org.springframework.web.bind.MethodArgumentNotValidException;
+import org.springframework.web.bind.annotation.ControllerAdvice;
+import org.springframework.web.bind.annotation.ExceptionHandler;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import java.sql.SQLException;
+
+/**
+ * 全局异常处理
+ * Created by macro on 2020/2/27.
+ */
+@ControllerAdvice
+public class GlobalExceptionHandler {
+
+ @ResponseBody
+ @ExceptionHandler(value = ApiException.class)
+ public ResponseReult handle(ApiException e) {
+ if (e.getErrorCode() != null) {
+ return ResponseReult.error(e.getErrorCode());
+ }
+ if (e.getError() != 0) {
+
+ return ResponseReult.error(e.getError(), e.getMessage());
+ }
+ return ResponseReult.error(e.getMessage());
+ }
+
+ @ResponseBody
+ @ExceptionHandler(value = SQLException.class)
+ public ResponseReult handleValidException(SQLException e) {
+ int errorCode = e.getErrorCode();
+ String message = e.getMessage();
+ return ResponseReult.error(errorCode, message);
+ }
+
+ @ResponseBody
+ @ExceptionHandler(value = MethodArgumentNotValidException.class)
+ public ResponseReult handleValidException(MethodArgumentNotValidException e) {
+ BindingResult bindingResult = e.getBindingResult();
+ String message = null;
+ if (bindingResult.hasErrors()) {
+ FieldError fieldError = bindingResult.getFieldError();
+ if (fieldError != null) {
+ message = fieldError.getField()+fieldError.getDefaultMessage();
+ }
+ }
+ return ResponseReult.error(message);
+ }
+//
+// @ResponseBody
+// @ExceptionHandler(value = BindException.class)
+// public CommonResult handleValidException(BindException e) {
+// BindingResult bindingResult = e.getBindingResult();
+// String message = null;
+// if (bindingResult.hasErrors()) {
+// FieldError fieldError = bindingResult.getFieldError();
+// if (fieldError != null) {
+// message = fieldError.getField()+fieldError.getDefaultMessage();
+// }
+// }
+// return CommonResult.validateFailed(message);
+// }
+}
diff --git a/xymanager_common/src/main/java/com/shxy/xymanager_common/exception/IErrorCode.java b/xymanager_common/src/main/java/com/shxy/xymanager_common/exception/IErrorCode.java
new file mode 100644
index 0000000..cd970f3
--- /dev/null
+++ b/xymanager_common/src/main/java/com/shxy/xymanager_common/exception/IErrorCode.java
@@ -0,0 +1,17 @@
+package com.shxy.xymanager_common.exception;
+
+/**
+ * 常用API返回对象接口
+ *
+ */
+public interface IErrorCode {
+ /**
+ * 返回码
+ */
+ int getCode();
+
+ /**
+ * 返回信息
+ */
+ String getMessage();
+}
diff --git a/xymanager_common/src/main/java/com/shxy/xymanager_common/exception/base/BaseException.java b/xymanager_common/src/main/java/com/shxy/xymanager_common/exception/base/BaseException.java
new file mode 100644
index 0000000..aed5ef6
--- /dev/null
+++ b/xymanager_common/src/main/java/com/shxy/xymanager_common/exception/base/BaseException.java
@@ -0,0 +1,97 @@
+package com.shxy.xymanager_common.exception.base;
+
+import cn.hutool.core.util.StrUtil;
+import com.shxy.xymanager_common.util.MessageUtils;
+
+/**
+ * 基础异常
+ *
+ * @author xzg
+ */
+public class BaseException extends RuntimeException
+{
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 所属模块
+ */
+ private String module;
+
+ /**
+ * 错误码
+ */
+ private String code;
+
+ /**
+ * 错误码对应的参数
+ */
+ private Object[] args;
+
+ /**
+ * 错误消息
+ */
+ private String defaultMessage;
+
+ public BaseException(String module, String code, Object[] args, String defaultMessage)
+ {
+ this.module = module;
+ this.code = code;
+ this.args = args;
+ this.defaultMessage = defaultMessage;
+ }
+
+ public BaseException(String module, String code, Object[] args)
+ {
+ this(module, code, args, null);
+ }
+
+ public BaseException(String module, String defaultMessage)
+ {
+ this(module, null, null, defaultMessage);
+ }
+
+ public BaseException(String code, Object[] args)
+ {
+ this(null, code, args, null);
+ }
+
+ public BaseException(String defaultMessage)
+ {
+ this(null, null, null, defaultMessage);
+ }
+
+ @Override
+ public String getMessage()
+ {
+ String message = null;
+ if (!StrUtil.isEmpty(code))
+ {
+ message = MessageUtils.message(code, args);
+ }
+ if (message == null)
+ {
+ message = defaultMessage;
+ }
+ return message;
+ }
+
+ public String getModule()
+ {
+ return module;
+ }
+
+ public String getCode()
+ {
+ return code;
+ }
+
+ public Object[] getArgs()
+ {
+ return args;
+ }
+
+ public String getDefaultMessage()
+ {
+ return defaultMessage;
+ }
+}
diff --git a/xymanager_common/src/main/java/com/shxy/xymanager_common/exception/file/FileException.java b/xymanager_common/src/main/java/com/shxy/xymanager_common/exception/file/FileException.java
new file mode 100644
index 0000000..cd910fa
--- /dev/null
+++ b/xymanager_common/src/main/java/com/shxy/xymanager_common/exception/file/FileException.java
@@ -0,0 +1,20 @@
+package com.shxy.xymanager_common.exception.file;
+
+
+import com.shxy.xymanager_common.exception.base.BaseException;
+
+/**
+ * 文件信息异常类
+ *
+ * @author xzg
+ */
+public class FileException extends BaseException
+{
+ private static final long serialVersionUID = 1L;
+
+ public FileException(String code, Object[] args)
+ {
+ super("file", code, args, null);
+ }
+
+}
diff --git a/xymanager_common/src/main/java/com/shxy/xymanager_common/exception/file/FileNameLengthLimitExceededException.java b/xymanager_common/src/main/java/com/shxy/xymanager_common/exception/file/FileNameLengthLimitExceededException.java
new file mode 100644
index 0000000..615836f
--- /dev/null
+++ b/xymanager_common/src/main/java/com/shxy/xymanager_common/exception/file/FileNameLengthLimitExceededException.java
@@ -0,0 +1,16 @@
+package com.shxy.xymanager_common.exception.file;
+
+/**
+ * 文件名称超长限制异常类
+ *
+ * @author xzg
+ */
+public class FileNameLengthLimitExceededException extends FileException
+{
+ private static final long serialVersionUID = 1L;
+
+ public FileNameLengthLimitExceededException(int defaultFileNameLength)
+ {
+ super("upload.filename.exceed.length", new Object[] { defaultFileNameLength });
+ }
+}
diff --git a/xymanager_common/src/main/java/com/shxy/xymanager_common/exception/file/FileSizeLimitExceededException.java b/xymanager_common/src/main/java/com/shxy/xymanager_common/exception/file/FileSizeLimitExceededException.java
new file mode 100644
index 0000000..0303e06
--- /dev/null
+++ b/xymanager_common/src/main/java/com/shxy/xymanager_common/exception/file/FileSizeLimitExceededException.java
@@ -0,0 +1,16 @@
+package com.shxy.xymanager_common.exception.file;
+
+/**
+ * 文件名大小限制异常类
+ *
+ * @author xzg
+ */
+public class FileSizeLimitExceededException extends FileException
+{
+ private static final long serialVersionUID = 1L;
+
+ public FileSizeLimitExceededException(long defaultMaxSize)
+ {
+ super("upload.exceed.maxSize", new Object[] { defaultMaxSize });
+ }
+}
diff --git a/xymanager_common/src/main/java/com/shxy/xymanager_common/exception/file/InvalidExtensionException.java b/xymanager_common/src/main/java/com/shxy/xymanager_common/exception/file/InvalidExtensionException.java
new file mode 100644
index 0000000..71a5e84
--- /dev/null
+++ b/xymanager_common/src/main/java/com/shxy/xymanager_common/exception/file/InvalidExtensionException.java
@@ -0,0 +1,84 @@
+package com.shxy.xymanager_common.exception.file;
+
+
+
+import org.apache.commons.fileupload.FileUploadException;
+
+import java.util.Arrays;
+
+/**
+ * 文件上传 误异常类
+ *
+ * @author xzg
+ */
+public class InvalidExtensionException extends FileUploadException
+{
+ private static final long serialVersionUID = 1L;
+
+ private String[] allowedExtension;
+ private String extension;
+ private String filename;
+
+ public InvalidExtensionException(String[] allowedExtension, String extension, String filename)
+ {
+ super("filename : [" + filename + "], extension : [" + extension + "], allowed extension : [" + Arrays.toString(allowedExtension) + "]");
+ this.allowedExtension = allowedExtension;
+ this.extension = extension;
+ this.filename = filename;
+ }
+
+ public String[] getAllowedExtension()
+ {
+ return allowedExtension;
+ }
+
+ public String getExtension()
+ {
+ return extension;
+ }
+
+ public String getFilename()
+ {
+ return filename;
+ }
+
+ public static class InvalidImageExtensionException extends InvalidExtensionException
+ {
+ private static final long serialVersionUID = 1L;
+
+ public InvalidImageExtensionException(String[] allowedExtension, String extension, String filename)
+ {
+ super(allowedExtension, extension, filename);
+ }
+ }
+
+ public static class InvalidFlashExtensionException extends InvalidExtensionException
+ {
+ private static final long serialVersionUID = 1L;
+
+ public InvalidFlashExtensionException(String[] allowedExtension, String extension, String filename)
+ {
+ super(allowedExtension, extension, filename);
+ }
+ }
+
+ public static class InvalidMediaExtensionException extends InvalidExtensionException
+ {
+ private static final long serialVersionUID = 1L;
+
+ public InvalidMediaExtensionException(String[] allowedExtension, String extension, String filename)
+ {
+ super(allowedExtension, extension, filename);
+ }
+ }
+
+ public static class InvalidVideoExtensionException extends InvalidExtensionException
+ {
+ private static final long serialVersionUID = 1L;
+
+ public InvalidVideoExtensionException(String[] allowedExtension, String extension, String filename)
+ {
+ super(allowedExtension, extension, filename);
+ }
+ }
+}
diff --git a/xymanager_common/src/main/java/com/shxy/xymanager_common/model/TerminalListModel.java b/xymanager_common/src/main/java/com/shxy/xymanager_common/model/TerminalListModel.java
new file mode 100644
index 0000000..bf1ad43
--- /dev/null
+++ b/xymanager_common/src/main/java/com/shxy/xymanager_common/model/TerminalListModel.java
@@ -0,0 +1,75 @@
+package com.shxy.xymanager_common.model;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import jdk.nashorn.internal.ir.Terminal;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 设备信息列表
+ */
+@Data
+@ApiModel(value = "获取设备列表", description = "获取设备列表信息")
+public class TerminalListModel implements Serializable {
+
+ @ApiModelProperty(value = "设备列表", example = "[]")
+ private List terminalBeanList;
+
+ @Data
+ public static class TerminalBean {
+
+ @ApiModelProperty(value = "线路编号", example = "123456")
+ private Integer lineid;
+
+ @ApiModelProperty(value = "杆塔编号", example = "123456")
+ private Integer towerid;
+
+ @ApiModelProperty(value = "图像监测装置 ID(17 位编码)", example = "12345678")
+ private String cmdid;
+
+ @ApiModelProperty(value = "原始 ID,各厂家内部识别号", example = "12345678")
+ private Short orgId;
+
+ @ApiModelProperty(value = "装置名称", example = "名称名称")
+ private String equipName;
+
+ @ApiModelProperty(value = "显示名", example = "名称名称")
+ private String displayName;
+
+ @ApiModelProperty(value = "装置型号", example = "型号型号")
+ private String model;
+
+ @ApiModelProperty(value = "装置基本信息版本号", example = "型号型号")
+ private String essentialInfoVersion;
+
+ @ApiModelProperty(value = "是否带云台", example = " 0: 不带云台 1:带云台")
+ private Byte hasPan;
+
+ @ApiModelProperty(value = "生产厂家", example = "生产厂家")
+ private String bsManufacturer;
+
+ @ApiModelProperty(value = "生产日期", example = "2022-06-12")
+ private Date bsProductionDate;
+
+ @ApiModelProperty(value = "出厂编号", example = "123456")
+ private String bsIdentifier;
+
+ @ApiModelProperty(value = "纬度", example = "21321")
+ private Double latitude;
+
+ @ApiModelProperty(value = "经度", example = "213")
+ private Double longitude;
+
+ @ApiModelProperty(value = "创建时间", example = "2022-06-08")
+ private Date createTime;
+
+ @ApiModelProperty(value = "修改时间", example = "2022-06-08")
+ private Date updateTime;
+
+
+ }
+}
diff --git a/xymanager_common/src/main/java/com/shxy/xymanager_common/page/PageDomain.java b/xymanager_common/src/main/java/com/shxy/xymanager_common/page/PageDomain.java
new file mode 100644
index 0000000..4befe94
--- /dev/null
+++ b/xymanager_common/src/main/java/com/shxy/xymanager_common/page/PageDomain.java
@@ -0,0 +1,95 @@
+package com.shxy.xymanager_common.page;
+
+
+import cn.hutool.core.util.StrUtil;
+import com.shxy.xymanager_common.util.StringUtils;
+
+/**
+ * 分页数据
+ *
+ * @author 晶晶
+ */
+public class PageDomain {
+ /**
+ * 当前记录起始索引
+ */
+ private Integer pageNum;
+
+ /**
+ * 每页显示记录数
+ */
+ private Integer pageSize;
+
+ /**
+ * 排序列
+ */
+ private String orderByColumn;
+
+ /**
+ * 排序的方向desc或者asc
+ */
+ private String isAsc = "asc";
+
+ /**
+ * 分页参数合理化
+ */
+ private Boolean reasonable = true;
+
+ public String getOrderBy() {
+ if (StrUtil.isEmpty(orderByColumn)) {
+ return "";
+ }
+ return StringUtils.toUnderScoreCase(orderByColumn) + " " + isAsc;
+ }
+
+ public Integer getPageNum() {
+ return pageNum;
+ }
+
+ public void setPageNum(Integer pageNum) {
+ this.pageNum = pageNum;
+ }
+
+ public Integer getPageSize() {
+ return pageSize;
+ }
+
+ public void setPageSize(Integer pageSize) {
+ this.pageSize = pageSize;
+ }
+
+ public String getOrderByColumn() {
+ return orderByColumn;
+ }
+
+ public void setOrderByColumn(String orderByColumn) {
+ this.orderByColumn = orderByColumn;
+ }
+
+ public String getIsAsc() {
+ return isAsc;
+ }
+
+ public void setIsAsc(String isAsc) {
+ if (StringUtils.isNotEmpty(isAsc)) {
+ // 兼容前端排序类型
+ if ("ascending".equals(isAsc)) {
+ isAsc = "asc";
+ } else if ("descending".equals(isAsc)) {
+ isAsc = "desc";
+ }
+ this.isAsc = isAsc;
+ }
+ }
+
+ public Boolean getReasonable() {
+ if (StringUtils.isNull(reasonable)) {
+ return Boolean.TRUE;
+ }
+ return reasonable;
+ }
+
+ public void setReasonable(Boolean reasonable) {
+ this.reasonable = reasonable;
+ }
+}
diff --git a/xymanager_common/src/main/java/com/shxy/xymanager_common/page/PageUtils.java b/xymanager_common/src/main/java/com/shxy/xymanager_common/page/PageUtils.java
new file mode 100644
index 0000000..8572579
--- /dev/null
+++ b/xymanager_common/src/main/java/com/shxy/xymanager_common/page/PageUtils.java
@@ -0,0 +1,65 @@
+package com.shxy.xymanager_common.page;
+
+
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import com.shxy.xymanager_common.util.StringUtils;
+import com.shxy.xymanager_common.util.http.HttpStatus;
+import com.shxy.xymanager_common.util.sql.SqlUtils;
+
+import java.util.List;
+
+public class PageUtils {
+ /**
+ * 设置请求分页数据
+ */
+ public static void startPage() {
+ PageDomain pageDomain = TableSupport.buildPageRequest();
+ Integer pageNum = pageDomain.getPageNum();
+ Integer pageSize = pageDomain.getPageSize();
+ if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)) {
+ String orderBy = SqlUtils.escapeOrderBySql(pageDomain.getOrderBy());
+ Boolean reasonable = pageDomain.getReasonable();
+ PageHelper.startPage(pageNum, pageSize, orderBy).setReasonable(reasonable);
+ }
+ }
+
+ /**
+ * 设置请求分页数据
+ */
+ public static void SetPage(int pagenum, int pagesize) {
+ PageHelper.startPage(pagenum, pagesize);
+ }
+
+ /**
+ * 格式化查询的数据
+ */
+ public static PageInfo getPageData(List list) {
+ PageInfo pageInfo = new PageInfo(list);
+ return pageInfo;
+ }
+
+ /**
+ * 设置请求排序数据
+ */
+ public static void startOrderBy() {
+ PageDomain pageDomain = TableSupport.buildPageRequest();
+ if (StringUtils.isNotEmpty(pageDomain.getOrderBy())) {
+ String orderBy = SqlUtils.escapeOrderBySql(pageDomain.getOrderBy());
+ PageHelper.orderBy(orderBy);
+ }
+ }
+
+ /**
+ * 响应请求分页数据
+ */
+ @SuppressWarnings({"rawtypes", "unchecked"})
+ public static TableDataInfo getDataTable(List> list) {
+ TableDataInfo rspData = new TableDataInfo();
+ rspData.setCode(HttpStatus.HTTP_OK);
+ rspData.setMsg("查询成功");
+ rspData.setRows(list);
+ rspData.setTotal(new PageInfo(list).getTotal());
+ return rspData;
+ }
+}
diff --git a/xymanager_common/src/main/java/com/shxy/xymanager_common/page/TableDataInfo.java b/xymanager_common/src/main/java/com/shxy/xymanager_common/page/TableDataInfo.java
new file mode 100644
index 0000000..55ea804
--- /dev/null
+++ b/xymanager_common/src/main/java/com/shxy/xymanager_common/page/TableDataInfo.java
@@ -0,0 +1,87 @@
+package com.shxy.xymanager_common.page;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * 表格分页数据对象
+ *
+ * @author 晶晶
+ */
+@Data
+@ApiModel(value = "批量查询接口返回", description = "接口响应返回")
+public class TableDataInfo implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 总记录数
+ */
+ private long total;
+
+ /**
+ * 列表数据
+ */
+ private List> rows;
+
+ /**
+ * 消息状态码
+ */
+ private int code;
+
+ /**
+ * 消息内容
+ */
+ private String msg;
+
+ /**
+ * 表格数据对象
+ */
+ public TableDataInfo() {
+ }
+
+ /**
+ * 分页
+ *
+ * @param list 列表数据
+ * @param total 总记录数
+ */
+ public TableDataInfo(List> list, int total) {
+ this.rows = list;
+ this.total = total;
+ }
+
+ public long getTotal() {
+ return total;
+ }
+
+ public void setTotal(long total) {
+ this.total = total;
+ }
+
+ public List> getRows() {
+ return rows;
+ }
+
+ public void setRows(List> rows) {
+ this.rows = rows;
+ }
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public String getMsg() {
+ return msg;
+ }
+
+ public void setMsg(String msg) {
+ this.msg = msg;
+ }
+}
diff --git a/xymanager_common/src/main/java/com/shxy/xymanager_common/page/TableSupport.java b/xymanager_common/src/main/java/com/shxy/xymanager_common/page/TableSupport.java
new file mode 100644
index 0000000..6e861c4
--- /dev/null
+++ b/xymanager_common/src/main/java/com/shxy/xymanager_common/page/TableSupport.java
@@ -0,0 +1,53 @@
+package com.shxy.xymanager_common.page;
+
+
+import com.shxy.xymanager_common.util.ServletUtils;
+
+/**
+ * 表格数据处理
+ *
+ * @author xzg
+ */
+public class TableSupport {
+ /**
+ * 当前记录起始索引
+ */
+ public static final String PAGE_NUM = "pageNum";
+
+ /**
+ * 每页显示记录数
+ */
+ public static final String PAGE_SIZE = "pageSize";
+
+ /**
+ * 排序列
+ */
+ public static final String ORDER_BY_COLUMN = "orderByColumn";
+
+ /**
+ * 排序的方向 "desc" 或者 "asc".
+ */
+ public static final String IS_ASC = "isAsc";
+
+ /**
+ * 分页参数合理化
+ */
+ public static final String REASONABLE = "reasonable";
+
+ /**
+ * 封装分页对象
+ */
+ public static PageDomain getPageDomain() {
+ PageDomain pageDomain = new PageDomain();
+ pageDomain.setPageNum(ServletUtils.getParameterToInt(PAGE_NUM));
+ pageDomain.setPageSize(ServletUtils.getParameterToInt(PAGE_SIZE));
+ pageDomain.setOrderByColumn(ServletUtils.getParameter(ORDER_BY_COLUMN));
+ pageDomain.setIsAsc(ServletUtils.getParameter(IS_ASC));
+ pageDomain.setReasonable(ServletUtils.getParameterToBool(REASONABLE));
+ return pageDomain;
+ }
+
+ public static PageDomain buildPageRequest() {
+ return getPageDomain();
+ }
+}
diff --git a/xymanager_common/src/main/java/com/shxy/xymanager_common/CharsetKit.java b/xymanager_common/src/main/java/com/shxy/xymanager_common/util/CharsetKit.java
similarity index 98%
rename from xymanager_common/src/main/java/com/shxy/xymanager_common/CharsetKit.java
rename to xymanager_common/src/main/java/com/shxy/xymanager_common/util/CharsetKit.java
index 84a6507..c15be0e 100644
--- a/xymanager_common/src/main/java/com/shxy/xymanager_common/CharsetKit.java
+++ b/xymanager_common/src/main/java/com/shxy/xymanager_common/util/CharsetKit.java
@@ -1,4 +1,4 @@
-package com.shxy.xymanager_common;
+package com.shxy.xymanager_common.util;
import com.shxy.xymanager_common.util.StringUtils;
diff --git a/xymanager_common/src/main/java/com/shxy/xymanager_common/Convert.java b/xymanager_common/src/main/java/com/shxy/xymanager_common/util/Convert.java
similarity index 99%
rename from xymanager_common/src/main/java/com/shxy/xymanager_common/Convert.java
rename to xymanager_common/src/main/java/com/shxy/xymanager_common/util/Convert.java
index 5cfffd2..f34d614 100644
--- a/xymanager_common/src/main/java/com/shxy/xymanager_common/Convert.java
+++ b/xymanager_common/src/main/java/com/shxy/xymanager_common/util/Convert.java
@@ -1,5 +1,6 @@
-package com.shxy.xymanager_common;
+package com.shxy.xymanager_common.util;
+import com.shxy.xymanager_common.util.CharsetKit;
import com.shxy.xymanager_common.util.StringUtils;
import org.apache.commons.lang3.ArrayUtils;
diff --git a/xymanager_common/src/main/java/com/shxy/xymanager_common/util/MessageUtils.java b/xymanager_common/src/main/java/com/shxy/xymanager_common/util/MessageUtils.java
new file mode 100644
index 0000000..83ce675
--- /dev/null
+++ b/xymanager_common/src/main/java/com/shxy/xymanager_common/util/MessageUtils.java
@@ -0,0 +1,26 @@
+package com.shxy.xymanager_common.util;
+
+import com.shxy.xymanager_common.util.spring.SpringUtils;
+import org.springframework.context.MessageSource;
+import org.springframework.context.i18n.LocaleContextHolder;
+
+/**
+ * 获取i18n资源文件
+ *
+ * @author xzg
+ */
+public class MessageUtils
+{
+ /**
+ * 根据消息键和参数 获取消息 委托给spring messageSource
+ *
+ * @param code 消息键
+ * @param args 参数
+ * @return 获取国际化翻译值
+ */
+ public static String message(String code, Object... args)
+ {
+ MessageSource messageSource = SpringUtils.getBean(MessageSource.class);
+ return messageSource.getMessage(code, args, LocaleContextHolder.getLocale());
+ }
+}
diff --git a/xymanager_common/src/main/java/com/shxy/xymanager_common/ServletUtils.java b/xymanager_common/src/main/java/com/shxy/xymanager_common/util/ServletUtils.java
similarity index 97%
rename from xymanager_common/src/main/java/com/shxy/xymanager_common/ServletUtils.java
rename to xymanager_common/src/main/java/com/shxy/xymanager_common/util/ServletUtils.java
index 4fa4298..89b7aff 100644
--- a/xymanager_common/src/main/java/com/shxy/xymanager_common/ServletUtils.java
+++ b/xymanager_common/src/main/java/com/shxy/xymanager_common/util/ServletUtils.java
@@ -1,6 +1,5 @@
-package com.shxy.xymanager_common;
+package com.shxy.xymanager_common.util;
-import com.shxy.xymanager_common.util.StringUtils;
import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
diff --git a/xymanager_common/src/main/java/com/shxy/xymanager_common/StrFormatter.java b/xymanager_common/src/main/java/com/shxy/xymanager_common/util/StrFormatter.java
similarity index 97%
rename from xymanager_common/src/main/java/com/shxy/xymanager_common/StrFormatter.java
rename to xymanager_common/src/main/java/com/shxy/xymanager_common/util/StrFormatter.java
index 4ab54a2..1eb7a2a 100644
--- a/xymanager_common/src/main/java/com/shxy/xymanager_common/StrFormatter.java
+++ b/xymanager_common/src/main/java/com/shxy/xymanager_common/util/StrFormatter.java
@@ -1,6 +1,4 @@
-package com.shxy.xymanager_common;
-
-import com.shxy.xymanager_common.util.StringUtils;
+package com.shxy.xymanager_common.util;
/**
* 字符串格式化
diff --git a/xymanager_common/src/main/java/com/shxy/xymanager_common/util/StringUtils.java b/xymanager_common/src/main/java/com/shxy/xymanager_common/util/StringUtils.java
index 7b849e2..30876c5 100644
--- a/xymanager_common/src/main/java/com/shxy/xymanager_common/util/StringUtils.java
+++ b/xymanager_common/src/main/java/com/shxy/xymanager_common/util/StringUtils.java
@@ -1,6 +1,5 @@
package com.shxy.xymanager_common.util;
-import com.shxy.xymanager_common.StrFormatter;
import com.shxy.xymanager_common.constant.Constants;
import org.springframework.util.AntPathMatcher;
diff --git a/xymanager_common/src/main/java/com/shxy/xymanager_common/util/http/HttpStatus.java b/xymanager_common/src/main/java/com/shxy/xymanager_common/util/http/HttpStatus.java
new file mode 100644
index 0000000..ff0fc3d
--- /dev/null
+++ b/xymanager_common/src/main/java/com/shxy/xymanager_common/util/http/HttpStatus.java
@@ -0,0 +1,48 @@
+package com.shxy.xymanager_common.util.http;
+
+public class HttpStatus {
+ public static final int HTTP_OK = 200;
+ public static final int HTTP_CREATED = 201;
+ public static final int HTTP_ACCEPTED = 202;
+ public static final int HTTP_NOT_AUTHORITATIVE = 203;
+ public static final int HTTP_NO_CONTENT = 204;
+ public static final int HTTP_RESET = 205;
+ public static final int HTTP_PARTIAL = 206;
+ public static final int HTTP_MULT_CHOICE = 300;
+ public static final int HTTP_MOVED_PERM = 301;
+ public static final int HTTP_MOVED_TEMP = 302;
+ public static final int HTTP_SEE_OTHER = 303;
+ public static final int HTTP_NOT_MODIFIED = 304;
+ public static final int HTTP_USE_PROXY = 305;
+ public static final int HTTP_TEMP_REDIRECT = 307;
+ public static final int HTTP_PERMANENT_REDIRECT = 308;
+ public static final int HTTP_BAD_REQUEST = 400;
+ public static final int HTTP_UNAUTHORIZED = 401;
+ public static final int HTTP_PAYMENT_REQUIRED = 402;
+ public static final int HTTP_FORBIDDEN = 403;
+ public static final int HTTP_NOT_FOUND = 404;
+ public static final int HTTP_BAD_METHOD = 405;
+ public static final int HTTP_NOT_ACCEPTABLE = 406;
+ public static final int HTTP_PROXY_AUTH = 407;
+ public static final int HTTP_CLIENT_TIMEOUT = 408;
+ public static final int HTTP_CONFLICT = 409;
+ public static final int HTTP_GONE = 410;
+ public static final int HTTP_LENGTH_REQUIRED = 411;
+ public static final int HTTP_PRECON_FAILED = 412;
+ public static final int HTTP_ENTITY_TOO_LARGE = 413;
+ public static final int HTTP_REQ_TOO_LONG = 414;
+ public static final int HTTP_UNSUPPORTED_TYPE = 415;
+ public static final int HTTP_INTERNAL_ERROR = 500;
+ public static final int HTTP_NOT_IMPLEMENTED = 501;
+ public static final int HTTP_BAD_GATEWAY = 502;
+ public static final int HTTP_UNAVAILABLE = 503;
+ public static final int HTTP_GATEWAY_TIMEOUT = 504;
+ public static final int HTTP_VERSION = 505;
+
+ public HttpStatus() {
+ }
+
+ public static boolean isRedirected(int responseCode) {
+ return responseCode == 301 || responseCode == 302 || responseCode == 303 || responseCode == 307 || responseCode == 308;
+ }
+}
diff --git a/xymanager_common/src/main/java/com/shxy/xymanager_common/util/spring/SpringUtils.java b/xymanager_common/src/main/java/com/shxy/xymanager_common/util/spring/SpringUtils.java
new file mode 100644
index 0000000..9793765
--- /dev/null
+++ b/xymanager_common/src/main/java/com/shxy/xymanager_common/util/spring/SpringUtils.java
@@ -0,0 +1,146 @@
+package com.shxy.xymanager_common.util.spring;
+
+import com.shxy.xymanager_common.util.StringUtils;
+import org.springframework.aop.framework.AopContext;
+import org.springframework.beans.BeansException;
+import org.springframework.beans.factory.NoSuchBeanDefinitionException;
+import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
+import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationContextAware;
+import org.springframework.stereotype.Component;
+
+/**
+ * spring工具类 方便在非spring管理环境中获取bean
+ *
+ * @author xzg
+ */
+@Component
+public final class SpringUtils implements BeanFactoryPostProcessor, ApplicationContextAware
+{
+ /** Spring应用上下文环境 */
+ private static ConfigurableListableBeanFactory beanFactory;
+
+ private static ApplicationContext applicationContext;
+
+ @Override
+ public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException
+ {
+ beanFactory = beanFactory;
+ }
+
+ @Override
+ public void setApplicationContext(ApplicationContext applicationContext) throws BeansException
+ {
+ applicationContext = applicationContext;
+ }
+
+ /**
+ * 获取对象
+ *
+ * @param name
+ * @return Object 一个以所给名字注册的bean的实例
+ * @throws BeansException
+ *
+ */
+ @SuppressWarnings("unchecked")
+ public static T getBean(String name) throws BeansException
+ {
+ return (T) beanFactory.getBean(name);
+ }
+
+ /**
+ * 获取类型为requiredType的对象
+ *
+ * @param clz
+ * @return
+ * @throws BeansException
+ *
+ */
+ public static T getBean(Class clz) throws BeansException
+ {
+ T result = (T) beanFactory.getBean(clz);
+ return result;
+ }
+
+ /**
+ * 如果BeanFactory包含一个与所给名称匹配的bean定义,则返回true
+ *
+ * @param name
+ * @return boolean
+ */
+ public static boolean containsBean(String name)
+ {
+ return beanFactory.containsBean(name);
+ }
+
+ /**
+ * 判断以给定名字注册的bean定义是一个singleton还是一个prototype。 如果与给定名字相应的bean定义没有被找到,将会抛出一个异常(NoSuchBeanDefinitionException)
+ *
+ * @param name
+ * @return boolean
+ * @throws NoSuchBeanDefinitionException
+ *
+ */
+ public static boolean isSingleton(String name) throws NoSuchBeanDefinitionException
+ {
+ return beanFactory.isSingleton(name);
+ }
+
+ /**
+ * @param name
+ * @return Class 注册对象的类型
+ * @throws NoSuchBeanDefinitionException
+ *
+ */
+ public static Class> getType(String name) throws NoSuchBeanDefinitionException
+ {
+ return beanFactory.getType(name);
+ }
+
+ /**
+ * 如果给定的bean名字在bean定义中有别名,则返回这些别名
+ *
+ * @param name
+ * @return
+ * @throws NoSuchBeanDefinitionException
+ *
+ */
+ public static String[] getAliases(String name) throws NoSuchBeanDefinitionException
+ {
+ return beanFactory.getAliases(name);
+ }
+
+ /**
+ * 获取aop代理对象
+ *
+ * @param invoker
+ * @return
+ */
+ @SuppressWarnings("unchecked")
+ public static T getAopProxy(T invoker)
+ {
+ return (T) AopContext.currentProxy();
+ }
+
+ /**
+ * 获取当前的环境配置,无配置返回null
+ *
+ * @return 当前的环境配置
+ */
+ public static String[] getActiveProfiles()
+ {
+ return applicationContext.getEnvironment().getActiveProfiles();
+ }
+
+ /**
+ * 获取当前的环境配置,当有多个环境配置时,只获取第一个
+ *
+ * @return 当前的环境配置
+ */
+ public static String getActiveProfile()
+ {
+ final String[] activeProfiles = getActiveProfiles();
+ return StringUtils.isNotEmpty(activeProfiles) ? activeProfiles[0] : null;
+ }
+}
diff --git a/xymanager_common/src/main/java/com/shxy/xymanager_common/util/sql/SqlUtils.java b/xymanager_common/src/main/java/com/shxy/xymanager_common/util/sql/SqlUtils.java
new file mode 100644
index 0000000..9bf07e8
--- /dev/null
+++ b/xymanager_common/src/main/java/com/shxy/xymanager_common/util/sql/SqlUtils.java
@@ -0,0 +1,62 @@
+package com.shxy.xymanager_common.util.sql;
+
+
+import cn.hutool.core.exceptions.UtilException;
+import com.shxy.xymanager_common.util.StringUtils;
+
+/**
+ * sql操作工具类
+ *
+ * @author ruoyi
+ */
+public class SqlUtils extends cn.hutool.db.sql.SqlUtil
+{
+ /**
+ * 定义常用的 sql关键字
+ */
+ public static String SQL_REGEX = "select |insert |delete |update |drop |count |exec |chr |mid |master |truncate |char |and |declare ";
+
+ /**
+ * 仅支持字母、数字、下划线、空格、逗号、小数点(支持多个字段排序)
+ */
+ public static String SQL_PATTERN = "[a-zA-Z0-9_\\ \\,\\.]+";
+
+ /**
+ * 检查字符,防止注入绕过
+ */
+ public static String escapeOrderBySql(String value)
+ {
+ if (StringUtils.isNotEmpty(value) && !isValidOrderBySql(value))
+ {
+ throw new UtilException("参数不符合规范,不能进行查询");
+ }
+ return value;
+ }
+
+ /**
+ * 验证 order by 语法是否符合规范
+ */
+ public static boolean isValidOrderBySql(String value)
+ {
+ return value.matches(SQL_PATTERN);
+ }
+
+ /**
+ * SQL关键字检查
+ */
+ public static void filterKeyword(String value)
+ {
+ if (StringUtils.isEmpty(value))
+ {
+ return;
+ }
+ String[] sqlKeywords = StringUtils.split(SQL_REGEX, "\\|");
+ for (String sqlKeyword : sqlKeywords)
+ {
+ if (StringUtils.indexOfIgnoreCase(value, sqlKeyword) > -1)
+ {
+ throw new UtilException("参数存在SQL注入风险");
+ }
+ }
+ }
+}
diff --git a/xymanager_dao/pom.xml b/xymanager_dao/pom.xml
index 8c292b0..1fe3cf4 100644
--- a/xymanager_dao/pom.xml
+++ b/xymanager_dao/pom.xml
@@ -6,14 +6,15 @@
com.shxy
1.0.0
+
4.0.0
- com.shxy
+
xymanager_dao
- xymanager_dao
- xymanager_dao
+
1.8
+
com.shxy
diff --git a/xymanager_dao/src/main/java/com/shxy/xymanager_dao/dao/TerminalsDao.java b/xymanager_dao/src/main/java/com/shxy/xymanager_dao/dao/TerminalsDao.java
index 8babd63..9345ef5 100644
--- a/xymanager_dao/src/main/java/com/shxy/xymanager_dao/dao/TerminalsDao.java
+++ b/xymanager_dao/src/main/java/com/shxy/xymanager_dao/dao/TerminalsDao.java
@@ -2,10 +2,14 @@ package com.shxy.xymanager_dao.dao;
import com.shxy.xymanager_common.entity.Terminals;
+import java.util.List;
+
public interface TerminalsDao {
int insertSelective(Terminals record);
+ List selectAll();
+
Terminals selectByPrimaryKey(Integer id);
int updateByPrimaryKeySelective(Terminals record);
diff --git a/xymanager_dao/src/main/resources/mappers/TerminalsDao.xml b/xymanager_dao/src/main/resources/mappers/TerminalsDao.xml
index e6ee157..d0afa6d 100644
--- a/xymanager_dao/src/main/resources/mappers/TerminalsDao.xml
+++ b/xymanager_dao/src/main/resources/mappers/TerminalsDao.xml
@@ -3,6 +3,8 @@
+
+
@@ -19,10 +21,17 @@
- id, cmdid, org_id, equip_name, display_name, model, essential_info_version, has_pan,
+ id, line_id,tower_id,cmdid, org_id, equip_name, display_name, model, essential_info_version, has_pan,
bs_manufacturer, bs_production_date, bs_identifier, latitude, longitude, create_time,
update_time
+
+
+