@ -0,0 +1,18 @@ | |||||
<?xml version="1.0" encoding="UTF-8"?> | |||||
<project version="4"> | |||||
<component name="CompilerConfiguration"> | |||||
<annotationProcessing> | |||||
<profile name="Maven default annotation processors profile" enabled="true"> | |||||
<sourceOutputDir name="target/generated-sources/annotations" /> | |||||
<sourceTestOutputDir name="target/generated-test-sources/test-annotations" /> | |||||
<outputRelativeToContentRoot value="true" /> | |||||
<module name="uartBackend" /> | |||||
</profile> | |||||
</annotationProcessing> | |||||
</component> | |||||
<component name="JavacSettings"> | |||||
<option name="ADDITIONAL_OPTIONS_OVERRIDE"> | |||||
<module name="uartBackend" options="-parameters" /> | |||||
</option> | |||||
</component> | |||||
</project> |
@ -0,0 +1,7 @@ | |||||
<?xml version="1.0" encoding="UTF-8"?> | |||||
<project version="4"> | |||||
<component name="Encoding" defaultCharsetForPropertiesFiles="UTF-8"> | |||||
<file url="file://$PROJECT_DIR$/src/main/java" charset="UTF-8" /> | |||||
<file url="PROJECT" charset="UTF-8" /> | |||||
</component> | |||||
</project> |
@ -0,0 +1,20 @@ | |||||
<?xml version="1.0" encoding="UTF-8"?> | |||||
<project version="4"> | |||||
<component name="RemoteRepositoriesConfiguration"> | |||||
<remote-repository> | |||||
<option name="id" value="central" /> | |||||
<option name="name" value="Central Repository" /> | |||||
<option name="url" value="http://maven.aliyun.com/nexus/content/repositories/central/" /> | |||||
</remote-repository> | |||||
<remote-repository> | |||||
<option name="id" value="central" /> | |||||
<option name="name" value="Maven Central repository" /> | |||||
<option name="url" value="https://repo1.maven.org/maven2" /> | |||||
</remote-repository> | |||||
<remote-repository> | |||||
<option name="id" value="jboss.community" /> | |||||
<option name="name" value="JBoss Community repository" /> | |||||
<option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" /> | |||||
</remote-repository> | |||||
</component> | |||||
</project> |
@ -0,0 +1,14 @@ | |||||
<?xml version="1.0" encoding="UTF-8"?> | |||||
<project version="4"> | |||||
<component name="ExternalStorageConfigurationManager" enabled="true" /> | |||||
<component name="MavenProjectsManager"> | |||||
<option name="originalFiles"> | |||||
<list> | |||||
<option value="$PROJECT_DIR$/pom.xml" /> | |||||
</list> | |||||
</option> | |||||
</component> | |||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8" project-jdk-type="JavaSDK"> | |||||
<output url="file://$PROJECT_DIR$/out" /> | |||||
</component> | |||||
</project> |
@ -0,0 +1,6 @@ | |||||
<?xml version="1.0" encoding="UTF-8"?> | |||||
<project version="4"> | |||||
<component name="VcsDirectoryMappings"> | |||||
<mapping directory="$PROJECT_DIR$/.." vcs="Git" /> | |||||
</component> | |||||
</project> |
@ -0,0 +1,141 @@ | |||||
<?xml version="1.0" encoding="UTF-8"?> | |||||
<project version="4"> | |||||
<component name="AutoImportSettings"> | |||||
<option name="autoReloadType" value="SELECTIVE" /> | |||||
</component> | |||||
<component name="ChangeListManager"> | |||||
<list default="true" id="8dd69acc-c1fb-426a-a98d-e312be913ab9" name="Default Changelist" comment="" /> | |||||
<option name="SHOW_DIALOG" value="false" /> | |||||
<option name="HIGHLIGHT_CONFLICTS" value="true" /> | |||||
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" /> | |||||
<option name="LAST_RESOLUTION" value="IGNORE" /> | |||||
</component> | |||||
<component name="FileTemplateManagerImpl"> | |||||
<option name="RECENT_TEMPLATES"> | |||||
<list> | |||||
<option value="Class" /> | |||||
</list> | |||||
</option> | |||||
</component> | |||||
<component name="Git.Settings"> | |||||
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$/.." /> | |||||
</component> | |||||
<component name="ProjectId" id="2C9NneJrnZyW2cuV3ASr3S1mbsi" /> | |||||
<component name="ProjectLevelVcsManager" settingsEditedManually="true"> | |||||
<ConfirmationsSetting value="1" id="Add" /> | |||||
</component> | |||||
<component name="ProjectViewState"> | |||||
<option name="hideEmptyMiddlePackages" value="true" /> | |||||
<option name="showLibraryContents" value="true" /> | |||||
</component> | |||||
<component name="PropertiesComponent"> | |||||
<property name="RequestMappingsPanelOrder0" value="0" /> | |||||
<property name="RequestMappingsPanelOrder1" value="1" /> | |||||
<property name="RequestMappingsPanelWidth0" value="75" /> | |||||
<property name="RequestMappingsPanelWidth1" value="75" /> | |||||
<property name="RunOnceActivity.OpenProjectViewOnStart" value="true" /> | |||||
<property name="RunOnceActivity.ShowReadmeOnStart" value="true" /> | |||||
<property name="WebServerToolWindowFactoryState" value="false" /> | |||||
<property name="aspect.path.notification.shown" value="true" /> | |||||
<property name="last_opened_file_path" value="$PROJECT_DIR$/src/main/resources" /> | |||||
<property name="nodejs_interpreter_path.stuck_in_default_project" value="undefined stuck path" /> | |||||
<property name="nodejs_npm_path_reset_for_default_project" value="true" /> | |||||
<property name="nodejs_package_manager_path" value="npm" /> | |||||
<property name="project.structure.last.edited" value="Modules" /> | |||||
<property name="project.structure.proportion" value="0.15" /> | |||||
<property name="project.structure.side.proportion" value="0.2" /> | |||||
<property name="settings.editor.selected.configurable" value="File.Encoding" /> | |||||
</component> | |||||
<component name="RecentsManager"> | |||||
<key name="CopyFile.RECENT_KEYS"> | |||||
<recent name="G:\bluetoothUart\bluetoothUart\uartBackend\src\main\resources" /> | |||||
</key> | |||||
<key name="CopyClassDialog.RECENTS_KEY"> | |||||
<recent name="com.topsail.uartBackend" /> | |||||
</key> | |||||
</component> | |||||
<component name="RunManager" selected="Spring Boot.UartBackendApplication"> | |||||
<configuration name="CodeGenerator" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true"> | |||||
<option name="MAIN_CLASS_NAME" value="com.topsail.uartBackend.CodeGenerator" /> | |||||
<module name="uartBackend" /> | |||||
<extension name="coverage"> | |||||
<pattern> | |||||
<option name="PATTERN" value="com.topsail.uartBackend.*" /> | |||||
<option name="ENABLED" value="true" /> | |||||
</pattern> | |||||
</extension> | |||||
<method v="2"> | |||||
<option name="Make" enabled="true" /> | |||||
</method> | |||||
</configuration> | |||||
<configuration default="true" type="ArquillianJUnit" factoryName="" nameIsGenerated="true"> | |||||
<option name="arquillianRunConfiguration"> | |||||
<value> | |||||
<option name="containerStateName" value="" /> | |||||
</value> | |||||
</option> | |||||
<option name="TEST_OBJECT" value="class" /> | |||||
<method v="2"> | |||||
<option name="Make" enabled="true" /> | |||||
</method> | |||||
</configuration> | |||||
<configuration name="UartBackendApplication" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot" temporary="true" nameIsGenerated="true"> | |||||
<module name="uartBackend" /> | |||||
<extension name="coverage"> | |||||
<pattern> | |||||
<option name="PATTERN" value="com.topsail.uartBackend.*" /> | |||||
<option name="ENABLED" value="true" /> | |||||
</pattern> | |||||
</extension> | |||||
<option name="SPRING_BOOT_MAIN_CLASS" value="com.topsail.uartBackend.UartBackendApplication" /> | |||||
<method v="2"> | |||||
<option name="Make" enabled="true" /> | |||||
</method> | |||||
</configuration> | |||||
<recent_temporary> | |||||
<list> | |||||
<item itemvalue="Spring Boot.UartBackendApplication" /> | |||||
<item itemvalue="Application.CodeGenerator" /> | |||||
</list> | |||||
</recent_temporary> | |||||
</component> | |||||
<component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" /> | |||||
<component name="TaskManager"> | |||||
<task active="true" id="Default" summary="Default task"> | |||||
<changelist id="8dd69acc-c1fb-426a-a98d-e312be913ab9" name="Default Changelist" comment="" /> | |||||
<created>1658211017210</created> | |||||
<option name="number" value="Default" /> | |||||
<option name="presentableId" value="Default" /> | |||||
<updated>1658211017210</updated> | |||||
<workItem from="1658211020084" duration="25665000" /> | |||||
<workItem from="1658710126220" duration="16418000" /> | |||||
<workItem from="1658821529028" duration="12684000" /> | |||||
<workItem from="1659073569153" duration="3806000" /> | |||||
<workItem from="1659313474981" duration="41425000" /> | |||||
</task> | |||||
<task id="LOCAL-00001" summary="[add]后端基本框架"> | |||||
<created>1658716154918</created> | |||||
<option name="number" value="00001" /> | |||||
<option name="presentableId" value="LOCAL-00001" /> | |||||
<option name="project" value="LOCAL" /> | |||||
<updated>1658716154918</updated> | |||||
</task> | |||||
<task id="LOCAL-00002" summary="[add]"> | |||||
<created>1659584068592</created> | |||||
<option name="number" value="00002" /> | |||||
<option name="presentableId" value="LOCAL-00002" /> | |||||
<option name="project" value="LOCAL" /> | |||||
<updated>1659584068592</updated> | |||||
</task> | |||||
<option name="localTasksCounter" value="3" /> | |||||
<servers /> | |||||
</component> | |||||
<component name="TypeScriptGeneratedFilesManager"> | |||||
<option name="version" value="3" /> | |||||
</component> | |||||
<component name="VcsManagerConfiguration"> | |||||
<MESSAGE value="[add]后端基本框架" /> | |||||
<MESSAGE value="[add]" /> | |||||
<option name="LAST_COMMIT_MESSAGE" value="[add]" /> | |||||
</component> | |||||
</project> |
@ -0,0 +1 @@ | |||||
111 |
@ -0,0 +1,125 @@ | |||||
<?xml version="1.0" encoding="UTF-8"?> | |||||
<project xmlns="http://maven.apache.org/POM/4.0.0" | |||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | |||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | |||||
<modelVersion>4.0.0</modelVersion> | |||||
<parent> | |||||
<artifactId>spring-boot-starter-parent</artifactId> | |||||
<groupId>org.springframework.boot</groupId> | |||||
<version>2.4.5</version> | |||||
</parent> | |||||
<groupId>com.topsail</groupId> | |||||
<artifactId>uartBackend</artifactId> | |||||
<version>1.0.0-SNAPSHOT</version> | |||||
<name>uartBackend</name> | |||||
<description>Demo project for Spring Boot</description> | |||||
<dependencies> | |||||
<dependency> | |||||
<groupId>org.springframework.boot</groupId> | |||||
<artifactId>spring-boot-starter-web</artifactId> | |||||
</dependency> | |||||
<!-- mysql --> | |||||
<dependency> | |||||
<groupId>org.springframework.boot</groupId> | |||||
<artifactId>spring-boot-starter-jdbc</artifactId> | |||||
</dependency> | |||||
<dependency> | |||||
<groupId>mysql</groupId> | |||||
<artifactId>mysql-connector-java</artifactId> | |||||
<scope>runtime</scope> | |||||
</dependency> | |||||
<!-- mybatis --> | |||||
<dependency> | |||||
<groupId>org.mybatis.spring.boot</groupId> | |||||
<artifactId>mybatis-spring-boot-starter</artifactId> | |||||
<version>2.1.0</version> | |||||
</dependency> | |||||
<dependency> | |||||
<groupId>org.projectlombok</groupId> | |||||
<artifactId>lombok</artifactId> | |||||
<version>1.18.16</version> | |||||
</dependency> | |||||
<!--mybatis-plus相关--> | |||||
<dependency> | |||||
<groupId>com.baomidou</groupId> | |||||
<artifactId>mybatis-plus-boot-starter</artifactId> | |||||
<version>3.3.2</version> | |||||
<exclusions> | |||||
<exclusion> | |||||
<artifactId>mybatis-plus-extension</artifactId> | |||||
<groupId>com.baomidou</groupId> | |||||
</exclusion> | |||||
</exclusions> | |||||
</dependency> | |||||
<dependency> | |||||
<groupId>com.baomidou</groupId> | |||||
<artifactId>mybatis-plus-generator</artifactId> | |||||
<version>3.3.0</version> | |||||
<exclusions> | |||||
<exclusion> | |||||
<artifactId>jsqlparser</artifactId> | |||||
<groupId>com.github.jsqlparser</groupId> | |||||
</exclusion> | |||||
</exclusions> | |||||
</dependency> | |||||
<dependency> | |||||
<groupId>org.springframework.boot</groupId> | |||||
<artifactId>spring-boot-starter-aop</artifactId> | |||||
</dependency> | |||||
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-validation --> | |||||
<dependency> | |||||
<groupId>org.springframework.boot</groupId> | |||||
<artifactId>spring-boot-starter-validation</artifactId> | |||||
</dependency> | |||||
<dependency> | |||||
<groupId>cn.hutool</groupId> | |||||
<artifactId>hutool-all</artifactId> | |||||
<version>5.7.20</version> | |||||
</dependency> | |||||
<dependency> | |||||
<groupId>org.freemarker</groupId> | |||||
<artifactId>freemarker</artifactId> | |||||
<version>2.3.30</version> | |||||
</dependency> | |||||
<!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper-spring-boot-starter --> | |||||
<dependency> | |||||
<groupId>com.github.pagehelper</groupId> | |||||
<artifactId>pagehelper-spring-boot-starter</artifactId> | |||||
<version>1.3.0</version> | |||||
<exclusions> | |||||
<exclusion> | |||||
<groupId>org.mybatis</groupId> | |||||
<artifactId>mybatis</artifactId> | |||||
</exclusion> | |||||
<exclusion> | |||||
<groupId>org.mybatis</groupId> | |||||
<artifactId>mybatis-spring</artifactId> | |||||
</exclusion> | |||||
</exclusions> | |||||
</dependency> | |||||
</dependencies> | |||||
<build> | |||||
<plugins> | |||||
<plugin> | |||||
<groupId>org.springframework.boot</groupId> | |||||
<artifactId>spring-boot-maven-plugin</artifactId> | |||||
</plugin> | |||||
</plugins> | |||||
</build> | |||||
</project> |
@ -0,0 +1,163 @@ | |||||
package com.topsail.uartBackend; | |||||
import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException; | |||||
import com.baomidou.mybatisplus.core.toolkit.StringPool; | |||||
import com.baomidou.mybatisplus.core.toolkit.StringUtils; | |||||
import com.baomidou.mybatisplus.generator.AutoGenerator; | |||||
import com.baomidou.mybatisplus.generator.InjectionConfig; | |||||
import com.baomidou.mybatisplus.generator.config.*; | |||||
import com.baomidou.mybatisplus.generator.config.builder.ConfigBuilder; | |||||
import com.baomidou.mybatisplus.generator.config.po.TableInfo; | |||||
import com.baomidou.mybatisplus.generator.config.rules.FileType; | |||||
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; | |||||
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine; | |||||
import java.io.File; | |||||
import java.util.ArrayList; | |||||
import java.util.List; | |||||
import java.util.Scanner; | |||||
/** | |||||
* 代码生成启动类 | |||||
*/ | |||||
public class CodeGenerator { | |||||
/** | |||||
* <p> | |||||
* 读取控制台内容 | |||||
* </p> | |||||
*/ | |||||
public static String scanner(String tip) { | |||||
Scanner scanner = new Scanner(System.in); | |||||
StringBuilder help = new StringBuilder(); | |||||
help.append("请输入" + tip + ":"); | |||||
System.out.println(help.toString()); | |||||
if (scanner.hasNext()) { | |||||
String ipt = scanner.next(); | |||||
if (StringUtils.isNotEmpty(ipt)) { | |||||
return ipt; | |||||
} | |||||
} | |||||
throw new MybatisPlusException("请输入正确的" + tip + "!"); | |||||
} | |||||
public static void main(String[] args) { | |||||
// 代码生成器 | |||||
AutoGenerator mpg = new AutoGenerator(); | |||||
// 全局配置 | |||||
GlobalConfig gc = new GlobalConfig(); | |||||
String projectPath = System.getProperty("user.dir"); | |||||
//String projectPath="E:\\topsail_new_git\\test\\sxhy\\sxhyrl";//此处可以编写绝对路径直接到项目 | |||||
gc.setOutputDir(projectPath + "/src/main/java"); | |||||
gc.setAuthor("lj"); | |||||
gc.setOpen(false); //默认true ,是否打开输出目录 | |||||
//gc.setFileOverride(false); //默认false ,是否覆盖已生成文件 | |||||
gc.setMapperName("%sMapper"); | |||||
gc.setXmlName("%sMapper"); | |||||
gc.setServiceName("%sService"); | |||||
gc.setServiceImplName("%sServiceImpl"); | |||||
gc.setControllerName("%sController"); | |||||
//gc.setSwagger2(true); //实体属性 Swagger2 注解 | |||||
mpg.setGlobalConfig(gc); | |||||
// 数据源配置 | |||||
DataSourceConfig dsc = new DataSourceConfig(); | |||||
dsc.setUrl("jdbc:mysql://rm-2ze77qng1ddlfur9g4o.mysql.rds.aliyuncs.com:3306/bluetooth_uart?useUnicode=true&useSSL=false&characterEncoding=utf8"); | |||||
//dsc.setSchemaName("public"); | |||||
dsc.setDriverName("com.mysql.jdbc.Driver"); | |||||
dsc.setUsername("topsail"); | |||||
dsc.setPassword("Topsail2020"); | |||||
mpg.setDataSource(dsc); | |||||
// 包配置 | |||||
PackageConfig pc = new PackageConfig(); | |||||
pc.setParent("com.topsail.uartBackend.uart"); | |||||
pc.setController("controller"); | |||||
pc.setEntity("entity"); | |||||
pc.setService("service"); | |||||
pc.setServiceImpl("service.Impl"); | |||||
pc.setMapper("mapper"); | |||||
mpg.setPackageInfo(pc); | |||||
// 自定义配置 | |||||
InjectionConfig cfg = new InjectionConfig() { | |||||
@Override | |||||
public void initMap() { | |||||
// to do nothing | |||||
} | |||||
}; | |||||
// 如果模板引擎是 freemarker | |||||
String templatePath = "/templates/mapper.xml.ftl"; | |||||
// 如果模板引擎是 velocity | |||||
// String templatePath = "/templates/mapper.xml.vm"; | |||||
// 自定义输出配置 | |||||
List<FileOutConfig> focList = new ArrayList<>(); | |||||
// 自定义配置会被优先输出 | |||||
focList.add(new FileOutConfig(templatePath) { | |||||
@Override | |||||
public String outputFile(TableInfo tableInfo) { | |||||
// 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!! | |||||
return projectPath + "/src/main/resources/mapper/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML; | |||||
} | |||||
}); | |||||
cfg.setFileCreate(new IFileCreate() { | |||||
@Override | |||||
public boolean isCreate(ConfigBuilder configBuilder, FileType fileType, String filePath) { | |||||
// 判断自定义文件夹是否需要创建 | |||||
//checkDir("调用默认方法创建的目录,自定义目录用"); | |||||
//if (fileType == FileType.MAPPER ||FileType.ENTITY==fileType) { | |||||
File file = new File(filePath); | |||||
boolean exist = file.exists(); | |||||
if(exist){ | |||||
if (FileType.ENTITY==fileType) {//重新生成实体类 | |||||
// 已经生成 mapper,entity文件判断存在,返回true重新生成 | |||||
return new File(filePath).exists(); | |||||
}else { | |||||
return false;//其他存在的都不重复生成 | |||||
} | |||||
} | |||||
// 不存在的都生成 | |||||
return true; | |||||
} | |||||
}); | |||||
cfg.setFileOutConfigList(focList); | |||||
mpg.setCfg(cfg); | |||||
// 配置模板 | |||||
TemplateConfig templateConfig = new TemplateConfig(); | |||||
//指定自定义模板路径,注意不要带上.ftl/.vm, 会根据使用的模板引擎自动识别 | |||||
// templateConfig.setEntity("templates/entity2.java"); | |||||
// templateConfig.setService(); | |||||
templateConfig.setController("/templates/controller"); | |||||
//templateConfig.setService("");//这样配置指的是不生成此文件 | |||||
templateConfig.setService("/templates/service"); | |||||
templateConfig.setServiceImpl("/templates/serviceImpl"); | |||||
templateConfig.setEntity("/templates/entity"); | |||||
templateConfig.setMapper("/templates/mapper"); | |||||
//templateConfig.setXml( "/templates/mapper.xml"); | |||||
templateConfig.setXml(null); | |||||
mpg.setTemplate(templateConfig); | |||||
// 策略配置 | |||||
StrategyConfig strategy = new StrategyConfig(); | |||||
strategy.setNaming(NamingStrategy.underline_to_camel); | |||||
strategy.setColumnNaming(NamingStrategy.underline_to_camel); | |||||
strategy.setEntityLombokModel(true); | |||||
strategy.setRestControllerStyle(true); | |||||
//strategy.setInclude(scanner("表名,多个英文逗号分割").split(",")); | |||||
strategy.setInclude(new String[]{"command_collection","command_type","device_command","device_config_detail","command_detail"}); | |||||
strategy.setControllerMappingHyphenStyle(true); | |||||
strategy.setTablePrefix(pc.getModuleName() + "_"); | |||||
mpg.setStrategy(strategy); | |||||
mpg.setTemplateEngine(new FreemarkerTemplateEngine()); | |||||
mpg.execute(); | |||||
} | |||||
} |
@ -0,0 +1,18 @@ | |||||
package com.topsail.uartBackend; | |||||
import org.springframework.boot.SpringApplication; | |||||
import org.springframework.boot.autoconfigure.SpringBootApplication; | |||||
import org.springframework.context.annotation.PropertySource; | |||||
/** | |||||
* <描述> | |||||
* | |||||
* @author lj | |||||
* @date 2022/07/19 14:15 | |||||
*/ | |||||
@SpringBootApplication | |||||
public class UartBackendApplication { | |||||
public static void main(String[] args) { | |||||
SpringApplication.run(UartBackendApplication.class,args); | |||||
} | |||||
} |
@ -0,0 +1,51 @@ | |||||
package com.topsail.uartBackend.config; | |||||
import com.topsail.uartBackend.core.CodeMsg; | |||||
import com.topsail.uartBackend.core.Result; | |||||
import org.springframework.dao.DuplicateKeyException; | |||||
import org.springframework.validation.BindException; | |||||
import org.springframework.validation.ObjectError; | |||||
import org.springframework.web.bind.annotation.ControllerAdvice; | |||||
import org.springframework.web.bind.annotation.ExceptionHandler; | |||||
import org.springframework.web.bind.annotation.ResponseBody; | |||||
import javax.servlet.http.HttpServletRequest; | |||||
import java.io.PrintWriter; | |||||
import java.io.StringWriter; | |||||
import java.text.ParseException; | |||||
import java.util.List; | |||||
/** | |||||
* <描述> | |||||
* | |||||
* @author lj | |||||
* @date 2022/07/21 10:09 | |||||
*/ | |||||
@ControllerAdvice | |||||
@ResponseBody | |||||
public class GlobalException { | |||||
@ExceptionHandler(value = Exception.class)//拦截所有异常 | |||||
public Result<String> exceptionHandler(HttpServletRequest request, Exception e){ | |||||
e.printStackTrace(); | |||||
if(e instanceof BindException) { | |||||
BindException ex = (BindException)e; | |||||
List<ObjectError> errors = ex.getAllErrors();//绑定错误返回很多错误,是一个错误列表,只需要第一个错误 | |||||
ObjectError error = errors.get(0); | |||||
String msg = error.getDefaultMessage(); | |||||
return Result.error(CodeMsg.BIND_ERROR.fillArgs(msg));//给状态码填充参数 | |||||
}else if(e instanceof ParseException){ | |||||
return Result.error(CodeMsg.TIME_ERROR); | |||||
}else if(e instanceof DuplicateKeyException){ | |||||
return Result.error(CodeMsg.DUPLICATEKEY_ERROR); | |||||
}else if(e instanceof IllegalStateException){ | |||||
return Result.error(CodeMsg.TOKEN_INVALID); | |||||
}else { | |||||
StringWriter sw = new StringWriter(); | |||||
PrintWriter pw = new PrintWriter(sw); | |||||
e.printStackTrace(pw); | |||||
return Result.error(new CodeMsg(500,sw.toString().substring(0,300)));//输出错误的堆栈信息 | |||||
} | |||||
} | |||||
} |
@ -0,0 +1,37 @@ | |||||
package com.topsail.uartBackend.config; | |||||
import com.topsail.uartBackend.core.JwtUtil; | |||||
import org.springframework.web.servlet.HandlerInterceptor; | |||||
import org.springframework.web.servlet.ModelAndView; | |||||
import javax.servlet.http.HttpServletRequest; | |||||
import javax.servlet.http.HttpServletResponse; | |||||
/** | |||||
* <描述> | |||||
* | |||||
* @author lj | |||||
* @date 2022/07/20 9:47 | |||||
*/ | |||||
public class Interceptor implements HandlerInterceptor { | |||||
@Override | |||||
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { | |||||
if (!(request.getRequestURI().contains("/user/login"))){ | |||||
String token = request.getHeader("Authorization"); | |||||
JwtUtil.validateToken(token); | |||||
} | |||||
return true; | |||||
} | |||||
@Override | |||||
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { | |||||
HandlerInterceptor.super.postHandle(request, response, handler, modelAndView); | |||||
} | |||||
@Override | |||||
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { | |||||
HandlerInterceptor.super.afterCompletion(request, response, handler, ex); | |||||
} | |||||
} |
@ -0,0 +1,26 @@ | |||||
package com.topsail.uartBackend.config; | |||||
import org.springframework.context.annotation.Bean; | |||||
import org.springframework.context.annotation.Configuration; | |||||
import org.springframework.web.servlet.config.annotation.InterceptorRegistry; | |||||
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; | |||||
/** | |||||
* <描述> | |||||
* | |||||
* @author lj | |||||
* @date 2022/07/20 10:09 | |||||
*/ | |||||
@Configuration | |||||
public class InterceptorConfig implements WebMvcConfigurer { | |||||
@Bean | |||||
public Interceptor interceptor(){ | |||||
return new Interceptor(); | |||||
} | |||||
@Override | |||||
public void addInterceptors(InterceptorRegistry registry) { | |||||
registry.addInterceptor(interceptor()) | |||||
// .addPathPatterns("/**") | |||||
.excludePathPatterns("/user/login","/user/logout"); | |||||
} | |||||
} |
@ -0,0 +1,31 @@ | |||||
package com.topsail.uartBackend.config; | |||||
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; | |||||
import org.apache.ibatis.reflection.MetaObject; | |||||
import java.util.Date; | |||||
/** | |||||
* <描述> | |||||
* | |||||
* @author lj | |||||
* @date 2022/07/20 9:40 | |||||
*/ | |||||
public class MybatisObjectHandler implements MetaObjectHandler { | |||||
@Override | |||||
public void insertFill(MetaObject metaObject) { | |||||
if (metaObject.hasSetter("createTime")){ | |||||
setFieldValByName("createTime",new Date(),metaObject); | |||||
} | |||||
if (metaObject.hasSetter("updateTime")){ | |||||
setFieldValByName("updateTime",new Date(),metaObject); | |||||
} | |||||
} | |||||
@Override | |||||
public void updateFill(MetaObject metaObject) { | |||||
if(metaObject.hasSetter("updateTime")){ | |||||
setFieldValByName("updateTime",new Date(),metaObject); | |||||
} | |||||
} | |||||
} |
@ -0,0 +1,90 @@ | |||||
package com.topsail.uartBackend.core; | |||||
import java.util.ArrayList; | |||||
import java.util.List; | |||||
import java.util.regex.Matcher; | |||||
import java.util.regex.Pattern; | |||||
/** | |||||
* <描述> | |||||
* | |||||
* @author lj | |||||
* @date 2022/07/19 14:34 | |||||
*/ | |||||
public class CodeMsg { | |||||
private int code; | |||||
private String msg; | |||||
//通用的错误码 | |||||
public static CodeMsg SUCCESS = new CodeMsg(0, "success"); | |||||
public static CodeMsg FAILED = new CodeMsg(502, "failed"); | |||||
public static CodeMsg TOKEN_EXPIRED = new CodeMsg(400, "token过期"); | |||||
public static CodeMsg TOKEN_INVALID = new CodeMsg(502, "token解析异常"); | |||||
public static CodeMsg USER_NOT_LOGGED_IN = new CodeMsg(402, "未登录,请登录!"); | |||||
public static CodeMsg SIGNATURE_ERROR = new CodeMsg(506, "签名失败"); | |||||
public static CodeMsg SERVER_ERROR = new CodeMsg(500, "服务端异常"); | |||||
public static CodeMsg FILE_ERROR = new CodeMsg(501, "文件不存在"); | |||||
public static CodeMsg FILE_EXIST = new CodeMsg(5012, "文件已存在"); | |||||
public static CodeMsg TIME_ERROR = new CodeMsg(502, "时间格式错误,应为 yyyy-MM-dd HH:mm:ss"); | |||||
public static CodeMsg DUPLICATEKEY_ERROR = new CodeMsg(502, "IMEI已注册"); | |||||
public static CodeMsg TIMEMISS_ERROR = new CodeMsg(503, "查询时间缺失,应为 yyyy-MM-dd HH:mm:ss"); | |||||
public static CodeMsg BIND_ERROR = new CodeMsg(504, "参数绑定异常"); | |||||
public static CodeMsg CONTROL_ERROR = new CodeMsg(505, "命令下发失败,请检查设备相关信息是否存在或正确以及参数输入是否正确"); | |||||
private CodeMsg() { | |||||
} | |||||
public CodeMsg(int code, String msg) { | |||||
this.code = code; | |||||
this.msg = msg; | |||||
} | |||||
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; | |||||
} | |||||
/** | |||||
* 返回带参数的错误码 | |||||
* @param args | |||||
* @return | |||||
*/ | |||||
public CodeMsg fillArgs(Object... args) { | |||||
int code = this.code; | |||||
String message = String.format(this.msg, args); | |||||
return new CodeMsg(code, message); | |||||
} | |||||
@Override | |||||
public String toString() { | |||||
return "CodeMsg [code=" + code + ", msg=" + msg + "]"; | |||||
} | |||||
public static void main(String[] args) { | |||||
//String regex="^[+-@=](.*?)\\d$"; | |||||
//String regex="^[\\u4e00-\\u9fa5]{0,}(.*?)\\d$"; | |||||
String regex="(.*?)\\d+(\\.\\d+)?(.*?)\\d+(\\.\\d+)?"; | |||||
String regex2="[\\u4e00-\\u9fa5](.*?:)[\\u4e00-\\u9fa5]?";//匹配所有汉字 | |||||
String a="北一层:17*7.5\n东房:6.3*3"; | |||||
Pattern p = Pattern.compile(regex); | |||||
Matcher m = p.matcher(a); | |||||
List<String> result=new ArrayList<String>(); | |||||
while(m.find()) { | |||||
System.out.println(m.group()); | |||||
result.add(m.group()); | |||||
} | |||||
System.out.println(result.toString()); | |||||
} | |||||
} |
@ -0,0 +1,55 @@ | |||||
package com.topsail.uartBackend.core; | |||||
import cn.hutool.core.date.DateField; | |||||
import cn.hutool.core.date.DateTime; | |||||
import cn.hutool.core.exceptions.ValidateException; | |||||
import cn.hutool.json.JSONObject; | |||||
import cn.hutool.json.JSONUtil; | |||||
import cn.hutool.jwt.JWT; | |||||
import cn.hutool.jwt.JWTValidator; | |||||
import cn.hutool.jwt.signers.JWTSignerUtil; | |||||
import com.topsail.uartBackend.user.entity.User; | |||||
import java.nio.charset.StandardCharsets; | |||||
import java.util.HashMap; | |||||
import java.util.Map; | |||||
/** | |||||
* <描述> | |||||
* | |||||
* @author lj | |||||
* @date 2022/07/19 14:45 | |||||
*/ | |||||
public class JwtUtil { | |||||
private final static String TOKEN_KEY = "DJASNCSALKNASNNHAbvkslmm1161"; | |||||
public static String getToken(User user){ | |||||
DateTime newTime = DateTime.now().offsetNew(DateField.SECOND, 60 * 60 * 24); | |||||
Map<String,Object>map = new HashMap<>(); | |||||
map.put("user",user); | |||||
String token = JWT.create() | |||||
.addPayloads(map) | |||||
.setSigner(JWTSignerUtil.hs512(TOKEN_KEY.getBytes())) | |||||
.setExpiresAt(newTime) | |||||
.sign(); | |||||
return "Bearer "+token; | |||||
} | |||||
public static User getUserFromToken(String token){ | |||||
return JSONUtil.toBean((JSONObject)JWT.of(token.split(" ")[1]).getPayloads().get("user"),User.class); | |||||
} | |||||
public static void validateToken(String token){ | |||||
try { | |||||
String newToken = token.split(" ")[1]; | |||||
JWTValidator.of(newToken) | |||||
.validateAlgorithm(JWTSignerUtil.hs512(TOKEN_KEY.getBytes())) | |||||
.validateDate(DateTime.now()); | |||||
}catch (ValidateException ex){ | |||||
throw new ValidateException("token异常!"); | |||||
} | |||||
} | |||||
} |
@ -0,0 +1,91 @@ | |||||
package com.topsail.uartBackend.core; | |||||
import com.github.pagehelper.PageInfo; | |||||
import java.util.ArrayList; | |||||
import java.util.HashMap; | |||||
import java.util.List; | |||||
import java.util.Map; | |||||
/** | |||||
* <描述> | |||||
* | |||||
* @author lj | |||||
* @date 2022/07/19 14:38 | |||||
*/ | |||||
public class Result<T> { | |||||
private int code; | |||||
private String msg = "success"; | |||||
private T data; | |||||
/** | |||||
* 成功时候的调用 | |||||
* */ | |||||
public static<T> Result<T> success(T data){ | |||||
return new Result<T>(CodeMsg.SUCCESS,data); | |||||
} | |||||
/** | |||||
* 失败时候的调用 | |||||
* */ | |||||
public static <T> Result<T> error(CodeMsg codeMsg){ | |||||
return new Result<T>(codeMsg); | |||||
} | |||||
public static<T> Map<String,Object> returnPageMap(List<T> t){ | |||||
PageInfo<T> pageInfo=new PageInfo(t); | |||||
int count=(int)pageInfo.getTotal(); | |||||
Map<String,Object> map=new HashMap<>(); | |||||
map.put("list", new ArrayList(pageInfo.getList())); | |||||
map.put("count",count); | |||||
return map; | |||||
} | |||||
private Result(CodeMsg codeMsg) { | |||||
if(codeMsg != null) { | |||||
this.code = codeMsg.getCode(); | |||||
this.msg = codeMsg.getMsg(); | |||||
} | |||||
} | |||||
private Result(CodeMsg codeMsg,T data){ | |||||
this.code = codeMsg.getCode(); | |||||
this.msg = codeMsg.getMsg(); | |||||
this.data = data; | |||||
} | |||||
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; | |||||
} | |||||
public T getData() { | |||||
return data; | |||||
} | |||||
public void setData(T data) { | |||||
this.data = data; | |||||
} | |||||
@Override | |||||
public String toString() { | |||||
return "Result{" + | |||||
"code=" + code + | |||||
", msg='" + msg + '\'' + | |||||
", data=" + data + | |||||
'}'; | |||||
} | |||||
} |
@ -0,0 +1,66 @@ | |||||
package com.topsail.uartBackend.uart.controller; | |||||
import com.topsail.uartBackend.core.CodeMsg; | |||||
import com.topsail.uartBackend.uart.service.CommandCollectionService; | |||||
import com.topsail.uartBackend.uart.entity.CommandCollection; | |||||
import org.springframework.web.bind.annotation.*; | |||||
import org.springframework.beans.factory.annotation.Autowired; | |||||
import com.topsail.uartBackend.core.Result; | |||||
/** | |||||
* | |||||
* Created by lj on '2022-08-01 14:14:15'. | |||||
*/ | |||||
@RestController | |||||
//@RequestMapping("/command-collection") | |||||
@RequestMapping("commandCollection") | |||||
public class CommandCollectionController { | |||||
@Autowired | |||||
private CommandCollectionService commandCollectionService; | |||||
/** | |||||
* 新增 | |||||
*/ | |||||
@PostMapping("/insertCommandCollection") | |||||
public Result insertCommandCollection( @RequestBody CommandCollection commandCollection){ | |||||
boolean rsp= commandCollectionService.save(commandCollection); | |||||
return rsp?Result.success("成功"):Result.error(new CodeMsg(502,"失败")); | |||||
} | |||||
/** | |||||
* 删除 | |||||
*/ | |||||
@DeleteMapping("/deleteCommandCollection/{id}") | |||||
public Result deleteCommandCollection(@PathVariable Integer id){ | |||||
boolean rsp= commandCollectionService.removeById(id); | |||||
return rsp?Result.success("成功"):Result.error(new CodeMsg(502,"失败")); | |||||
} | |||||
/** | |||||
* 更新 | |||||
*/ | |||||
@PutMapping("/updateCommandCollection") | |||||
public Result updateCommandCollection(@RequestBody CommandCollection commandCollection){ | |||||
boolean rsp= commandCollectionService.updateById(commandCollection); | |||||
return rsp?Result.success("成功"):Result.error(new CodeMsg(502,"失败")); | |||||
} | |||||
/** | |||||
* 分页查询 | |||||
*/ | |||||
@GetMapping("/getCommandCollectionList") | |||||
public Result pageList(CommandCollection commandCollection,@RequestParam(required = false,defaultValue = "1")Integer pageNo, @RequestParam(required = false,defaultValue = "10")Integer pageSize) { | |||||
return Result.success(Result.returnPageMap(commandCollectionService.pageList(commandCollection,pageNo,pageSize))); | |||||
} | |||||
} |
@ -0,0 +1,74 @@ | |||||
package com.topsail.uartBackend.uart.controller; | |||||
import com.topsail.uartBackend.core.CodeMsg; | |||||
import com.topsail.uartBackend.uart.entity.DeviceCommand; | |||||
import com.topsail.uartBackend.uart.service.CommandDetailService; | |||||
import com.topsail.uartBackend.uart.entity.CommandDetail; | |||||
import com.topsail.uartBackend.uart.service.DeviceCommandService; | |||||
import org.springframework.web.bind.annotation.*; | |||||
import org.springframework.beans.factory.annotation.Autowired; | |||||
import com.topsail.uartBackend.core.Result; | |||||
import javax.annotation.Resource; | |||||
import java.util.List; | |||||
/** | |||||
* | |||||
* Created by lj on '2022-08-01 14:14:15'. | |||||
*/ | |||||
@RestController | |||||
//@RequestMapping("/command-detail") | |||||
@RequestMapping("commandDetail") | |||||
public class CommandDetailController { | |||||
@Autowired | |||||
private CommandDetailService commandDetailService; | |||||
@Resource | |||||
private DeviceCommandService deviceCommandService; | |||||
/** | |||||
* 新增 | |||||
*/ | |||||
@PostMapping("/insertCommandDetail") | |||||
public Result insertCommandDetail(@RequestBody DeviceCommand deviceCommand){ | |||||
deviceCommandService.insertList(deviceCommand); | |||||
return Result.success("成功"); | |||||
} | |||||
/** | |||||
* 删除 | |||||
*/ | |||||
@DeleteMapping("/deleteCommandDetail/{id}") | |||||
public Result deleteCommandDetail(@PathVariable Integer deviceDetailId){ | |||||
deviceCommandService.deleteByDevice(deviceDetailId); | |||||
return Result.success("成功"); | |||||
} | |||||
/** | |||||
* 更新 | |||||
*/ | |||||
@PutMapping("/updateCommandDetail") | |||||
public Result updateCommandDetail(List<DeviceCommand>deviceCommands){ | |||||
deviceCommandService.updateList(deviceCommands); | |||||
return Result.success("成功"); | |||||
} | |||||
/** | |||||
* 分页查询 | |||||
*/ | |||||
@GetMapping("/getCommandDetailList") | |||||
public Result pageList(CommandDetail commandDetail,@RequestParam(required = false,defaultValue = "1")Integer pageNo, @RequestParam(required = false,defaultValue = "10")Integer pageSize) { | |||||
return Result.success(Result.returnPageMap(commandDetailService.pageList(commandDetail,pageNo,pageSize))); | |||||
} | |||||
} |
@ -0,0 +1,72 @@ | |||||
package com.topsail.uartBackend.uart.controller; | |||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | |||||
import com.topsail.uartBackend.core.CodeMsg; | |||||
import com.topsail.uartBackend.uart.service.CommandTypeService; | |||||
import com.topsail.uartBackend.uart.entity.CommandType; | |||||
import org.springframework.web.bind.annotation.*; | |||||
import org.springframework.beans.factory.annotation.Autowired; | |||||
import com.topsail.uartBackend.core.Result; | |||||
/** | |||||
* | |||||
* Created by lj on '2022-08-01 14:14:15'. | |||||
*/ | |||||
@RestController | |||||
//@RequestMapping("/command-type") | |||||
@RequestMapping("commandType") | |||||
public class CommandTypeController { | |||||
@Autowired | |||||
private CommandTypeService commandTypeService; | |||||
/** | |||||
* 新增 | |||||
*/ | |||||
@PostMapping("/insertCommandType") | |||||
public Result insertCommandType( @RequestBody CommandType commandType){ | |||||
CommandType commandType1 = commandTypeService.selectByTypeId(commandType.getTypeId()); | |||||
if (null!=commandType1){ | |||||
return Result.error(new CodeMsg(502,"类型ID重复!")); | |||||
} | |||||
boolean rsp= commandTypeService.save(commandType); | |||||
return rsp?Result.success("成功"):Result.error(new CodeMsg(502,"失败")); | |||||
} | |||||
/** | |||||
* 删除 | |||||
*/ | |||||
@DeleteMapping("/deleteCommandType/{id}") | |||||
public Result deleteCommandType(@PathVariable Integer id){ | |||||
boolean rsp= commandTypeService.removeById(id); | |||||
return rsp?Result.success("成功"):Result.error(new CodeMsg(502,"失败")); | |||||
} | |||||
/** | |||||
* 更新 | |||||
*/ | |||||
@PutMapping("/updateCommandType") | |||||
public Result updateCommandType(@RequestBody CommandType commandType){ | |||||
boolean rsp= commandTypeService.updateById(commandType); | |||||
return rsp?Result.success("成功"):Result.error(new CodeMsg(502,"失败")); | |||||
} | |||||
/** | |||||
* 分页查询 | |||||
*/ | |||||
@GetMapping("/getCommandTypeList") | |||||
public Result pageList(CommandType commandType,@RequestParam(required = false,defaultValue = "1")Integer pageNo, @RequestParam(required = false,defaultValue = "10")Integer pageSize) { | |||||
return Result.success(Result.returnPageMap(commandTypeService.pageList(commandType,pageNo,pageSize))); | |||||
} | |||||
} |
@ -0,0 +1,66 @@ | |||||
package com.topsail.uartBackend.uart.controller; | |||||
import com.topsail.uartBackend.core.CodeMsg; | |||||
import com.topsail.uartBackend.uart.service.DeviceCommandService; | |||||
import com.topsail.uartBackend.uart.entity.DeviceCommand; | |||||
import org.springframework.web.bind.annotation.*; | |||||
import org.springframework.beans.factory.annotation.Autowired; | |||||
import com.topsail.uartBackend.core.Result; | |||||
/** | |||||
* | |||||
* Created by lj on '2022-08-01 14:14:15'. | |||||
*/ | |||||
@RestController | |||||
//@RequestMapping("/device-command") | |||||
@RequestMapping("deviceCommand") | |||||
public class DeviceCommandController { | |||||
@Autowired | |||||
private DeviceCommandService deviceCommandService; | |||||
/** | |||||
* 新增 | |||||
*/ | |||||
@PostMapping("/insertDeviceCommand") | |||||
public Result insertDeviceCommand( @RequestBody DeviceCommand deviceCommand){ | |||||
boolean rsp= deviceCommandService.save(deviceCommand); | |||||
return rsp?Result.success("成功"):Result.error(new CodeMsg(502,"失败")); | |||||
} | |||||
/** | |||||
* 删除 | |||||
*/ | |||||
@DeleteMapping("/deleteDeviceCommand/{id}") | |||||
public Result deleteDeviceCommand(@PathVariable Integer id){ | |||||
boolean rsp= deviceCommandService.removeById(id); | |||||
return rsp?Result.success("成功"):Result.error(new CodeMsg(502,"失败")); | |||||
} | |||||
/** | |||||
* 更新 | |||||
*/ | |||||
@PutMapping("/updateDeviceCommand") | |||||
public Result updateDeviceCommand(@RequestBody DeviceCommand deviceCommand){ | |||||
boolean rsp= deviceCommandService.updateById(deviceCommand); | |||||
return rsp?Result.success("成功"):Result.error(new CodeMsg(502,"失败")); | |||||
} | |||||
/** | |||||
* 分页查询 | |||||
*/ | |||||
@GetMapping("/getDeviceCommandList") | |||||
public Result pageList(DeviceCommand deviceCommand,@RequestParam(required = false,defaultValue = "1")Integer pageNo, @RequestParam(required = false,defaultValue = "10")Integer pageSize) { | |||||
return Result.success(Result.returnPageMap(deviceCommandService.pageList(deviceCommand,pageNo,pageSize))); | |||||
} | |||||
} |
@ -0,0 +1,73 @@ | |||||
package com.topsail.uartBackend.uart.controller; | |||||
import com.topsail.uartBackend.core.CodeMsg; | |||||
import com.topsail.uartBackend.uart.entity.DeviceCommand; | |||||
import com.topsail.uartBackend.uart.service.DeviceCommandService; | |||||
import com.topsail.uartBackend.uart.service.DeviceConfigDetailService; | |||||
import com.topsail.uartBackend.uart.entity.DeviceConfigDetail; | |||||
import org.springframework.web.bind.annotation.*; | |||||
import org.springframework.beans.factory.annotation.Autowired; | |||||
import com.topsail.uartBackend.core.Result; | |||||
import javax.annotation.Resource; | |||||
/** | |||||
* | |||||
* Created by lj on '2022-08-01 14:14:15'. | |||||
*/ | |||||
@RestController | |||||
//@RequestMapping("/device-config-detail") | |||||
@RequestMapping("deviceConfigDetail") | |||||
public class DeviceConfigDetailController { | |||||
@Autowired | |||||
private DeviceConfigDetailService deviceConfigDetailService; | |||||
@Resource | |||||
private DeviceCommandService deviceCommandService; | |||||
/** | |||||
* 新增 | |||||
*/ | |||||
@PostMapping("/insertDeviceConfigDetail") | |||||
public Result insertDeviceConfigDetail( @RequestBody DeviceConfigDetail deviceConfigDetail){ | |||||
boolean rsp= deviceConfigDetailService.save(deviceConfigDetail); | |||||
return rsp?Result.success("成功"):Result.error(new CodeMsg(502,"失败")); | |||||
} | |||||
/** | |||||
* 删除 | |||||
*/ | |||||
@DeleteMapping("/deleteDeviceConfigDetail/{id}") | |||||
public Result deleteDeviceConfigDetail(@PathVariable Integer id){ | |||||
deviceCommandService.deleteByDevice(id); | |||||
boolean rsp= deviceConfigDetailService.removeById(id); | |||||
return rsp?Result.success("成功"):Result.error(new CodeMsg(502,"失败")); | |||||
} | |||||
/** | |||||
* 更新 | |||||
*/ | |||||
@PutMapping("/updateDeviceConfigDetail") | |||||
public Result updateDeviceConfigDetail(@RequestBody DeviceConfigDetail deviceConfigDetail){ | |||||
boolean rsp= deviceConfigDetailService.updateById(deviceConfigDetail); | |||||
return rsp?Result.success("成功"):Result.error(new CodeMsg(502,"失败")); | |||||
} | |||||
/** | |||||
* 分页查询 | |||||
*/ | |||||
@GetMapping("/getDeviceConfigDetailList") | |||||
public Result pageList(DeviceConfigDetail deviceConfigDetail,@RequestParam(required = false,defaultValue = "1")Integer pageNo, @RequestParam(required = false,defaultValue = "10")Integer pageSize) { | |||||
return Result.success(Result.returnPageMap(deviceConfigDetailService.pageList(deviceConfigDetail,pageNo,pageSize))); | |||||
} | |||||
} |
@ -0,0 +1,137 @@ | |||||
package com.topsail.uartBackend.uart.entity; | |||||
import org.springframework.format.annotation.DateTimeFormat; | |||||
import com.fasterxml.jackson.annotation.JsonFormat; | |||||
import java.util.Date; | |||||
import com.baomidou.mybatisplus.annotation.TableField; | |||||
import com.baomidou.mybatisplus.annotation.FieldFill; | |||||
import com.baomidou.mybatisplus.annotation.IdType; | |||||
import com.baomidou.mybatisplus.annotation.TableId; | |||||
import java.time.LocalDateTime; | |||||
import java.io.Serializable; | |||||
import lombok.Data; | |||||
import lombok.EqualsAndHashCode; | |||||
import lombok.experimental.Accessors; | |||||
/** | |||||
* <p> | |||||
* 指令集合表 | |||||
* </p> | |||||
* | |||||
* @author lj | |||||
* @since 2022-08-01 | |||||
*/ | |||||
@Data | |||||
@EqualsAndHashCode(callSuper = false) | |||||
@Accessors(chain = true) | |||||
public class CommandCollection implements Serializable { | |||||
private static final long serialVersionUID = 1L; | |||||
@TableId(value = "id", type = IdType.AUTO) | |||||
private Integer id ; | |||||
/** | |||||
* 指令大类ID | |||||
*/ | |||||
private Integer commandType ; | |||||
/** | |||||
* 大类名称 | |||||
*/ | |||||
private String typeName ; | |||||
/** | |||||
* 指令名称 | |||||
*/ | |||||
private String commandName ; | |||||
/** | |||||
* 具体指令(一般为四位) | |||||
*/ | |||||
private String commandDetail ; | |||||
/** | |||||
* 指令参数格式 | |||||
*/ | |||||
private String commandFormat ; | |||||
/** | |||||
* 指令示例 | |||||
*/ | |||||
private String commandExample ; | |||||
/** | |||||
* 输入类型(btn(按钮),input(输入框),select(固定值选择)) | |||||
*/ | |||||
private String inputType ; | |||||
/** | |||||
* 为固定值选择的时候,需要获取选择内容key,value形式 | |||||
*/ | |||||
private String inputValue ; | |||||
/** | |||||
* 取值最小值 | |||||
*/ | |||||
private String minValue ; | |||||
/** | |||||
* 取值最大值 | |||||
*/ | |||||
private String maxValue ; | |||||
/** | |||||
* 取值单位 | |||||
*/ | |||||
private String valueUnit ; | |||||
/** | |||||
* 取值范围描述(用于界面展示,文字不应过多) | |||||
*/ | |||||
private String rangeDesc ; | |||||
/** | |||||
* 指令描述 | |||||
*/ | |||||
private String commandDesc ; | |||||
/** | |||||
* 备注 | |||||
*/ | |||||
private String commandMsg ; | |||||
/** | |||||
* 适用的设备描述 | |||||
*/ | |||||
private String adaptDevice ; | |||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") | |||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") | |||||
@TableField(fill = FieldFill.INSERT) | |||||
private Date createTime ; | |||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") | |||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") | |||||
@TableField(fill = FieldFill.INSERT_UPDATE) | |||||
private Date updateTime ; | |||||
} |
@ -0,0 +1,175 @@ | |||||
package com.topsail.uartBackend.uart.entity; | |||||
import org.springframework.format.annotation.DateTimeFormat; | |||||
import com.fasterxml.jackson.annotation.JsonFormat; | |||||
import java.util.Date; | |||||
import com.baomidou.mybatisplus.annotation.TableField; | |||||
import com.baomidou.mybatisplus.annotation.FieldFill; | |||||
import java.io.Serializable; | |||||
import lombok.Data; | |||||
import lombok.EqualsAndHashCode; | |||||
import lombok.experimental.Accessors; | |||||
/** | |||||
* <p> | |||||
* VIEW | |||||
* </p> | |||||
* | |||||
* @author lj | |||||
* @since 2022-08-01 | |||||
*/ | |||||
@Data | |||||
@EqualsAndHashCode(callSuper = false) | |||||
@Accessors(chain = true) | |||||
public class CommandDetail implements Serializable { | |||||
private static final long serialVersionUID = 1L; | |||||
/** | |||||
* 指令ID | |||||
*/ | |||||
private Integer commandId ; | |||||
/** | |||||
* 详细设备ID | |||||
*/ | |||||
private Integer deviceDetailId ; | |||||
private Integer dcId ; | |||||
/** | |||||
* 指令大类ID | |||||
*/ | |||||
private Integer commandType ; | |||||
/** | |||||
* 大类名称 | |||||
*/ | |||||
private String typeName ; | |||||
/** | |||||
* 指令名称 | |||||
*/ | |||||
private String commandName ; | |||||
/** | |||||
* 具体指令(一般为四位) | |||||
*/ | |||||
private String commandDetail ; | |||||
/** | |||||
* 指令参数格式 | |||||
*/ | |||||
private String commandFormat ; | |||||
/** | |||||
* 指令示例 | |||||
*/ | |||||
private String commandExample ; | |||||
/** | |||||
* 输入类型(btn(按钮),input(输入框),select(固定值选择)) | |||||
*/ | |||||
private String inputType ; | |||||
/** | |||||
* 为固定值选择的时候,需要获取选择内容key,value形式 | |||||
*/ | |||||
private String inputValue ; | |||||
/** | |||||
* 取值最小值 | |||||
*/ | |||||
private String minValue ; | |||||
/** | |||||
* 取值最大值 | |||||
*/ | |||||
private String maxValue ; | |||||
/** | |||||
* 取值单位 | |||||
*/ | |||||
private String valueUnit ; | |||||
/** | |||||
* 取值范围描述(用于界面展示,文字不应过多) | |||||
*/ | |||||
private String rangeDesc ; | |||||
/** | |||||
* 指令描述 | |||||
*/ | |||||
private String commandDesc ; | |||||
/** | |||||
* 备注 | |||||
*/ | |||||
private String commandMsg ; | |||||
/** | |||||
* 适用的设备描述 | |||||
*/ | |||||
private String adaptDevice ; | |||||
/** | |||||
* 该类型设备的详细名称 | |||||
*/ | |||||
private String deviceName ; | |||||
/** | |||||
* 硬件版本号 | |||||
*/ | |||||
private String hardVersion ; | |||||
/** | |||||
* 软件版本号 | |||||
*/ | |||||
private String softVersion ; | |||||
/** | |||||
* 所属设备类型 | |||||
*/ | |||||
private String deviceType ; | |||||
/** | |||||
* 是否为TOPOS 1(是),2(否) | |||||
*/ | |||||
private String topOs ; | |||||
/** | |||||
* 通用蓝牙名称(蓝牙名称-前的内容) | |||||
*/ | |||||
private String blueName ; | |||||
/** | |||||
* 蓝牙后数字位数 | |||||
*/ | |||||
private Integer blueNumSize ; | |||||
} |
@ -0,0 +1,49 @@ | |||||
package com.topsail.uartBackend.uart.entity; | |||||
import org.springframework.format.annotation.DateTimeFormat; | |||||
import com.fasterxml.jackson.annotation.JsonFormat; | |||||
import java.util.Date; | |||||
import com.baomidou.mybatisplus.annotation.TableField; | |||||
import com.baomidou.mybatisplus.annotation.FieldFill; | |||||
import com.baomidou.mybatisplus.annotation.IdType; | |||||
import com.baomidou.mybatisplus.annotation.TableId; | |||||
import java.io.Serializable; | |||||
import lombok.Data; | |||||
import lombok.EqualsAndHashCode; | |||||
import lombok.experimental.Accessors; | |||||
/** | |||||
* <p> | |||||
* 指令大类 | |||||
* </p> | |||||
* | |||||
* @author lj | |||||
* @since 2022-08-01 | |||||
*/ | |||||
@Data | |||||
@EqualsAndHashCode(callSuper = false) | |||||
@Accessors(chain = true) | |||||
public class CommandType implements Serializable { | |||||
private static final long serialVersionUID = 1L; | |||||
@TableId(value = "id", type = IdType.AUTO) | |||||
private Integer id ; | |||||
/** | |||||
* 设备类型ID | |||||
*/ | |||||
private Integer typeId ; | |||||
/** | |||||
* 设备类型名称 | |||||
*/ | |||||
private String typeName ; | |||||
private String msg ; | |||||
} |
@ -0,0 +1,49 @@ | |||||
package com.topsail.uartBackend.uart.entity; | |||||
import org.springframework.format.annotation.DateTimeFormat; | |||||
import com.fasterxml.jackson.annotation.JsonFormat; | |||||
import java.util.Date; | |||||
import com.baomidou.mybatisplus.annotation.TableField; | |||||
import com.baomidou.mybatisplus.annotation.FieldFill; | |||||
import com.baomidou.mybatisplus.annotation.IdType; | |||||
import com.baomidou.mybatisplus.annotation.TableId; | |||||
import java.io.Serializable; | |||||
import java.util.List; | |||||
import lombok.Data; | |||||
import lombok.EqualsAndHashCode; | |||||
import lombok.experimental.Accessors; | |||||
/** | |||||
* <p> | |||||
* 设备-指令 关联表 | |||||
* </p> | |||||
* | |||||
* @author lj | |||||
* @since 2022-08-01 | |||||
*/ | |||||
@Data | |||||
@EqualsAndHashCode(callSuper = false) | |||||
@Accessors(chain = true) | |||||
public class DeviceCommand implements Serializable { | |||||
private static final long serialVersionUID = 1L; | |||||
@TableId(value = "id", type = IdType.AUTO) | |||||
private Integer id ; | |||||
/** | |||||
* 指令ID | |||||
*/ | |||||
private Integer commandId ; | |||||
/** | |||||
* 详细设备ID | |||||
*/ | |||||
private Integer deviceDetailId ; | |||||
private List<Integer>ids; | |||||
} |
@ -0,0 +1,89 @@ | |||||
package com.topsail.uartBackend.uart.entity; | |||||
import org.springframework.format.annotation.DateTimeFormat; | |||||
import com.fasterxml.jackson.annotation.JsonFormat; | |||||
import java.util.Date; | |||||
import com.baomidou.mybatisplus.annotation.TableField; | |||||
import com.baomidou.mybatisplus.annotation.FieldFill; | |||||
import com.baomidou.mybatisplus.annotation.IdType; | |||||
import com.baomidou.mybatisplus.annotation.TableId; | |||||
import java.time.LocalDateTime; | |||||
import java.io.Serializable; | |||||
import lombok.Data; | |||||
import lombok.EqualsAndHashCode; | |||||
import lombok.experimental.Accessors; | |||||
/** | |||||
* <p> | |||||
* 所有类型设备的详细配置表 | |||||
* </p> | |||||
* | |||||
* @author lj | |||||
* @since 2022-08-01 | |||||
*/ | |||||
@Data | |||||
@EqualsAndHashCode(callSuper = false) | |||||
@Accessors(chain = true) | |||||
public class DeviceConfigDetail implements Serializable { | |||||
private static final long serialVersionUID = 1L; | |||||
@TableId(value = "id", type = IdType.AUTO) | |||||
private Integer id ; | |||||
/** | |||||
* 该类型设备的详细名称 | |||||
*/ | |||||
private String deviceName ; | |||||
/** | |||||
* 硬件版本号 | |||||
*/ | |||||
private String hardVersion ; | |||||
/** | |||||
* 软件版本号 | |||||
*/ | |||||
private String softVersion ; | |||||
/** | |||||
* 所属设备类型 | |||||
*/ | |||||
private String deviceType ; | |||||
/** | |||||
* 是否为TOPOS 1(是),2(否) | |||||
*/ | |||||
private String topOs ; | |||||
/** | |||||
* 通用蓝牙名称(蓝牙名称-前的内容) | |||||
*/ | |||||
private String blueName ; | |||||
/** | |||||
* 蓝牙后数字位数 | |||||
*/ | |||||
private Integer blueNumSize ; | |||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") | |||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") | |||||
@TableField(fill = FieldFill.INSERT) | |||||
private Date createTime ; | |||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") | |||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") | |||||
@TableField(fill = FieldFill.INSERT_UPDATE) | |||||
private Date updateTime ; | |||||
} |
@ -0,0 +1,18 @@ | |||||
package com.topsail.uartBackend.uart.mapper; | |||||
import com.topsail.uartBackend.uart.entity.CommandCollection; | |||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; | |||||
import org.apache.ibatis.annotations.Mapper; | |||||
/** | |||||
* <p> | |||||
* 指令集合表 Mapper 接口 | |||||
* </p> | |||||
* | |||||
* @author lj | |||||
* @since 2022-08-01 | |||||
*/ | |||||
@Mapper | |||||
public interface CommandCollectionMapper extends BaseMapper<CommandCollection> { | |||||
} |
@ -0,0 +1,18 @@ | |||||
package com.topsail.uartBackend.uart.mapper; | |||||
import com.topsail.uartBackend.uart.entity.CommandDetail; | |||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; | |||||
import org.apache.ibatis.annotations.Mapper; | |||||
/** | |||||
* <p> | |||||
* VIEW Mapper 接口 | |||||
* </p> | |||||
* | |||||
* @author lj | |||||
* @since 2022-08-01 | |||||
*/ | |||||
@Mapper | |||||
public interface CommandDetailMapper extends BaseMapper<CommandDetail> { | |||||
} |
@ -0,0 +1,20 @@ | |||||
package com.topsail.uartBackend.uart.mapper; | |||||
import com.topsail.uartBackend.uart.entity.CommandType; | |||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; | |||||
import org.apache.ibatis.annotations.Mapper; | |||||
import org.apache.ibatis.annotations.Param; | |||||
/** | |||||
* <p> | |||||
* 指令大类 Mapper 接口 | |||||
* </p> | |||||
* | |||||
* @author lj | |||||
* @since 2022-08-01 | |||||
*/ | |||||
@Mapper | |||||
public interface CommandTypeMapper extends BaseMapper<CommandType> { | |||||
CommandType selectByTypeId(@Param("typeId")Integer typeId); | |||||
} |
@ -0,0 +1,20 @@ | |||||
package com.topsail.uartBackend.uart.mapper; | |||||
import com.topsail.uartBackend.uart.entity.DeviceCommand; | |||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; | |||||
import org.apache.ibatis.annotations.Mapper; | |||||
/** | |||||
* <p> | |||||
* 设备-指令 关联表 Mapper 接口 | |||||
* </p> | |||||
* | |||||
* @author lj | |||||
* @since 2022-08-01 | |||||
*/ | |||||
@Mapper | |||||
public interface DeviceCommandMapper extends BaseMapper<DeviceCommand> { | |||||
//删除某个设备类型时调用 | |||||
Boolean deleteByDevice(Integer deviceDetailId); | |||||
} |
@ -0,0 +1,18 @@ | |||||
package com.topsail.uartBackend.uart.mapper; | |||||
import com.topsail.uartBackend.uart.entity.DeviceConfigDetail; | |||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; | |||||
import org.apache.ibatis.annotations.Mapper; | |||||
/** | |||||
* <p> | |||||
* 所有类型设备的详细配置表 Mapper 接口 | |||||
* </p> | |||||
* | |||||
* @author lj | |||||
* @since 2022-08-01 | |||||
*/ | |||||
@Mapper | |||||
public interface DeviceConfigDetailMapper extends BaseMapper<DeviceConfigDetail> { | |||||
} |
@ -0,0 +1,21 @@ | |||||
package com.topsail.uartBackend.uart.service; | |||||
import com.topsail.uartBackend.uart.entity.CommandCollection; | |||||
import com.baomidou.mybatisplus.extension.service.IService; | |||||
import java.util.List; | |||||
/** | |||||
* <p> | |||||
* 指令集合表 服务类 | |||||
* </p> | |||||
* | |||||
* @author lj | |||||
* @since 2022-08-01 | |||||
*/ | |||||
public interface CommandCollectionService extends IService<CommandCollection> { | |||||
/** | |||||
*分页查询 | |||||
*/ | |||||
public List<CommandCollection> pageList(CommandCollection commandCollection,Integer pageNo, Integer pageSize); | |||||
} |
@ -0,0 +1,21 @@ | |||||
package com.topsail.uartBackend.uart.service; | |||||
import com.topsail.uartBackend.uart.entity.CommandDetail; | |||||
import com.baomidou.mybatisplus.extension.service.IService; | |||||
import java.util.List; | |||||
/** | |||||
* <p> | |||||
* VIEW 服务类 | |||||
* </p> | |||||
* | |||||
* @author lj | |||||
* @since 2022-08-01 | |||||
*/ | |||||
public interface CommandDetailService extends IService<CommandDetail> { | |||||
/** | |||||
*分页查询 | |||||
*/ | |||||
public List<CommandDetail> pageList(CommandDetail commandDetail,Integer pageNo, Integer pageSize); | |||||
} |
@ -0,0 +1,23 @@ | |||||
package com.topsail.uartBackend.uart.service; | |||||
import com.topsail.uartBackend.uart.entity.CommandType; | |||||
import com.baomidou.mybatisplus.extension.service.IService; | |||||
import java.util.List; | |||||
/** | |||||
* <p> | |||||
* 指令大类 服务类 | |||||
* </p> | |||||
* | |||||
* @author lj | |||||
* @since 2022-08-01 | |||||
*/ | |||||
public interface CommandTypeService extends IService<CommandType> { | |||||
/** | |||||
*分页查询 | |||||
*/ | |||||
public List<CommandType> pageList(CommandType commandType,Integer pageNo, Integer pageSize); | |||||
CommandType selectByTypeId(Integer typeId); | |||||
} |
@ -0,0 +1,31 @@ | |||||
package com.topsail.uartBackend.uart.service; | |||||
import com.topsail.uartBackend.uart.entity.DeviceCommand; | |||||
import com.baomidou.mybatisplus.extension.service.IService; | |||||
import org.springframework.transaction.annotation.Transactional; | |||||
import java.util.List; | |||||
/** | |||||
* <p> | |||||
* 设备-指令 关联表 服务类 | |||||
* </p> | |||||
* | |||||
* @author lj | |||||
* @since 2022-08-01 | |||||
*/ | |||||
public interface DeviceCommandService extends IService<DeviceCommand> { | |||||
/** | |||||
*分页查询 | |||||
*/ | |||||
public List<DeviceCommand> pageList(DeviceCommand deviceCommand,Integer pageNo, Integer pageSize); | |||||
Boolean deleteByDevice(Integer deviceDetailId); | |||||
@Transactional | |||||
Boolean insertList(DeviceCommand deviceCommand); | |||||
@Transactional | |||||
Boolean updateList(List<DeviceCommand> deviceCommands); | |||||
} |
@ -0,0 +1,21 @@ | |||||
package com.topsail.uartBackend.uart.service; | |||||
import com.topsail.uartBackend.uart.entity.DeviceConfigDetail; | |||||
import com.baomidou.mybatisplus.extension.service.IService; | |||||
import java.util.List; | |||||
/** | |||||
* <p> | |||||
* 所有类型设备的详细配置表 服务类 | |||||
* </p> | |||||
* | |||||
* @author lj | |||||
* @since 2022-08-01 | |||||
*/ | |||||
public interface DeviceConfigDetailService extends IService<DeviceConfigDetail> { | |||||
/** | |||||
*分页查询 | |||||
*/ | |||||
public List<DeviceConfigDetail> pageList(DeviceConfigDetail deviceConfigDetail,Integer pageNo, Integer pageSize); | |||||
} |
@ -0,0 +1,42 @@ | |||||
package com.topsail.uartBackend.uart.service.Impl; | |||||
import com.topsail.uartBackend.uart.entity.CommandCollection; | |||||
import com.topsail.uartBackend.uart.mapper.CommandCollectionMapper; | |||||
import com.topsail.uartBackend.uart.service.CommandCollectionService; | |||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | |||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | |||||
import org.springframework.beans.factory.annotation.Autowired; | |||||
import org.springframework.stereotype.Service; | |||||
import org.springframework.util.StringUtils; | |||||
import com.github.pagehelper.PageHelper; | |||||
import java.util.List; | |||||
import lombok.extern.slf4j.Slf4j; | |||||
/** | |||||
* <p> | |||||
* 指令集合表 服务实现类 | |||||
* </p> | |||||
* | |||||
* @author lj | |||||
* @since 2022-08-01 | |||||
*/ | |||||
@Service | |||||
@Slf4j | |||||
public class CommandCollectionServiceImpl extends ServiceImpl<CommandCollectionMapper, CommandCollection> implements CommandCollectionService { | |||||
@Autowired | |||||
private CommandCollectionMapper commandCollectionMapper; | |||||
/** | |||||
*分页查询 | |||||
*/ | |||||
@Override | |||||
public List<CommandCollection> pageList(CommandCollection commandCollection,Integer pageNo, Integer pageSize) { | |||||
QueryWrapper<CommandCollection> wrapper = new QueryWrapper<>(); | |||||
wrapper.setEntity(commandCollection); | |||||
PageHelper.startPage(pageNo,pageSize); | |||||
List<CommandCollection> list=list(wrapper); | |||||
return list; | |||||
} | |||||
} |
@ -0,0 +1,42 @@ | |||||
package com.topsail.uartBackend.uart.service.Impl; | |||||
import com.topsail.uartBackend.uart.entity.CommandDetail; | |||||
import com.topsail.uartBackend.uart.mapper.CommandDetailMapper; | |||||
import com.topsail.uartBackend.uart.service.CommandDetailService; | |||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | |||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | |||||
import org.springframework.beans.factory.annotation.Autowired; | |||||
import org.springframework.stereotype.Service; | |||||
import org.springframework.util.StringUtils; | |||||
import com.github.pagehelper.PageHelper; | |||||
import java.util.List; | |||||
import lombok.extern.slf4j.Slf4j; | |||||
/** | |||||
* <p> | |||||
* VIEW 服务实现类 | |||||
* </p> | |||||
* | |||||
* @author lj | |||||
* @since 2022-08-01 | |||||
*/ | |||||
@Service | |||||
@Slf4j | |||||
public class CommandDetailServiceImpl extends ServiceImpl<CommandDetailMapper, CommandDetail> implements CommandDetailService { | |||||
@Autowired | |||||
private CommandDetailMapper commandDetailMapper; | |||||
/** | |||||
*分页查询 | |||||
*/ | |||||
@Override | |||||
public List<CommandDetail> pageList(CommandDetail commandDetail,Integer pageNo, Integer pageSize) { | |||||
QueryWrapper<CommandDetail> wrapper = new QueryWrapper<>(); | |||||
wrapper.setEntity(commandDetail); | |||||
PageHelper.startPage(pageNo,pageSize); | |||||
List<CommandDetail> list=list(wrapper); | |||||
return list; | |||||
} | |||||
} |
@ -0,0 +1,47 @@ | |||||
package com.topsail.uartBackend.uart.service.Impl; | |||||
import com.topsail.uartBackend.uart.entity.CommandType; | |||||
import com.topsail.uartBackend.uart.mapper.CommandTypeMapper; | |||||
import com.topsail.uartBackend.uart.service.CommandTypeService; | |||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | |||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | |||||
import org.springframework.beans.factory.annotation.Autowired; | |||||
import org.springframework.stereotype.Service; | |||||
import org.springframework.util.StringUtils; | |||||
import com.github.pagehelper.PageHelper; | |||||
import java.util.List; | |||||
import lombok.extern.slf4j.Slf4j; | |||||
/** | |||||
* <p> | |||||
* 指令大类 服务实现类 | |||||
* </p> | |||||
* | |||||
* @author lj | |||||
* @since 2022-08-01 | |||||
*/ | |||||
@Service | |||||
@Slf4j | |||||
public class CommandTypeServiceImpl extends ServiceImpl<CommandTypeMapper, CommandType> implements CommandTypeService { | |||||
@Autowired | |||||
private CommandTypeMapper commandTypeMapper; | |||||
/** | |||||
*分页查询 | |||||
*/ | |||||
@Override | |||||
public List<CommandType> pageList(CommandType commandType,Integer pageNo, Integer pageSize) { | |||||
QueryWrapper<CommandType> wrapper = new QueryWrapper<>(); | |||||
wrapper.setEntity(commandType); | |||||
PageHelper.startPage(pageNo,pageSize); | |||||
List<CommandType> list=list(wrapper); | |||||
return list; | |||||
} | |||||
@Override | |||||
public CommandType selectByTypeId(Integer typeId){ | |||||
return this.commandTypeMapper.selectByTypeId(typeId); | |||||
} | |||||
} |
@ -0,0 +1,83 @@ | |||||
package com.topsail.uartBackend.uart.service.Impl; | |||||
import com.topsail.uartBackend.uart.entity.DeviceCommand; | |||||
import com.topsail.uartBackend.uart.mapper.DeviceCommandMapper; | |||||
import com.topsail.uartBackend.uart.service.DeviceCommandService; | |||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | |||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | |||||
import org.springframework.beans.factory.annotation.Autowired; | |||||
import org.springframework.stereotype.Service; | |||||
import org.springframework.transaction.annotation.Transactional; | |||||
import org.springframework.util.StringUtils; | |||||
import com.github.pagehelper.PageHelper; | |||||
import java.util.ArrayList; | |||||
import java.util.Arrays; | |||||
import java.util.List; | |||||
import lombok.extern.slf4j.Slf4j; | |||||
import org.springframework.web.bind.annotation.RequestBody; | |||||
/** | |||||
* <p> | |||||
* 设备-指令 关联表 服务实现类 | |||||
* </p> | |||||
* | |||||
* @author lj | |||||
* @since 2022-08-01 | |||||
*/ | |||||
@Transactional | |||||
@Service | |||||
@Slf4j | |||||
public class DeviceCommandServiceImpl extends ServiceImpl<DeviceCommandMapper, DeviceCommand> implements DeviceCommandService { | |||||
@Autowired | |||||
private DeviceCommandMapper deviceCommandMapper; | |||||
/** | |||||
*分页查询 | |||||
*/ | |||||
@Override | |||||
public List<DeviceCommand> pageList(DeviceCommand deviceCommand,Integer pageNo, Integer pageSize) { | |||||
QueryWrapper<DeviceCommand> wrapper = new QueryWrapper<>(); | |||||
wrapper.setEntity(deviceCommand); | |||||
PageHelper.startPage(pageNo,pageSize); | |||||
List<DeviceCommand> list=list(wrapper); | |||||
return list; | |||||
} | |||||
@Override | |||||
public Boolean deleteByDevice(Integer deviceDetailId){ | |||||
return this.deviceCommandMapper.deleteByDevice(deviceDetailId); | |||||
} | |||||
@Override | |||||
@Transactional | |||||
public Boolean insertList( DeviceCommand deviceCommand){ | |||||
DeviceCommand deviceCommand1 = new DeviceCommand(); | |||||
if (null!= deviceCommand.getDeviceDetailId()){ | |||||
deviceCommandMapper.deleteByDevice(deviceCommand.getDeviceDetailId()); | |||||
if (deviceCommand.getIds().size()!=0){ | |||||
deviceCommand.getIds().forEach(id->{ | |||||
deviceCommand1.setCommandId(id); | |||||
deviceCommand1.setDeviceDetailId(deviceCommand.getDeviceDetailId()); | |||||
deviceCommandMapper.insert(deviceCommand1); | |||||
}); | |||||
} | |||||
} | |||||
return true; | |||||
} | |||||
@Override | |||||
@Transactional | |||||
public Boolean updateList(List<DeviceCommand> deviceCommands){ | |||||
deviceCommands.forEach(deviceCommand -> { | |||||
deviceCommandMapper.deleteByDevice(deviceCommand.getDeviceDetailId()); | |||||
deviceCommandMapper.insert(deviceCommand); | |||||
}); | |||||
return true; | |||||
} | |||||
} |
@ -0,0 +1,42 @@ | |||||
package com.topsail.uartBackend.uart.service.Impl; | |||||
import com.topsail.uartBackend.uart.entity.DeviceConfigDetail; | |||||
import com.topsail.uartBackend.uart.mapper.DeviceConfigDetailMapper; | |||||
import com.topsail.uartBackend.uart.service.DeviceConfigDetailService; | |||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | |||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | |||||
import org.springframework.beans.factory.annotation.Autowired; | |||||
import org.springframework.stereotype.Service; | |||||
import org.springframework.util.StringUtils; | |||||
import com.github.pagehelper.PageHelper; | |||||
import java.util.List; | |||||
import lombok.extern.slf4j.Slf4j; | |||||
/** | |||||
* <p> | |||||
* 所有类型设备的详细配置表 服务实现类 | |||||
* </p> | |||||
* | |||||
* @author lj | |||||
* @since 2022-08-01 | |||||
*/ | |||||
@Service | |||||
@Slf4j | |||||
public class DeviceConfigDetailServiceImpl extends ServiceImpl<DeviceConfigDetailMapper, DeviceConfigDetail> implements DeviceConfigDetailService { | |||||
@Autowired | |||||
private DeviceConfigDetailMapper deviceConfigDetailMapper; | |||||
/** | |||||
*分页查询 | |||||
*/ | |||||
@Override | |||||
public List<DeviceConfigDetail> pageList(DeviceConfigDetail deviceConfigDetail,Integer pageNo, Integer pageSize) { | |||||
QueryWrapper<DeviceConfigDetail> wrapper = new QueryWrapper<>(); | |||||
wrapper.setEntity(deviceConfigDetail); | |||||
PageHelper.startPage(pageNo,pageSize); | |||||
List<DeviceConfigDetail> list=list(wrapper); | |||||
return list; | |||||
} | |||||
} |
@ -0,0 +1,106 @@ | |||||
package com.topsail.uartBackend.user.controller; | |||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | |||||
import com.topsail.uartBackend.core.CodeMsg; | |||||
import com.topsail.uartBackend.core.JwtUtil; | |||||
import com.topsail.uartBackend.user.service.UserService; | |||||
import com.topsail.uartBackend.user.entity.User; | |||||
import org.springframework.web.bind.annotation.*; | |||||
import org.springframework.beans.factory.annotation.Autowired; | |||||
import com.topsail.uartBackend.core.Result; | |||||
import java.util.HashMap; | |||||
import java.util.Map; | |||||
/** | |||||
* | |||||
* Created by pz on '2022-07-19 14:59:56'. | |||||
*/ | |||||
@RestController | |||||
//@RequestMapping("/user") | |||||
@RequestMapping("user") | |||||
public class UserController { | |||||
@Autowired | |||||
private UserService userService; | |||||
/** | |||||
* 新增 | |||||
*/ | |||||
@PostMapping("/insertUser") | |||||
public Result insertUser( @RequestBody User user){ | |||||
User newUser = new User(); | |||||
if (null != user.getId() ){ | |||||
newUser = userService.getOne(new QueryWrapper<>(user)); | |||||
} | |||||
if (newUser == null){ | |||||
return Result.error(new CodeMsg(502,"用户重复!")); | |||||
} | |||||
boolean rsp= userService.save(user); | |||||
return rsp?Result.success("成功"):Result.error(new CodeMsg(502,"失败")); | |||||
} | |||||
/** | |||||
* 删除 | |||||
*/ | |||||
@DeleteMapping("/deleteUser/{id}") | |||||
public Result deleteUser(@PathVariable Integer id){ | |||||
boolean rsp= userService.removeById(id); | |||||
return rsp?Result.success("成功"):Result.error(new CodeMsg(502,"失败")); | |||||
} | |||||
/** | |||||
* 更新 | |||||
*/ | |||||
@PutMapping("/updateUser") | |||||
public Result updateUser(@RequestBody User user){ | |||||
boolean rsp= userService.updateById(user); | |||||
return rsp?Result.success("成功"):Result.error(new CodeMsg(502,"失败")); | |||||
} | |||||
/** | |||||
* 分页查询 | |||||
*/ | |||||
@GetMapping("/getUserList") | |||||
public Result pageList(User user,@RequestParam(required = false,defaultValue = "1")Integer pageNo, @RequestParam(required = false,defaultValue = "10")Integer pageSize) { | |||||
return Result.success(Result.returnPageMap(userService.pageList(user,pageNo,pageSize))); | |||||
} | |||||
/** | |||||
* 登录 | |||||
* */ | |||||
@PostMapping("/login") | |||||
public Result login(@RequestBody User user){ | |||||
User newUser = new User(); | |||||
if (null != user ){ | |||||
newUser = userService.getOne(new QueryWrapper<>(user)); | |||||
}else { | |||||
return Result.error(new CodeMsg(502,"登录失败,请检查账号或密码!")); | |||||
} | |||||
if (null == newUser){ | |||||
return Result.error(new CodeMsg(502,"登录失败,请检查账号或密码!")); | |||||
} | |||||
String token = JwtUtil.getToken(user); | |||||
Map<String, Object> map = new HashMap<>(); | |||||
map.put("token",token); | |||||
map.put("user",newUser); | |||||
if (2 == newUser.getStatus()){ | |||||
return Result.error(new CodeMsg(502,"该账户暂停使用!")); | |||||
} | |||||
return Result.success(map); | |||||
} | |||||
} |
@ -0,0 +1,83 @@ | |||||
package com.topsail.uartBackend.user.entity; | |||||
import org.springframework.format.annotation.DateTimeFormat; | |||||
import com.fasterxml.jackson.annotation.JsonFormat; | |||||
import java.util.Date; | |||||
import com.baomidou.mybatisplus.annotation.TableField; | |||||
import com.baomidou.mybatisplus.annotation.FieldFill; | |||||
import com.baomidou.mybatisplus.annotation.IdType; | |||||
import com.baomidou.mybatisplus.annotation.TableId; | |||||
import java.time.LocalDateTime; | |||||
import java.io.Serializable; | |||||
import lombok.Data; | |||||
import lombok.EqualsAndHashCode; | |||||
import lombok.experimental.Accessors; | |||||
/** | |||||
* <p> | |||||
* 用户表 | |||||
* </p> | |||||
* | |||||
* @author lj | |||||
* @since 2022-07-21 | |||||
*/ | |||||
@Data | |||||
@EqualsAndHashCode(callSuper = false) | |||||
@Accessors(chain = true) | |||||
public class User implements Serializable { | |||||
private static final long serialVersionUID = 1L; | |||||
@TableId(value = "id", type = IdType.AUTO) | |||||
private Integer id ; | |||||
/** | |||||
* 用户名 | |||||
*/ | |||||
private String userName ; | |||||
/** | |||||
* 别名 | |||||
*/ | |||||
private String anotherName ; | |||||
/** | |||||
* 密码 | |||||
*/ | |||||
private String password ; | |||||
/** | |||||
* 所属公司 | |||||
*/ | |||||
private String company ; | |||||
/** | |||||
* 角色ID | |||||
*/ | |||||
private Integer roleId ; | |||||
/** | |||||
* 账号状态(1:正常,2:暂停使用) | |||||
*/ | |||||
private Integer status ; | |||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") | |||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") | |||||
@TableField(fill = FieldFill.INSERT) | |||||
private Date createTime ; | |||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") | |||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") | |||||
@TableField(fill = FieldFill.INSERT_UPDATE) | |||||
private Date updateTime ; | |||||
} |
@ -0,0 +1,18 @@ | |||||
package com.topsail.uartBackend.user.mapper; | |||||
import com.topsail.uartBackend.user.entity.User; | |||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; | |||||
import org.apache.ibatis.annotations.Mapper; | |||||
/** | |||||
* <p> | |||||
* 用户表 Mapper 接口 | |||||
* </p> | |||||
* | |||||
* @author lj | |||||
* @since 2022-07-19 | |||||
*/ | |||||
@Mapper | |||||
public interface UserMapper extends BaseMapper<User> { | |||||
} |
@ -0,0 +1,42 @@ | |||||
package com.topsail.uartBackend.user.service.Impl; | |||||
import com.topsail.uartBackend.user.entity.User; | |||||
import com.topsail.uartBackend.user.mapper.UserMapper; | |||||
import com.topsail.uartBackend.user.service.UserService; | |||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | |||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | |||||
import org.springframework.beans.factory.annotation.Autowired; | |||||
import org.springframework.stereotype.Service; | |||||
import org.springframework.util.StringUtils; | |||||
import com.github.pagehelper.PageHelper; | |||||
import java.util.List; | |||||
import lombok.extern.slf4j.Slf4j; | |||||
/** | |||||
* <p> | |||||
* 用户表 服务实现类 | |||||
* </p> | |||||
* | |||||
* @author lj | |||||
* @since 2022-07-19 | |||||
*/ | |||||
@Service | |||||
@Slf4j | |||||
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService { | |||||
@Autowired | |||||
private UserMapper userMapper; | |||||
/** | |||||
*分页查询 | |||||
*/ | |||||
@Override | |||||
public List<User> pageList(User user,Integer pageNo, Integer pageSize) { | |||||
QueryWrapper<User> wrapper = new QueryWrapper<>(); | |||||
wrapper.setEntity(user); | |||||
PageHelper.startPage(pageNo,pageSize); | |||||
List<User> list=list(wrapper); | |||||
return list; | |||||
} | |||||
} |
@ -0,0 +1,21 @@ | |||||
package com.topsail.uartBackend.user.service; | |||||
import com.topsail.uartBackend.user.entity.User; | |||||
import com.baomidou.mybatisplus.extension.service.IService; | |||||
import java.util.List; | |||||
/** | |||||
* <p> | |||||
* 用户表 服务类 | |||||
* </p> | |||||
* | |||||
* @author lj | |||||
* @since 2022-07-19 | |||||
*/ | |||||
public interface UserService extends IService<User> { | |||||
/** | |||||
*分页查询 | |||||
*/ | |||||
public List<User> pageList(User user,Integer pageNo, Integer pageSize); | |||||
} |
@ -0,0 +1,5 @@ | |||||
spring.datasource.url=jdbc:mysql://rm-2ze77qng1ddlfur9g4o.mysql.rds.aliyuncs.com:3306/bluetooth_uart?useUnicode=true&characterEncoding=UTF-8&useSSL=false | |||||
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver | |||||
spring.datasource.username=topsail | |||||
spring.datasource.password=Topsail2020 |
@ -0,0 +1,19 @@ | |||||
server.port=7425 | |||||
spring.profiles.active=prod | |||||
spring.application.name=bluetooth-uart | |||||
#mybatis-plus | |||||
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl | |||||
mybatis-plus.global-config.db-config.update-strategy=not_empty | |||||
mybatis-plus.global-config.db-config.select-strategy=not_empty | |||||
mybatis-plus.mapper-locations=classpath:mapper/*.xml | |||||
mybatis-plus.configuration.call-setters-on-nulls=true | |||||
#pagehelper | |||||
pagehelper.helperDialect=mysql | |||||
pagehelper.reasonable=true | |||||
pagehelper.support-methods-arguments=true | |||||
pagehelper.params=count=countSql | |||||
spring.jackson.time-zone=GMT+8 |
@ -0,0 +1,5 @@ | |||||
<?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.topsail.uartBackend.uart.mapper.CommandCollectionMapper"> | |||||
</mapper> |
@ -0,0 +1,5 @@ | |||||
<?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.topsail.uartBackend.uart.mapper.CommandDetailMapper"> | |||||
</mapper> |
@ -0,0 +1,10 @@ | |||||
<?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.topsail.uartBackend.uart.mapper.CommandTypeMapper"> | |||||
<select id="selectByTypeId" resultType="com.topsail.uartBackend.uart.entity.CommandType"> | |||||
select * from command_type where type_id = #{typeId} | |||||
</select> | |||||
</mapper> |
@ -0,0 +1,9 @@ | |||||
<?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.topsail.uartBackend.uart.mapper.DeviceCommandMapper"> | |||||
<delete id="deleteByDevice"> | |||||
delete from device_command where device_detail_id = #{deviceDetailId} | |||||
</delete> | |||||
</mapper> |
@ -0,0 +1,5 @@ | |||||
<?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.topsail.uartBackend.uart.mapper.DeviceConfigDetailMapper"> | |||||
</mapper> |
@ -0,0 +1,5 @@ | |||||
<?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.topsail.uartBackend.user.mapper.UserMapper"> | |||||
</mapper> |
@ -0,0 +1,66 @@ | |||||
package ${package.Controller}; | |||||
import com.topsail.uartBackend.core.CodeMsg; | |||||
import ${package.Service}.${table.serviceName}; | |||||
import ${package.Entity}.${entity}; | |||||
import org.springframework.web.bind.annotation.*; | |||||
import org.springframework.beans.factory.annotation.Autowired; | |||||
import com.topsail.uartBackend.core.Result; | |||||
/** | |||||
* | |||||
* Created by pz on '${.now?string('yyyy-MM-dd HH:mm:ss')}'. | |||||
*/ | |||||
@RestController | |||||
//@RequestMapping("<#if package.ModuleName??>/${package.ModuleName}</#if>/<#if controllerMappingHyphenStyle??>${controllerMappingHyphen}<#else>${table.entityPath}</#if>") | |||||
@RequestMapping("${entity?uncap_first}") | |||||
public class ${entity}Controller { | |||||
@Autowired | |||||
private ${entity}Service ${entity?uncap_first}Service; | |||||
/** | |||||
* 新增 | |||||
*/ | |||||
@PostMapping("/insert${entity}") | |||||
public Result insert${entity}( @RequestBody ${entity} ${entity?uncap_first}){ | |||||
boolean rsp= ${entity?uncap_first}Service.save(${entity?uncap_first}); | |||||
return rsp?Result.success("成功"):Result.error(new CodeMsg(502,"失败")); | |||||
} | |||||
/** | |||||
* 删除 | |||||
*/ | |||||
@DeleteMapping("/delete${entity}/{id}") | |||||
public Result delete${entity}(@PathVariable Integer id){ | |||||
boolean rsp= ${entity?uncap_first}Service.removeById(id); | |||||
return rsp?Result.success("成功"):Result.error(new CodeMsg(502,"失败")); | |||||
} | |||||
/** | |||||
* 更新 | |||||
*/ | |||||
@PutMapping("/update${entity}") | |||||
public Result update${entity}(@RequestBody ${entity} ${entity?uncap_first}){ | |||||
boolean rsp= ${entity?uncap_first}Service.updateById(${entity?uncap_first}); | |||||
return rsp?Result.success("成功"):Result.error(new CodeMsg(502,"失败")); | |||||
} | |||||
/** | |||||
* 分页查询 | |||||
*/ | |||||
@GetMapping("/get${entity}List") | |||||
public Result pageList(${entity} ${entity?uncap_first},@RequestParam(required = false,defaultValue = "1")Integer pageNo, @RequestParam(required = false,defaultValue = "10")Integer pageSize) { | |||||
return Result.success(Result.returnPageMap(${entity?uncap_first}Service.pageList(${entity?uncap_first},pageNo,pageSize))); | |||||
} | |||||
} |
@ -0,0 +1,170 @@ | |||||
package ${package.Entity}; | |||||
import org.springframework.format.annotation.DateTimeFormat; | |||||
import com.fasterxml.jackson.annotation.JsonFormat; | |||||
import java.util.Date; | |||||
import com.baomidou.mybatisplus.annotation.TableField; | |||||
import com.baomidou.mybatisplus.annotation.FieldFill; | |||||
<#list table.importPackages as pkg> | |||||
import ${pkg}; | |||||
</#list> | |||||
<#if swagger2> | |||||
import io.swagger.annotations.ApiModel; | |||||
import io.swagger.annotations.ApiModelProperty; | |||||
</#if> | |||||
<#if entityLombokModel> | |||||
import lombok.Data; | |||||
import lombok.EqualsAndHashCode; | |||||
import lombok.experimental.Accessors; | |||||
</#if> | |||||
/** | |||||
* <p> | |||||
* ${table.comment!} | |||||
* </p> | |||||
* | |||||
* @author ${author} | |||||
* @since ${date} | |||||
*/ | |||||
<#if entityLombokModel> | |||||
@Data | |||||
<#if superEntityClass??> | |||||
@EqualsAndHashCode(callSuper = true) | |||||
<#else> | |||||
@EqualsAndHashCode(callSuper = false) | |||||
</#if> | |||||
@Accessors(chain = true) | |||||
</#if> | |||||
<#if table.convert> | |||||
@TableName("${table.name}") | |||||
</#if> | |||||
<#if swagger2> | |||||
@ApiModel(value="${entity}对象", description="${table.comment!}") | |||||
</#if> | |||||
<#if superEntityClass??> | |||||
public class ${entity} extends ${superEntityClass}<#if activeRecord><${entity}></#if> { | |||||
<#elseif activeRecord> | |||||
public class ${entity} extends Model<${entity}> { | |||||
<#else> | |||||
public class ${entity} implements Serializable { | |||||
</#if> | |||||
<#if entitySerialVersionUID> | |||||
private static final long serialVersionUID = 1L; | |||||
</#if> | |||||
<#-- ---------- BEGIN 字段循环遍历 ----------> | |||||
<#list table.fields as field> | |||||
<#if field.keyFlag> | |||||
<#assign keyPropertyName="${field.propertyName}"/> | |||||
</#if> | |||||
<#if field.comment!?length gt 0> | |||||
<#if swagger2> | |||||
@ApiModelProperty(value = "${field.comment}") | |||||
<#else> | |||||
/** | |||||
* ${field.comment} | |||||
*/ | |||||
</#if> | |||||
</#if> | |||||
<#if field.keyFlag> | |||||
<#-- 主键 --> | |||||
<#if field.keyIdentityFlag> | |||||
@TableId(value = "${field.name}", type = IdType.AUTO) | |||||
<#elseif idType??> | |||||
@TableId(value = "${field.name}", type = IdType.${idType}) | |||||
<#elseif field.convert> | |||||
@TableId("${field.name}") | |||||
</#if> | |||||
<#-- 普通字段 --> | |||||
<#elseif field.fill??> | |||||
<#-- ----- 存在字段填充设置 -----> | |||||
<#if field.convert> | |||||
@TableField(value = "${field.name}", fill = FieldFill.${field.fill}) | |||||
<#else> | |||||
@TableField(fill = FieldFill.${field.fill}) | |||||
</#if> | |||||
<#elseif field.convert> | |||||
@TableField("${field.name}") | |||||
</#if> | |||||
<#-- 乐观锁注解 --> | |||||
<#if (versionFieldName!"") == field.name> | |||||
@Version | |||||
</#if> | |||||
<#-- 逻辑删除注解 --> | |||||
<#if (logicDeleteFieldName!"") == field.name> | |||||
@TableLogic | |||||
</#if> | |||||
<#-- 时间类型处理--> | |||||
<#if (field.propertyType) == "LocalDateTime"> | |||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") | |||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") | |||||
<#if (field.propertyName) == "createTime"> | |||||
@TableField(fill = FieldFill.INSERT) | |||||
</#if> | |||||
<#if (field.propertyName) == "updateTime"> | |||||
@TableField(fill = FieldFill.INSERT_UPDATE) | |||||
</#if> | |||||
private Date ${field.propertyName} ; | |||||
<#else> | |||||
private ${field.propertyType} ${field.propertyName} ; | |||||
</#if> | |||||
</#list> | |||||
<#------------ END 字段循环遍历 ----------> | |||||
<#if !entityLombokModel> | |||||
<#list table.fields as field> | |||||
<#if field.propertyType == "boolean"> | |||||
<#assign getprefix="is"/> | |||||
<#else> | |||||
<#assign getprefix="get"/> | |||||
</#if> | |||||
public ${field.propertyType} ${getprefix}${field.capitalName}() { | |||||
return ${field.propertyName}; | |||||
} | |||||
<#if entityBuilderModel> | |||||
public ${entity} set${field.capitalName}(${field.propertyType} ${field.propertyName}) { | |||||
<#else> | |||||
public void set${field.capitalName}(${field.propertyType} ${field.propertyName}) { | |||||
</#if> | |||||
this.${field.propertyName} = ${field.propertyName}; | |||||
<#if entityBuilderModel> | |||||
return this; | |||||
</#if> | |||||
} | |||||
</#list> | |||||
</#if> | |||||
<#if entityColumnConstant> | |||||
<#list table.fields as field> | |||||
public static final String ${field.name?upper_case} = "${field.name}"; | |||||
</#list> | |||||
</#if> | |||||
<#if activeRecord> | |||||
@Override | |||||
protected Serializable pkVal() { | |||||
<#if keyPropertyName??> | |||||
return this.${keyPropertyName}; | |||||
<#else> | |||||
return null; | |||||
</#if> | |||||
} | |||||
</#if> | |||||
<#if !entityLombokModel> | |||||
@Override | |||||
public String toString() { | |||||
return "${entity}{" + | |||||
<#list table.fields as field> | |||||
<#if field_index==0> | |||||
"${field.propertyName}=" + ${field.propertyName} + | |||||
<#else> | |||||
", ${field.propertyName}=" + ${field.propertyName} + | |||||
</#if> | |||||
</#list> | |||||
"}"; | |||||
} | |||||
</#if> | |||||
} |
@ -0,0 +1,22 @@ | |||||
package ${package.Mapper}; | |||||
import ${package.Entity}.${entity}; | |||||
import ${superMapperClassPackage}; | |||||
import org.apache.ibatis.annotations.Mapper; | |||||
/** | |||||
* <p> | |||||
* ${table.comment!} Mapper 接口 | |||||
* </p> | |||||
* | |||||
* @author ${author} | |||||
* @since ${date} | |||||
*/ | |||||
<#if kotlin> | |||||
interface ${table.mapperName} : ${superMapperClass}<${entity}> | |||||
<#else> | |||||
@Mapper | |||||
public interface ${table.mapperName} extends ${superMapperClass}<${entity}> { | |||||
} | |||||
</#if> |
@ -0,0 +1,25 @@ | |||||
package ${package.Service}; | |||||
import ${package.Entity}.${entity}; | |||||
import ${superServiceClassPackage}; | |||||
import java.util.List; | |||||
/** | |||||
* <p> | |||||
* ${table.comment!} 服务类 | |||||
* </p> | |||||
* | |||||
* @author ${author} | |||||
* @since ${date} | |||||
*/ | |||||
<#if kotlin> | |||||
interface ${table.serviceName} : ${superServiceClass}<${entity}> | |||||
<#else> | |||||
public interface ${table.serviceName} extends ${superServiceClass}<${entity}> { | |||||
/** | |||||
*分页查询 | |||||
*/ | |||||
public List<${entity}> pageList(${entity} ${entity?uncap_first},Integer pageNo, Integer pageSize); | |||||
} | |||||
</#if> |
@ -0,0 +1,48 @@ | |||||
package ${package.ServiceImpl}; | |||||
import ${package.Entity}.${entity}; | |||||
import ${package.Mapper}.${table.mapperName}; | |||||
import ${package.Service}.${table.serviceName}; | |||||
import ${superServiceImplClassPackage}; | |||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | |||||
import org.springframework.beans.factory.annotation.Autowired; | |||||
import org.springframework.stereotype.Service; | |||||
import org.springframework.util.StringUtils; | |||||
import com.github.pagehelper.PageHelper; | |||||
import java.util.List; | |||||
import lombok.extern.slf4j.Slf4j; | |||||
/** | |||||
* <p> | |||||
* ${table.comment!} 服务实现类 | |||||
* </p> | |||||
* | |||||
* @author ${author} | |||||
* @since ${date} | |||||
*/ | |||||
@Service | |||||
<#if kotlin> | |||||
open class ${table.serviceImplName} : ${superServiceImplClass}<${table.mapperName}, ${entity}>(), ${table.serviceName} { | |||||
} | |||||
<#else> | |||||
@Slf4j | |||||
public class ${table.serviceImplName} extends ${superServiceImplClass}<${table.mapperName}, ${entity}> implements ${table.serviceName} { | |||||
@Autowired | |||||
private ${entity}Mapper ${entity?uncap_first}Mapper; | |||||
/** | |||||
*分页查询 | |||||
*/ | |||||
@Override | |||||
public List<${entity}> pageList(${entity} ${entity?uncap_first},Integer pageNo, Integer pageSize) { | |||||
QueryWrapper<${entity}> wrapper = new QueryWrapper<>(); | |||||
wrapper.setEntity(${entity?uncap_first}); | |||||
PageHelper.startPage(pageNo,pageSize); | |||||
List<${entity}> list=list(wrapper); | |||||
return list; | |||||
} | |||||
} | |||||
</#if> |
@ -0,0 +1,5 @@ | |||||
spring.datasource.url=jdbc:mysql://rm-2ze77qng1ddlfur9g4o.mysql.rds.aliyuncs.com:3306/bluetooth_uart?useUnicode=true&characterEncoding=UTF-8&useSSL=false | |||||
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver | |||||
spring.datasource.username=topsail | |||||
spring.datasource.password=Topsail2020 |
@ -0,0 +1,19 @@ | |||||
server.port=7425 | |||||
spring.profiles.active=prod | |||||
spring.application.name=bluetooth-uart | |||||
#mybatis-plus | |||||
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl | |||||
mybatis-plus.global-config.db-config.update-strategy=not_empty | |||||
mybatis-plus.global-config.db-config.select-strategy=not_empty | |||||
mybatis-plus.mapper-locations=classpath:mapper/*.xml | |||||
mybatis-plus.configuration.call-setters-on-nulls=true | |||||
#pagehelper | |||||
pagehelper.helperDialect=mysql | |||||
pagehelper.reasonable=true | |||||
pagehelper.support-methods-arguments=true | |||||
pagehelper.params=count=countSql | |||||
spring.jackson.time-zone=GMT+8 |