master
ZhiShuo_Lou 2023-11-21 15:18:41 +08:00
parent 2cfc4be141
commit 1bd707698e
16 changed files with 464 additions and 296 deletions

View File

@ -1,30 +0,0 @@
package com.god.base.common;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Fence {
/** 电子围栏ID */
private Integer fenceId ;
/** 围栏名称 */
private String fenceName ;
/** 围栏经纬度 */
private String fenceLat ;
/** 激活状态 */
private Integer fenceStatus ;
/** 操作时间 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private Date fenceTime ;
/** 操作者 */
private Integer createBy ;
}

View File

@ -0,0 +1,96 @@
package com.god.base.common.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.god.base.common.domain.request.FenceAddRequest;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.Date;
/**
*
*
* @Author Lou-Zs
* @Date 2023/11/20 19:41
**/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@TableName(value = "t_fence")
public class Fence {
/**
*
*/
@TableId(value = "fence_id",type = IdType.AUTO)
private long fenceId;
/**
*
*/
@NotEmpty(message = "围栏名称不能为空")
private String fenceName;
/**
*
*/
private String fenceLocation;
/**
*
* 0-
* 1-
*/
private Integer fenceStatus;
/**
*
* 1-
* 2-
*/
private Integer driveStatus;
/**
*
*/
private String carVinId;
/**
*
*/
@DateTimeFormat(pattern = "yyyy-MM-dd HH-mm-ss")
@JsonFormat(pattern = "yyyy-MM-dd HH-mm-ss",timezone = "GMT+8")
private Date createTime;
/**
*
*/
@DateTimeFormat(pattern = "yyyy-MM-dd HH-mm-ss")
@JsonFormat(pattern = "yyyy-MM-dd HH-mm-ss",timezone = "GMT+8")
private Date updateTime;
public static Fence fenceBuildAdd(FenceAddRequest fenceAddRequest){
return Fence.builder()
.fenceName(fenceAddRequest.getFenceName())
.fenceLocation(fenceAddRequest.getFenceLocation())
.fenceStatus(fenceAddRequest.getFenceStatus())
.driveStatus(fenceAddRequest.getDriveStatus())
.carVinId(fenceAddRequest.getCarVinId())
.createTime(fenceAddRequest.getCreateTime())
.updateTime(fenceAddRequest.getUpdateTime())
.build();
}
}

View File

@ -0,0 +1,76 @@
package com.god.base.common.domain.request;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotEmpty;
import java.util.Date;
/**
*
*
* @author Lou-Zs
* @Date 2023/11/20 19:41
**/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@TableName(value = "t_fence")
public class FenceAddRequest {
/**
*
*/
@NotEmpty(message = "围栏名称不能为空")
private String fenceName;
/**
*
*/
private String fenceLocation;
/**
*
* 0-
* 1-
*/
private Integer fenceStatus;
/**
*
* 1-
* 2-
*/
private Integer driveStatus;
/**
*
*/
private String carVinId;
/**
*
*/
@DateTimeFormat(pattern = "yyyy-MM-dd HH-mm-ss")
@JsonFormat(pattern = "yyyy-MM-dd HH-mm-ss",timezone = "GMT+8")
private Date createTime;
/**
*
*/
@DateTimeFormat(pattern = "yyyy-MM-dd HH-mm-ss")
@JsonFormat(pattern = "yyyy-MM-dd HH-mm-ss",timezone = "GMT+8")
private Date updateTime;
}

View File

@ -0,0 +1,46 @@
package com.god.base.common.domain.request;
import com.god.base.common.page.PageQuery;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import javax.validation.constraints.NotEmpty;
/**
*
*
* @author Lou-Zs
* @Date 2023/11/20 22:01
**/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class FenceQueryRequest extends PageQuery {
/**
*
*/
private String fenceName;
/**
*
* 0-
* 1-
*/
private Integer fenceStatus;
/**
*
* 1-
* 2-
*/
private Integer driveStatus;
}

View File

@ -0,0 +1,36 @@
package com.god.base.common.page;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
*
*
* @author Lou-Zs
* @Date 2023/11/20 22:03
**/
@Data
@SuperBuilder
@AllArgsConstructor
@NoArgsConstructor
public class PageQuery {
private Integer pageNum;
private Integer pageSize;
public <T> Page<T> buildPage(){
Page<T> page = new Page<>(this.pageNum, this.pageSize);
return page;
}
}

View File

@ -1,30 +0,0 @@
package com.god.base.common.response;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class FenceResponse {
/** 电子围栏ID */
private Integer fenceId ;
/** 围栏名称 */
private String fenceName ;
/** 围栏经纬度 */
private String fenceLat ;
/** 激活状态 */
private Integer fenceStatus ;
/** 操作时间 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private Date fenceTime ;
/** 操作者 */
private Integer createBy ;
}

View File

@ -1,2 +0,0 @@
Spring Boot Version: ${spring-boot.version}
Spring Application Name: ${spring.application.name}

View File

@ -1,28 +0,0 @@
# Tomcat
server:
port: 9802
# Spring
spring:
application:
# 应用名称
name: god-car-base
profiles:
# 环境配置
active: dev
cloud:
nacos:
discovery:
# 服务注册地址
server-addr: nacos.god.com:8848
config:
# 配置中心地址
server-addr: nacos.god.com:8848
# 配置文件格式
file-extension: yml
# 共享配置
shared-configs:
- application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
logging:
level:
com.god.system.mapper: DEBUG

View File

@ -1,74 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<!-- 日志存放路径 -->
<property name="log.path" value="./logs/god-car-base"/>
<!-- 日志输出格式 -->
<property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n"/>
<!-- 控制台输出 -->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
</appender>
<!-- 系统日志输出 -->
<appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/info.log</file>
<!-- 循环政策:基于时间创建日志文件 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 日志文件名格式 -->
<fileNamePattern>${log.path}/info.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 日志最大的历史 60天 -->
<maxHistory>60</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 过滤的级别 -->
<level>INFO</level>
<!-- 匹配时的操作:接收(记录) -->
<onMatch>ACCEPT</onMatch>
<!-- 不匹配时的操作:拒绝(不记录) -->
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/error.log</file>
<!-- 循环政策:基于时间创建日志文件 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 日志文件名格式 -->
<fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 日志最大的历史 60天 -->
<maxHistory>60</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 过滤的级别 -->
<level>ERROR</level>
<!-- 匹配时的操作:接收(记录) -->
<onMatch>ACCEPT</onMatch>
<!-- 不匹配时的操作:拒绝(不记录) -->
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- 系统模块日志级别控制 -->
<logger name="com.god" level="info"/>
<!-- Spring日志级别控制 -->
<logger name="org.springframework" level="warn"/>
<root level="info">
<appender-ref ref="console"/>
</root>
<!--系统操作日志-->
<root level="info">
<appender-ref ref="file_info"/>
<appender-ref ref="file_error"/>
</root>
</configuration>

View File

@ -25,4 +25,4 @@
</dependency>
</dependencies>
</project>
</project>

View File

@ -60,8 +60,14 @@
<artifactId>mysql-connector-j</artifactId>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.2</version>
</dependency>
</dependencies>
<build>
<finalName>${project.artifactId}</finalName>
<plugins>

View File

@ -1,71 +1,113 @@
package com.god.base.server.controller;
/**
* @ClassName FenceController
* @Author Lou-Zs
* @Date 2023/11/19 20:00
* @Version 1.0
* @Description TODO
**/
import com.alibaba.fastjson.JSONObject;
import com.alibaba.nacos.api.model.v2.Result;
import com.god.base.common.Fence;
import com.god.base.common.response.FenceResponse;
import com.god.base.common.domain.Fence;
import com.god.base.common.domain.request.FenceAddRequest;
import com.god.base.common.domain.request.FenceQueryRequest;
import com.god.base.server.service.FenceService;
import com.god.common.core.web.page.TableDataInfo;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
/**
* base
*/
@RestController
@RequestMapping("/fence")
@RequestMapping("/baseFence")
@Log4j2
public class FenceController {
@Autowired
private HttpServletRequest request;
@Autowired
private FenceService fenceService;
private HttpServletRequest request;
// 电子围栏列表
@GetMapping("/fencingList")
public Result<List<FenceResponse>> fencingList(){
log.info("功能名称电子围栏请求URL【{}】,请求方法:【{}】",request.getRequestURI(),
request.getMethod());
Result<List<FenceResponse>> result = fenceService.fencingList();
log.info("功能名称电子围栏请求URL【{}】,请求方法:【{}】,响应结果:【{}】",request.getRequestURI(),
request.getMethod(), JSONObject.toJSONString(result));
return result;
}
/**
*
* @param fenceAddRequest
* @return
*/
@PostMapping("/insertFence")
public Result<String> insertFence(@RequestBody @Validated FenceAddRequest fenceAddRequest){
log.info("功能介绍新增电子围栏,请求方式;{},请求路径:{},请求参数:{}",
request.getMethod(),
request.getRequestURL(),
JSONObject.toJSONString(fenceAddRequest));
// 添加电子围栏
@PostMapping("/addfencing")
public Result addfencing(@RequestBody Fence fence){
log.info("功能名称添加电子围栏请求URL【{}】,请求方法:【{}】,请求参数:【{}】",request.getRequestURI(),
request.getMethod(),fence);
fenceService.addfencing(fence);
Result result = Result.success();
log.info("功能名称添加电子围栏请求URL【{}】,请求方法:【{}】,响应结果:【{}】",request.getRequestURI(),
request.getMethod(), JSONObject.toJSONString(result));
return result;
//围栏添加
fenceService.save(Fence.fenceBuildAdd(fenceAddRequest));
return Result.success();
}
// 删除围栏
@PostMapping("/deleteFencingById/{fencingId}")
public Result deleteFencingById(@PathVariable Integer fencingId){
log.info("功能名称获取编号删除围栏请求URL【{}】,请求方法:【{}】,请求参数:【{}】",request.getRequestURI(),
request.getMethod(),fencingId);
Result result = fenceService.deleteFencingById(fencingId);
log.info("功能名称获取编号删除围栏请求URL【{}】,请求方法:【{}】,响应结果:【{}】",request.getRequestURI(),
request.getMethod(), JSONObject.toJSONString(result));
return result;
/**
*
* @param fence
* @return
*/
@PostMapping("/updateFence")
public Result<String> updateFence(@RequestBody @Validated Fence fence){
log.info("功能介绍:编辑围栏信息,请求方式:{},请求路径:{},请求参数:{}",
request.getMethod(),
request.getRequestURL(),
JSONObject.toJSONString(fence));
//编辑电子围栏信息
fenceService.updateById(fence);
return Result.success();
}
// 修改围栏
@PostMapping("/updateFencing")
public Result updateFencing(@RequestBody Fence fence){
log.info("功能名称修改围栏请求URL【{}】,请求方法:【{}】,请求参数:【{}】",request.getRequestURI(),
request.getMethod(),fence);
Result result = fenceService.updateFencing(fence);
log.info("功能名称修改围栏请求URL【{}】,请求方法:【{}】,响应结果:【{}】",request.getRequestURI(),
request.getMethod(), JSONObject.toJSONString(result));
return result;
/**
*
* @param fenceId
* @return
*/
@PostMapping("/deleteFence/{fenceId}")
public Result<String> deleteFence(@RequestParam("fenceId") String fenceId){
log.info("功能介绍:通过围栏编号删除围栏,请求方式:{},请求路径:{},请求参数:{}",
request.getMethod(),
request.getRequestURL(),
JSONObject.toJSONString(fenceId));
//根据围栏编号删除围栏
fenceService.removeById(fenceId);
return Result.success();
}
/**
*
* @param fenceQueryRequest
* @return
*/
@PostMapping("/fenceListAndPage")
public Result<TableDataInfo<Fence>> fenceListAndPage(@RequestBody FenceQueryRequest fenceQueryRequest){
log.info("功能介绍:查询围栏列表,请求方式:{},请求路径:{},请求参数:{}",
request.getMethod(),
request.getRequestURL(),
JSONObject.toJSONString(fenceQueryRequest));
//分页查询围栏列表
TableDataInfo<Fence> dataInfo = fenceService.fenceListAndPage(fenceQueryRequest);
return Result.success(dataInfo);
}
}

View File

@ -1,18 +1,17 @@
package com.god.base.server.mapper;
import com.god.base.common.Fence;
import com.god.base.common.response.FenceResponse;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.god.base.common.domain.Fence;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* @ClassName FenceMapper
* @Author Lou-Zs
* @Date 2023/11/19 20:28
* @Version 1.0
* @Description TODO
**/
@Mapper
public interface FenceMapper {
List<FenceResponse> fencingList();
public interface FenceMapper extends BaseMapper<Fence> {
void addfencing(Fence fence);
int deleteFencingById(Integer fencingId);
int updateFencing(Fence fence);
}

View File

@ -1,17 +1,24 @@
package com.god.base.server.service;
import com.alibaba.nacos.api.model.v2.Result;
import com.god.base.common.Fence;
import com.god.base.common.response.FenceResponse;
import com.baomidou.mybatisplus.extension.service.IService;
import com.god.base.common.domain.Fence;
import com.god.base.common.domain.request.FenceQueryRequest;
import com.god.common.core.web.page.TableDataInfo;
import java.util.List;
/**
* @ClassName FenceService
* @Author Lou-Zs
* @Date 2023/11/19 22:26
* @Version 1.0
* @Description TODO
**/
public interface FenceService extends IService<Fence> {
public interface FenceService {
Result<List<FenceResponse>> fencingList();
void addfencing(Fence fence);
Result deleteFencingById(Integer fencingId);
Result updateFencing(Fence fence);
/**
*
* @param fenceQueryRequest
* @return
*/
TableDataInfo<Fence> fenceListAndPage(FenceQueryRequest fenceQueryRequest);
}

View File

@ -1,51 +1,111 @@
package com.god.base.server.service.impl;
import com.alibaba.nacos.api.model.v2.Result;
import com.god.base.common.Fence;
import com.god.base.common.response.FenceResponse;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.god.base.common.domain.Fence;
import com.god.base.common.domain.request.FenceQueryRequest;
import com.god.base.server.mapper.FenceMapper;
import com.god.base.server.service.FenceService;
import org.springframework.beans.factory.annotation.Autowired;
import com.god.common.core.web.page.TableDataInfo;
import lombok.extern.log4j.Log4j2;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.util.StringUtil;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
import java.io.Serializable;
/**
* @ClassName FenceServiceImpl
* @Author Lou-Zs
* @Date 2023/11/19 22:26
* @Version 1.0
* @Description TODO
**/
@Service
public class FenceServiceImpl implements FenceService {
@Autowired
private FenceMapper fenceMapper;
@Log4j2
public class FenceServiceImpl extends ServiceImpl<FenceMapper , Fence> implements FenceService {
// 围栏列表
/**
*
* @param entity
* @return
*/
@Override
public Result<List<FenceResponse>> fencingList() {
List<FenceResponse> list=fenceMapper.fencingList();
return Result.success(list);
public boolean save(Fence entity) {
boolean save = super.save(entity);
if (!save){
log.warn("增加围栏:[/-{}-/]失败! 请求参数:{}",
entity.getFenceName(),
JSONObject.toJSONString(entity));
throw new RuntimeException("增添围栏失败!");
}
return true;
}
// 添加围栏
/**
*
* @param id
* @return
*/
@Override
public void addfencing(Fence fence) {
Date date = new Date();
fence.setFenceTime(date);
fenceMapper.addfencing(fence);
public boolean removeById(Serializable id) {
boolean remove = super.removeById(id);
if (!remove){
log.warn("删除围栏编号:[/-{}-/]失败!",
id);
throw new RuntimeException("删除围栏失败!");
}
return true;
}
// 删除围栏
/**
*
* @param entity
* @return
*/
@Override
public Result deleteFencingById(Integer fencingId) {
int i=fenceMapper.deleteFencingById(fencingId);
return i>0?Result.success("围栏已成功删除"):Result.failure("删除失败");
public boolean updateById(Fence entity) {
boolean update = super.updateById(entity);
if (!update){
log.warn("编辑围栏[/-{}-/]未成功! 请求参数:{}",
entity.getFenceName(),
JSONObject.toJSONString(entity));
throw new RuntimeException("编辑围栏失败!");
}
return true;
}
// 删除围栏
/**
*
* @param fenceQueryRequest
* @return
*/
@Override
public Result updateFencing(Fence fence) {
Date date = new Date();
fence.setFenceTime(date);
int i=fenceMapper.updateFencing(fence);
return i>0?Result.success("围栏已成功拦截"):Result.failure("拦截失败");
public TableDataInfo<Fence> fenceListAndPage(FenceQueryRequest fenceQueryRequest) {
LambdaQueryWrapper<Fence> lambdaQueryWrapper = new LambdaQueryWrapper<>();
//判断查询围栏是否为空
if (StringUtils.isNotEmpty(fenceQueryRequest.getFenceName())){
//模糊查询
lambdaQueryWrapper.like(Fence::getFenceName,fenceQueryRequest.getFenceName());
}
//判断激活状态是否为空
if (null != fenceQueryRequest.getFenceStatus()){
//精确查询
lambdaQueryWrapper.eq(Fence::getFenceStatus,fenceQueryRequest.getFenceStatus());
}
//判断行驶状态是否为空
if (null != fenceQueryRequest.getDriveStatus()){
//精确查询
lambdaQueryWrapper.eq(Fence::getDriveStatus,fenceQueryRequest.getDriveStatus());
}
Page<Fence> page = this.page(fenceQueryRequest.buildPage(), lambdaQueryWrapper);
return TableDataInfo.<Fence>builder()
.rows(page.getRecords())
.total(page.getTotal())
.build();
}
}

View File

@ -1,36 +0,0 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.god.base.server.mapper.FenceMapper">
<insert id="addfencing">
insert into(
fence_id,
fence_name,
fence_lat,
fence_status,
fence_time,
create_by) values(
#{fenceId},
#{fenceName},
#{fenceLat},
#{fenceStatus},
#{fenceTime},
#{createBy})
</insert>
<update id="updateFencing">
update t_fence set
fence_name=#{fenceName},
fence_lat=#{fenceLat},
fence_status=#{fenceStatus},
fence_time=#{fenceTime},
create_By=#{createBy} where fence_id=#{fenceId}
</update>
<delete id="deleteFencingById">
delete from t_fence where fence_id=#{fenceId}
</delete>
<select id="fencingList" resultType="com.god.base.common.response.FenceResponse">
select * from t_fence
</select>
</mapper>