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 + + +