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