From 8dba8d30f6c0791f17d2ff057b06c5204f3a1f29 Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期一, 02 三月 2026 09:09:56 +0800
Subject: [PATCH] 客户反馈的bug修改

---
 ruoyi-admin/target/classes/application-prod.yml                                             |   58 +---------
 ruoyi-system/target/classes/mapper/system/TTrainLibraryMapper.xml                           |    2 
 pom.xml                                                                                     |    1 
 ruoyi-admin/src/main/resources/application.yml                                              |    2 
 .idea/misc.xml                                                                              |    5 +
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TPedigreeChartController.java        |   16 +-
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TStrainValidationDataController.java |    3 
 /dev/null                                                                                   |   79 ---------------
 ruoyi-admin/target/classes/application-test.yml                                             |   42 -------
 ruoyi-system/target/classes/mapper/system/SysUserMapper.xml                                 |   12 +
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TTrainLibraryController.java         |   16 +++
 ruoyi-system/target/classes/mapper/system/TPedigreeChartMapper.xml                          |   24 ++++
 ruoyi-system/src/main/java/com/ruoyi/system/model/TSeparationOfCultureDishes.java           |    5 
 .idea/compiler.xml                                                                          |    4 
 ruoyi-system/src/main/resources/mapper/system/TTrainLibraryMapper.xml                       |    2 
 15 files changed, 84 insertions(+), 187 deletions(-)

diff --git a/.idea/compiler.xml b/.idea/compiler.xml
index 8ec621c..dea4c01 100644
--- a/.idea/compiler.xml
+++ b/.idea/compiler.xml
@@ -8,7 +8,6 @@
         <sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
         <outputRelativeToContentRoot value="true" />
         <module name="ruoyi-framework" />
-        <module name="ruoyi-applet" />
         <module name="ruoyi-system" />
         <module name="ruoyi-common" />
         <module name="ruoyi-generator" />
@@ -17,5 +16,8 @@
         <module name="ruoyi-admin" />
       </profile>
     </annotationProcessing>
+    <bytecodeTargetLevel>
+      <module name="ruoyi-applet" target="1.8" />
+    </bytecodeTargetLevel>
   </component>
 </project>
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 0fc7123..a4d6bd3 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -8,6 +8,11 @@
         <option value="$PROJECT_DIR$/generator/pom.xml" />
       </list>
     </option>
+    <option name="ignoredFiles">
+      <set>
+        <option value="$PROJECT_DIR$/ruoyi-applet/pom.xml" />
+      </set>
+    </option>
   </component>
   <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK" />
 </project>
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 7e522a1..224431a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -186,7 +186,6 @@
         <module>ruoyi-quartz</module>
         <module>ruoyi-generator</module>
         <module>ruoyi-common</module>
-        <module>ruoyi-applet</module>
     </modules>
     <packaging>pom</packaging>
 
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TPedigreeChartController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TPedigreeChartController.java
index 729c858..ffcfceb 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TPedigreeChartController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TPedigreeChartController.java
@@ -62,7 +62,6 @@
     private ISysUserService sysUserService;
 
 
-
     /**
      * 获取谱系图分页列表
      */
@@ -70,14 +69,14 @@
     @ApiOperation(value = "谱系图-获取谱系图分页列表",response = TPedigreeChartQuery.class)
     @PostMapping(value = "/api/t-pedigree-chart/pageList")
     public R<PageInfo<TPedigreeChartVO>> pageList(@RequestBody String param) {
-
         TPedigreeChartQuery query = JSON.parseObject(param, TPedigreeChartQuery.class);
         SysUser sysUser = sysUserService.selectUserById(tokenService.getLoginUser().getUserId());
         if (sysUser.getRoleType().equals("2")){
             query.setRoleType(2);
             List<String> allProjectIds = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getUserId, tokenService.getLoginUser().getUserId())
                     .list().stream().map(TProjectTeamStaff::getTeamId).collect(Collectors.toList());
-            if (!allProjectIds.isEmpty()){                List<String> projectIds = projectTeamService.lambdaQuery().in(TProjectTeam::getId, allProjectIds)
+            if (!allProjectIds.isEmpty()){
+                List<String> projectIds = projectTeamService.lambdaQuery().in(TProjectTeam::getId, allProjectIds)
                         .list().stream().map(TProjectTeam::getId).collect(Collectors.toList());
                 if (projectIds.isEmpty()){
                     return R.ok(new PageInfo<>());
@@ -88,19 +87,16 @@
             }
         }else if (!sysUser.getRoleType().equals("1")){
             query.setRoleType(3);
-
             List<String> allProjectIds = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getUserId, tokenService.getLoginUser().getUserId())
                     .list().stream().map(TProjectTeamStaff::getTeamId).collect(Collectors.toList());
             if (!allProjectIds.isEmpty()){                List<String> projectIds = projectTeamService.lambdaQuery().in(TProjectTeam::getId, allProjectIds)
                         .eq(TProjectTeam::getStatus, 1).list().stream().map(TProjectTeam::getId).collect(Collectors.toList());
-
                 if (projectIds.isEmpty()){
                     return R.ok(new PageInfo<>());
                 }
                 query.setProjectIds(projectIds);
             }else{
                 return R.ok(new PageInfo<>());
-
             }
         }else{
             query.setRoleType(1);
@@ -547,6 +543,7 @@
     }
     @Log(title = "谱系图-谱系图-删除谱系图", businessType = BusinessType.DELETE)
     @ApiOperation(value = "谱系图-删除谱系图")
+    @Transactional
     @DeleteMapping(value = "/open/t-pedigree-chart/deleteProgenitor")
     public R<Boolean> deleteProgenitor(@RequestParam String id) {
         pedigreeChartService.removeById(id);
@@ -556,7 +553,12 @@
     @ApiOperation(value = "谱系图-删除菌种传代项",response = TPedigreeChartParentDTO.class)
     @DeleteMapping(value = "/open/t-pedigree-chart/deleteProgenitorChild")
     public R<Boolean> deleteProgenitorChild(@RequestParam String id) {
-         pedigreeChartDetailService.removeById(id);
+        List<TPedigreeChartDetail> children = pedigreeChartDetailService.lambdaQuery().eq(TPedigreeChartDetail::getParentId, id)
+                .list();
+        if (!children.isEmpty()){
+            return R.fail("请先删除子项");
+        }
+        pedigreeChartDetailService.removeById(id);
         return R.ok();
     }
     @Log(title = "谱系图-谱系图-编辑菌种传代/传代数项", businessType = BusinessType.UPDATE)
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TStrainValidationDataController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TStrainValidationDataController.java
index 27b04b5..1e613ee 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TStrainValidationDataController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TStrainValidationDataController.java
@@ -124,6 +124,9 @@
             List<String> allProjectIds = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getUserId, tokenService.getLoginUser().getUserId())
                     .eq(TProjectTeamStaff::getRoleType, 3)
                     .list().stream().map(TProjectTeamStaff::getTeamId).collect(Collectors.toList());
+            if (allProjectIds.isEmpty()){
+                allProjectIds.add("0");
+            }
             TProjectTeam projectTeam = projectTeamService.lambdaQuery().in(TProjectTeam::getId, allProjectIds)
                     .eq(TProjectTeam::getStatus, 1)
                     .orderByDesc(BaseModel::getCreateTime).last("limit 1").one();
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TTrainLibraryController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TTrainLibraryController.java
index cb597d4..4234335 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TTrainLibraryController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TTrainLibraryController.java
@@ -2,6 +2,8 @@
 
 
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.ruoyi.common.annotation.Log;
@@ -237,6 +239,20 @@
         }
         return R.ok();
     }
+
+    public static void main(String[] args) {
+//        String jsonStr = "[{\"id\":1,\"num1\":\"00:00\",\"num2\":\"19:00\",\"num3\":1,\"num4\":1,\"num5\":1,\"num6\":1,\"num7\":1}]";
+//        JSONArray startingFareJsonArray = JSONArray.parseArray(jsonStr);
+//        for (int i = 0; i < startingFareJsonArray.size(); i++) {
+//            JSONObject jsonObject = startingFareJsonArray.getJSONObject(i);
+//            System.out.println(jsonObject.getString("num1"));
+//            System.out.println(jsonObject.getString("num2"));
+//            System.out.println(jsonObject.getInteger("num3"));
+//        }
+        Long temp =2027571910897541122L;
+        System.out.println(temp%20);
+
+    }
     /**
      * 新增菌种库
      */
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/MsgUtils.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/MsgUtils.java
deleted file mode 100644
index 119a5ea..0000000
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/MsgUtils.java
+++ /dev/null
@@ -1,70 +0,0 @@
-package com.ruoyi.web.controller.tool;
-
-import com.aliyun.dysmsapi20170525.models.SendSmsRequest;
-import com.aliyun.dysmsapi20170525.models.SendSmsResponse;
-import com.aliyun.tea.TeaException;
-import com.aliyun.teaopenapi.models.Config;
-import com.aliyun.teautil.models.RuntimeOptions;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Component;
-
-@Component
-@Slf4j
-public class MsgUtils {
-
-    @Value("${code.config.accessKeyId}")
-    private  String accessKeyId;
-    @Value("${code.config.accessKeySecret}")
-    private  String accessKeySecret;
-    @Value("${code.config.signName}")
-    private  String signName;
-    @Value("${code.config.templateCode}")
-    private  String templateCode;
-    @Value("${code.config.signNameTest}")
-    private  String signNameTest;
-    @Value("${code.config.templateCodeTest}")
-    private  String templateCodeTest;
-
-    /**
-     * 使用AK&SK初始化账号Client
-     * @param accessKeyId
-     * @param accessKeySecret
-     * @return Client
-     * @throws Exception
-     */
-    public static com.aliyun.dysmsapi20170525.Client createClient(String accessKeyId, String accessKeySecret) throws Exception {
-        Config config = new Config()
-                // 您的 AccessKey ID
-                .setAccessKeyId(accessKeyId)
-                // 您的 AccessKey Secret
-                .setAccessKeySecret(accessKeySecret);
-        // 访问的域名
-        config.endpoint = "dysmsapi.aliyuncs.com";
-        return new com.aliyun.dysmsapi20170525.Client(config);
-    }
-
-    public void sendMsg(String phone,String code) throws Exception {
-        com.aliyun.dysmsapi20170525.Client client = MsgUtils.createClient(accessKeyId,accessKeySecret);
-        SendSmsRequest sendSmsRequest = new SendSmsRequest()
-                .setSignName(signName)
-                .setTemplateCode(templateCode)
-                .setPhoneNumbers(phone)
-                .setTemplateParam("{\"code\":\""+code+"\"}");
-        RuntimeOptions runtime = new RuntimeOptions();
-        try {
-            // 复制代码运行请自行打印 API 的返回值
-            SendSmsResponse sendSmsResponse = client.sendSmsWithOptions(sendSmsRequest, runtime);
-            log.info("短信发送成功:{},{}",sendSmsResponse.getBody().getMessage(),sendSmsResponse.getStatusCode());
-        } catch (TeaException error) {
-            // 如有需要,请打印 error
-            com.aliyun.teautil.Common.assertAsString(error.message);
-            log.info("短信发送失败:{}",error.message);
-        } catch (Exception _error) {
-            TeaException error = new TeaException(_error.getMessage(), _error);
-            // 如有需要,请打印 error
-            com.aliyun.teautil.Common.assertAsString(error.message);
-            log.info("短信发送失败:{}",error.message);
-        }
-    }
-}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/core/config/FileUploaderConfig.java b/ruoyi-admin/src/main/java/com/ruoyi/web/core/config/FileUploaderConfig.java
deleted file mode 100644
index d87ab0d..0000000
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/core/config/FileUploaderConfig.java
+++ /dev/null
@@ -1,67 +0,0 @@
-package com.ruoyi.web.core.config;
-
-import com.qcloud.cos.COSClient;
-import com.qcloud.cos.ClientConfig;
-import com.qcloud.cos.auth.BasicCOSCredentials;
-import com.qcloud.cos.auth.COSCredentials;
-import com.qcloud.cos.http.HttpProtocol;
-import com.qcloud.cos.region.Region;
-import lombok.Data;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-@Configuration
-@Data
-public class FileUploaderConfig {
-
-    /**
-     * COS的SecretId
-     */
-    @Value("${cos.client.accessKey}")
-    private String secretId;
-    /**
-     * COS的SecretKey
-     */
-    @Value("${cos.client.secretKey}")
-    private String secretKey;
-    /**
-     * 文件上传后访问路径的根路径,后面要最佳文件名字与类型
-     */
-    @Value("${cos.client.rootSrc}")
-    private String rootSrc;
-    /**
-     * 上传的存储桶的地域
-     */
-    @Value("${cos.client.bucketAddr}")
-    private String bucketAddr;
-    /**
-     * 存储桶的名字,是自己在存储空间自己创建的,我创建的名字是:qq-test-1303******
-     */
-    @Value("${cos.client.bucket}")
-    private String bucketName;
-    /**
-     * 文件存放位置
-     */
-    @Value("${cos.client.location}")
-    private String location;
-
-    @Value("${file.url.prefix}")
-    private String fileUrlPrefix;
-
-
-    @Bean
-    public COSClient cosClient() {
-        // 1 初始化用户身份信息(secretId, secretKey)。
-        COSCredentials cred = new BasicCOSCredentials(secretId, secretKey);
-        // 2.1 设置存储桶的地域(上文获得)
-        Region region = new Region(bucketAddr);
-        ClientConfig clientConfig = new ClientConfig(region);
-        // 2.2 使用https协议传输
-        clientConfig.setHttpProtocol(HttpProtocol.https);
-        // 生成 cos 客户端
-        return new COSClient(cred, clientConfig);
-    }
-
-
-}
diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml
index e673e36..dcc106d 100644
--- a/ruoyi-admin/src/main/resources/application.yml
+++ b/ruoyi-admin/src/main/resources/application.yml
@@ -1,4 +1,4 @@
 # 项目相关配置
 spring:
   profiles:
-    active: prod
+    active: test
diff --git a/ruoyi-admin/target/classes/application-prod.yml b/ruoyi-admin/target/classes/application-prod.yml
index 02bf461..097f7da 100644
--- a/ruoyi-admin/target/classes/application-prod.yml
+++ b/ruoyi-admin/target/classes/application-prod.yml
@@ -17,10 +17,10 @@
 # 开发环境配置
 server:
   # 服务器的HTTP端口,默认为8080
-  port: 8080
+  port: 8082
   servlet:
     # 应用的访问路径
-    context-path: /
+    context-path: /culture/
   tomcat:
     # tomcat的URI编码
     uri-encoding: UTF-8
@@ -69,20 +69,13 @@
   # redis 配置
   redis:
     # 地址
-    #    host: 127.0.0.1
-    #    # 端口,默认为6379
-    #    port: 6379
-    #    # 数据库索引
-    #    database: 0
-    #    # 密码
-    #    password: 123456
     host: 127.0.0.1
     # 端口,默认为6379
-    port: 16379
+    port: 6379
     # 数据库索引
     database: 0
     # 密码
-    password: 8f5z9g52gx4bg
+    password: 123456
     # 连接超时时间
     timeout: 10s
     lettuce:
@@ -102,9 +95,9 @@
     druid:
       # 主库数据源
       master:
-        url: jdbc:mysql://172.27.0.13:3306/xizang?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=Asia/Shanghai
-        username: xzgt
-        password: changyun!6f2gshj6h3j
+        url: jdbc:mysql://127.0.0.1:10633/strain_library?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&allowPublicKeyRetrieval=true&useSSL=false&serverTimezone=Asia/Shanghai
+        username: root
+        password: Laboratory@2025!
       # 从库数据源
       slave:
         # 从数据源开关/默认关闭
@@ -199,39 +192,6 @@
     accessPath: /file/
     allowExt: .jpg|.png|.gif|.jpeg|.doc|.docx|.apk|.MP4|.mp4|.pdf|.PDF|.xls|.xlsx|.rar|.zip|.rar
   url:
+    #    prefix: http://localhost:${server.port}${server.servlet.context-path}
     prefix: https://xzgt.test.591taxi.cn:${server.port}${server.servlet.context-path}
-wx:
-  conf:
-    appId: wxe91f1af7638aa5dd
-    secretId: a787e1a462715604e0c9528b6d8960d1
-#OSS及短信配置
-code:
-  config:
-    templateCodeTest: "SMS_154950909"
-    signNameTest: "阿里云短信测试"
-    accessKeyId: LTAI5tAdba8HtT1C6UqtSxBt
-    accessKeySecret: 0SRb6XGkciQDPWn2rYqbJtq2qRMDY8
-    signName: "四川金达通信工程"
-    templateCode: "SMS_293985284"
-cos:
-  client:
-    accessKey: AKIDCF5EF2c0DE1e5JK8r4EGJF4mNsMgp26x
-    secretKey: lLl184rUyFOOE0d5KNGC3kmfNsCWk4GU
-    bucket: xzgttest-1305134071
-    bucketAddr: ap-chengdu
-    rootSrc: https://xzgttest-1305134071.cos.ap-chengdu.myqcloud.com/
-    location: /xizang
-sms:
-  enable: true
-  appId: 1400957506
-  secretid: AKIDCF5EF2c0DE1e5JK8r4EGJF4mNsMgp26x
-  secretkey: lLl184rUyFOOE0d5KNGC3kmfNsCWk4GU
-  sign: 畅云出行
-com:
-  taxi591:
-    bank:
-      cer-path: /usr/local/bank/TrustPay.cer
-      base-url: http://hello.enjoy.abchina.com
-      enable: true
-      keystore-password: gggs6666
-      pfx-path: /usr/local/bank/103882597000441.pfx
\ No newline at end of file
+
diff --git a/ruoyi-admin/target/classes/application-test.yml b/ruoyi-admin/target/classes/application-test.yml
index adf7853..c1004b2 100644
--- a/ruoyi-admin/target/classes/application-test.yml
+++ b/ruoyi-admin/target/classes/application-test.yml
@@ -17,7 +17,7 @@
 # 开发环境配置
 server:
   # 服务器的HTTP端口,默认为8080
-  port: 8081
+  port: 8082
   servlet:
     # 应用的访问路径
     context-path: /
@@ -88,7 +88,7 @@
         max-active: 8
         # #连接池最大阻塞等待时间(使用负值表示没有限制)
         max-wait: -1ms
-# 数据源配置
+  # 数据源配置
   datasource:
     type: com.alibaba.druid.pool.DruidDataSource
     driverClassName: com.mysql.cj.jdbc.Driver
@@ -192,40 +192,6 @@
     accessPath: /file/
     allowExt: .jpg|.png|.gif|.jpeg|.doc|.docx|.apk|.MP4|.mp4|.pdf|.PDF|.xls|.xlsx|.rar|.zip|.rar
   url:
-#    prefix: http://localhost:${server.port}${server.servlet.context-path}
+    #    prefix: http://localhost:${server.port}${server.servlet.context-path}
     prefix: https://xzgt.test.591taxi.cn:${server.port}${server.servlet.context-path}
-wx:
-  conf:
-    appId: wxe91f1af7638aa5dd
-    secretId: a787e1a462715604e0c9528b6d8960d1
-#OSS及短信配置
-code:
-  config:
-    templateCodeTest: "SMS_154950909"
-    signNameTest: "阿里云短信测试"
-    accessKeyId: LTAI5tAdba8HtT1C6UqtSxBt
-    accessKeySecret: 0SRb6XGkciQDPWn2rYqbJtq2qRMDY8
-    signName: "四川金达通信工程"
-    templateCode: "SMS_293985284"
-cos:
-  client:
-    accessKey: AKIDCF5EF2c0DE1e5JK8r4EGJF4mNsMgp26x
-    secretKey: lLl184rUyFOOE0d5KNGC3kmfNsCWk4GU
-    bucket: xzgttest-1305134071
-    bucketAddr: ap-chengdu
-    rootSrc: https://xzgttest-1305134071.cos.ap-chengdu.myqcloud.com/
-    location: /xizang
-sms:
-  enable: true
-  appId: 1400957506
-  secretid: AKIDCF5EF2c0DE1e5JK8r4EGJF4mNsMgp26x
-  secretkey: lLl184rUyFOOE0d5KNGC3kmfNsCWk4GU
-  sign: 畅云出行
-com:
-  taxi591:
-    bank:
-      cer-path: D:\workspaces\工作文件\畅云\农业银行\正式\TrustPay.cer
-      base-url: http://hello.enjoy.abchina.com
-      enable: true
-      keystore-password: gggs6666
-      pfx-path: D:\workspaces\工作文件\畅云\农业银行\正式\103882597000441.pfx
\ No newline at end of file
+
diff --git a/ruoyi-applet/pom.xml b/ruoyi-applet/pom.xml
deleted file mode 100644
index 13ffff9..0000000
--- a/ruoyi-applet/pom.xml
+++ /dev/null
@@ -1,185 +0,0 @@
-<?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">
-    <parent>
-        <artifactId>ruoyi</artifactId>
-        <groupId>com.ruoyi</groupId>
-        <version>3.8.6</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-    <packaging>jar</packaging>
-    <artifactId>ruoyi-applet</artifactId>
-
-    <description>
-        web服务入口
-    </description>
-
-    <dependencies>
-        <dependency>
-            <groupId>com.aliyun.oss</groupId>
-            <artifactId>aliyun-sdk-oss</artifactId>
-            <version>3.8.0</version>
-        </dependency>
-        <!-- spring-boot-devtools -->
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-devtools</artifactId>
-            <optional>true</optional> <!-- 表示依赖不会传递 -->
-        </dependency>
-
-        <!-- swagger3-->
-        <dependency>
-            <groupId>io.springfox</groupId>
-            <artifactId>springfox-boot-starter</artifactId>
-        </dependency>
-
-<!--        <dependency>-->
-<!--            <groupId>com.github.xiaoymin</groupId>-->
-<!--            <artifactId>swagger-bootstrap-ui</artifactId>-->
-<!--            <version>1.9.6</version>-->
-<!--        </dependency>-->
-
-
-        <!-- 防止进入swagger页面报类型转换错误,排除3.0.0中的引用,手动增加1.6.2版本 -->
-        <dependency>
-            <groupId>io.swagger</groupId>
-            <artifactId>swagger-models</artifactId>
-            <version>1.6.2</version>
-        </dependency>
-
-         <!-- Mysql驱动包 -->
-        <dependency>
-            <groupId>mysql</groupId>
-            <artifactId>mysql-connector-java</artifactId>
-        </dependency>
-
-        <!-- 核心模块-->
-        <dependency>
-            <groupId>com.ruoyi</groupId>
-            <artifactId>ruoyi-framework</artifactId>
-<!--            <exclusions>-->
-<!--                <exclusion>-->
-<!--                    <groupId>com.github.pagehelper</groupId>-->
-<!--                    <artifactId>pagehelper-spring-boot-starter</artifactId>-->
-<!--                </exclusion>-->
-<!--            </exclusions>-->
-        </dependency>
-
-        <!-- 定时任务-->
-        <dependency>
-            <groupId>com.ruoyi</groupId>
-            <artifactId>ruoyi-quartz</artifactId>
-<!--            <exclusions>-->
-<!--                <exclusion>-->
-<!--                    <groupId>com.github.pagehelper</groupId>-->
-<!--                    <artifactId>pagehelper-spring-boot-starter</artifactId>-->
-<!--                </exclusion>-->
-<!--            </exclusions>-->
-        </dependency>
-
-        <!-- 代码生成-->
-        <dependency>
-            <groupId>com.ruoyi</groupId>
-            <artifactId>ruoyi-generator</artifactId>
-<!--            <exclusions>-->
-<!--                <exclusion>-->
-<!--                    <groupId>com.github.pagehelper</groupId>-->
-<!--                    <artifactId>pagehelper-spring-boot-starter</artifactId>-->
-<!--                </exclusion>-->
-<!--            </exclusions>-->
-        </dependency>
-
-        <!-- zxing生成二维码 -->
-        <dependency>
-            <groupId>com.google.zxing</groupId>
-            <artifactId>core</artifactId>
-            <version>3.3.3</version>
-        </dependency>
-
-        <dependency>
-            <groupId>com.google.zxing</groupId>
-            <artifactId>javase</artifactId>
-            <version>3.3.3</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.springframework</groupId>
-            <artifactId>spring-test</artifactId>
-            <version>5.1.3.RELEASE</version>
-        </dependency>
-<!--        <dependency>-->
-<!--            <groupId>org.apache.httpcomponents</groupId>-->
-<!--            <artifactId>httpcore</artifactId>-->
-<!--            <version>4.3.2</version>-->
-<!--        </dependency>-->
-
-        <dependency>
-            <groupId>com.squareup.okhttp3</groupId>
-            <artifactId>okhttp</artifactId>
-            <version>4.9.3</version>
-        </dependency>
-
-        <dependency>
-            <groupId>com.alibaba</groupId>
-            <artifactId>fastjson</artifactId>
-            <version>1.2.78</version>
-        </dependency>
-
-        <!-- easypoi -->
-        <dependency>
-            <groupId>cn.afterturn</groupId>
-            <artifactId>easypoi-base</artifactId>
-            <version>3.0.3</version>
-        </dependency>
-        <dependency>
-            <groupId>cn.afterturn</groupId>
-            <artifactId>easypoi-web</artifactId>
-            <version>3.0.3</version>
-        </dependency>
-        <dependency>
-            <groupId>cn.afterturn</groupId>
-            <artifactId>easypoi-annotation</artifactId>
-            <version>3.0.3</version>
-        </dependency>
-
-        <!-- 阿里云短信 -->
-        <dependency>
-            <groupId>com.aliyun</groupId>
-            <artifactId>dysmsapi20170525</artifactId>
-            <version>2.0.10</version>
-        </dependency>
-
-    </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.springframework.boot</groupId>
-                <artifactId>spring-boot-maven-plugin</artifactId>
-                <version>2.5.15</version>
-                <configuration>
-                    <fork>true</fork> <!-- 如果没有该配置,devtools不会生效 -->
-                </configuration>
-                <executions>
-                    <execution>
-                        <goals>
-                            <goal>repackage</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>   
-                <groupId>org.apache.maven.plugins</groupId>   
-                <artifactId>maven-war-plugin</artifactId>   
-                <version>3.1.0</version>   
-                <configuration>
-                    <failOnMissingWebXml>false</failOnMissingWebXml>
-                    <warName>${project.artifactId}</warName>
-                </configuration>   
-           </plugin>   
-        </plugins>
-        <finalName>${project.artifactId}</finalName>
-    </build>
-
-</project>
\ No newline at end of file
diff --git a/ruoyi-applet/src/main/java/com/ruoyi/RuoYiAppletApplication.java b/ruoyi-applet/src/main/java/com/ruoyi/RuoYiAppletApplication.java
deleted file mode 100644
index d7127b6..0000000
--- a/ruoyi-applet/src/main/java/com/ruoyi/RuoYiAppletApplication.java
+++ /dev/null
@@ -1,65 +0,0 @@
-package com.ruoyi;
-
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
-import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
-import org.springframework.context.ConfigurableApplicationContext;
-import org.springframework.context.annotation.Bean;
-import org.springframework.core.env.Environment;
-import org.springframework.http.client.SimpleClientHttpRequestFactory;
-import org.springframework.scheduling.annotation.EnableScheduling;
-import org.springframework.web.client.RestTemplate;
-
-import java.net.InetAddress;
-import java.net.UnknownHostException;
-
-/**
- * 启动程序
- * 
- * @author ruoyi
- */
-@Slf4j
-@EnableScheduling//开启定时任务
-@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })
-public class RuoYiAppletApplication
-{
-    public static void main(String[] args) {
-
-
-        ConfigurableApplicationContext application = SpringApplication.run(RuoYiAppletApplication.class, args);
-        try {
-
-        Environment env = application.getEnvironment();
-        log.info("\n----------------------------------------------------------\n\t" +
-                        "应用 '{}' 运行成功! 访问连接:\n\t" +
-                        "Swagger文档: \t\thttp://{}:{}/doc.html\n" +
-                        "----------------------------------------------------------",
-                env.getProperty("spring.application.name", "后台"),
-                InetAddress.getLocalHost().getHostAddress(),
-                env.getProperty("server.port", "8081"));
-        }catch (Exception e){
-            e.printStackTrace();
-        }
-    }
-
-    /**
-     * 当不存在此 wxRestTemplate 使用此方法的bean注入
-     *
-     * @return
-     */
-    @Bean
-    @ConditionalOnMissingBean(name = "restTemplate")
-    public RestTemplate wxRestTemplate() {
-        //复杂构造函数的使用
-        SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
-        // 设置超时
-        requestFactory.setConnectTimeout(6000);
-        requestFactory.setReadTimeout(6000);
-        RestTemplate restTemplate = new RestTemplate();
-        restTemplate.setRequestFactory(requestFactory);
-        return restTemplate;
-    }
-
-}
diff --git a/ruoyi-applet/src/main/java/com/ruoyi/RuoYiServletInitializer.java b/ruoyi-applet/src/main/java/com/ruoyi/RuoYiServletInitializer.java
deleted file mode 100644
index 7c8401b..0000000
--- a/ruoyi-applet/src/main/java/com/ruoyi/RuoYiServletInitializer.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.ruoyi;
-
-import org.springframework.boot.builder.SpringApplicationBuilder;
-import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
-
-/**
- * web容器中进行部署
- * 
- * @author ruoyi
- */
-public class RuoYiServletInitializer extends SpringBootServletInitializer
-{
-    @Override
-    protected SpringApplicationBuilder configure(SpringApplicationBuilder application)
-    {
-        return application.sources(RuoYiAppletApplication.class);
-    }
-}
diff --git a/ruoyi-applet/src/main/java/com/ruoyi/web/aspect/StateAspect.java b/ruoyi-applet/src/main/java/com/ruoyi/web/aspect/StateAspect.java
deleted file mode 100644
index 20e5b87..0000000
--- a/ruoyi-applet/src/main/java/com/ruoyi/web/aspect/StateAspect.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package com.ruoyi.web.aspect;
-
-import com.ruoyi.common.core.domain.entity.SysUser;
-import com.ruoyi.common.core.domain.model.LoginUser;
-import com.ruoyi.common.exception.ServiceException;
-import com.ruoyi.common.utils.SecurityUtils;
-import com.ruoyi.system.service.ISysRoleService;
-import com.ruoyi.system.service.ISysUserService;
-import org.aspectj.lang.annotation.Aspect;
-import org.aspectj.lang.annotation.Before;
-import org.aspectj.lang.annotation.Pointcut;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-
-@Aspect
-@Component
-
-public class StateAspect {
-
-    @Autowired
-    private ISysUserService sysUserService;
-
-    @Autowired
-    private ISysRoleService roleService;
-    @Pointcut("execution(* com.ruoyi.web.controller.manage.*.*(..)) && !execution( * com.ruoyi.web.controller.manage.LoginController.*.*(..))")
-    public void state(){}
-
-    @Before("state()")
-    public void isfrozen(){
-        System.err.println("进入切面");
-        LoginUser loginUser = SecurityUtils.getLoginUser();
-        SysUser sysUser = sysUserService.selectUserById(loginUser.getUserId());
-        if (sysUser.getStatus().equals("1")){
-            throw new ServiceException("当前账号已停用");
-        }
-        if (roleService.selectRoleByUserId(sysUser.getUserId()).getStatus()==1){
-            throw new ServiceException("当前角色已停用");
-        };
-
-
-    }
-
-
- }
diff --git a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/common/CaptchaController.java b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/common/CaptchaController.java
deleted file mode 100644
index d2d6e8c..0000000
--- a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/common/CaptchaController.java
+++ /dev/null
@@ -1,94 +0,0 @@
-package com.ruoyi.web.controller.common;
-
-import java.awt.image.BufferedImage;
-import java.io.IOException;
-import java.util.concurrent.TimeUnit;
-import javax.annotation.Resource;
-import javax.imageio.ImageIO;
-import javax.servlet.http.HttpServletResponse;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.util.FastByteArrayOutputStream;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RestController;
-import com.google.code.kaptcha.Producer;
-import com.ruoyi.common.config.RuoYiConfig;
-import com.ruoyi.common.constant.CacheConstants;
-import com.ruoyi.common.constant.Constants;
-import com.ruoyi.common.core.domain.AjaxResult;
-import com.ruoyi.common.core.redis.RedisCache;
-import com.ruoyi.common.utils.sign.Base64;
-import com.ruoyi.common.utils.uuid.IdUtils;
-import com.ruoyi.system.service.ISysConfigService;
-
-/**
- * 验证码操作处理
- * 
- * @author ruoyi
- */
-@RestController
-public class CaptchaController
-{
-    @Resource(name = "captchaProducer")
-    private Producer captchaProducer;
-
-    @Resource(name = "captchaProducerMath")
-    private Producer captchaProducerMath;
-
-    @Autowired
-    private RedisCache redisCache;
-    
-    @Autowired
-    private ISysConfigService configService;
-    /**
-     * 生成验证码
-     */
-    @GetMapping("/captchaImage")
-    public AjaxResult getCode(HttpServletResponse response) throws IOException
-    {
-        AjaxResult ajax = AjaxResult.success();
-        boolean captchaEnabled = configService.selectCaptchaEnabled();
-        ajax.put("captchaEnabled", captchaEnabled);
-        if (!captchaEnabled)
-        {
-            return ajax;
-        }
-
-        // 保存验证码信息
-        String uuid = IdUtils.simpleUUID();
-        String verifyKey = CacheConstants.CAPTCHA_CODE_KEY + uuid;
-
-        String capStr = null, code = null;
-        BufferedImage image = null;
-
-        // 生成验证码
-        String captchaType = RuoYiConfig.getCaptchaType();
-        if ("math".equals(captchaType))
-        {
-            String capText = captchaProducerMath.createText();
-            capStr = capText.substring(0, capText.lastIndexOf("@"));
-            code = capText.substring(capText.lastIndexOf("@") + 1);
-            image = captchaProducerMath.createImage(capStr);
-        }
-        else if ("char".equals(captchaType))
-        {
-            capStr = code = captchaProducer.createText();
-            image = captchaProducer.createImage(capStr);
-        }
-
-        redisCache.setCacheObject(verifyKey, code, Constants.CAPTCHA_EXPIRATION, TimeUnit.MINUTES);
-        // 转换流信息写出
-        FastByteArrayOutputStream os = new FastByteArrayOutputStream();
-        try
-        {
-            ImageIO.write(image, "jpg", os);
-        }
-        catch (IOException e)
-        {
-            return AjaxResult.error(e.getMessage());
-        }
-
-        ajax.put("uuid", uuid);
-        ajax.put("img", Base64.encode(os.toByteArray()));
-        return ajax;
-    }
-}
diff --git a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/common/CommonController.java b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/common/CommonController.java
deleted file mode 100644
index cec5006..0000000
--- a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/common/CommonController.java
+++ /dev/null
@@ -1,163 +0,0 @@
-package com.ruoyi.web.controller.common;
-
-import java.util.ArrayList;
-import java.util.List;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.MediaType;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-import org.springframework.web.multipart.MultipartFile;
-import com.ruoyi.common.config.RuoYiConfig;
-import com.ruoyi.common.constant.Constants;
-import com.ruoyi.common.core.domain.AjaxResult;
-import com.ruoyi.common.utils.StringUtils;
-import com.ruoyi.common.utils.file.FileUploadUtils;
-import com.ruoyi.common.utils.file.FileUtils;
-import com.ruoyi.framework.config.ServerConfig;
-
-/**
- * 通用请求处理
- * 
- * @author ruoyi
- */
-@RestController
-@RequestMapping("/common")
-public class CommonController
-{
-    private static final Logger log = LoggerFactory.getLogger(CommonController.class);
-
-    @Autowired
-    private ServerConfig serverConfig;
-
-    private static final String FILE_DELIMETER = ",";
-
-    /**
-     * 通用下载请求
-     * 
-     * @param fileName 文件名称
-     * @param delete 是否删除
-     */
-    @GetMapping("/download")
-    public void fileDownload(String fileName, Boolean delete, HttpServletResponse response, HttpServletRequest request)
-    {
-        try
-        {
-            if (!FileUtils.checkAllowDownload(fileName))
-            {
-                throw new Exception(StringUtils.format("文件名称({})非法,不允许下载。 ", fileName));
-            }
-            String realFileName = System.currentTimeMillis() + fileName.substring(fileName.indexOf("_") + 1);
-            String filePath = RuoYiConfig.getDownloadPath() + fileName;
-
-            response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
-            FileUtils.setAttachmentResponseHeader(response, realFileName);
-            FileUtils.writeBytes(filePath, response.getOutputStream());
-            if (delete)
-            {
-                FileUtils.deleteFile(filePath);
-            }
-        }
-        catch (Exception e)
-        {
-            log.error("下载文件失败", e);
-        }
-    }
-
-    /**
-     * 通用上传请求(单个)
-     */
-    @PostMapping("/upload")
-    public AjaxResult uploadFile(MultipartFile file) throws Exception
-    {
-        try
-        {
-            // 上传文件路径
-            String filePath = RuoYiConfig.getUploadPath();
-            // 上传并返回新文件名称
-            String fileName = FileUploadUtils.upload(filePath, file);
-            String url = serverConfig.getUrl() + fileName;
-            AjaxResult ajax = AjaxResult.success();
-            ajax.put("url", url);
-            ajax.put("fileName", fileName);
-            ajax.put("newFileName", FileUtils.getName(fileName));
-            ajax.put("originalFilename", file.getOriginalFilename());
-            return ajax;
-        }
-        catch (Exception e)
-        {
-            return AjaxResult.error(e.getMessage());
-        }
-    }
-
-    /**
-     * 通用上传请求(多个)
-     */
-    @PostMapping("/uploads")
-    public AjaxResult uploadFiles(List<MultipartFile> files) throws Exception
-    {
-        try
-        {
-            // 上传文件路径
-            String filePath = RuoYiConfig.getUploadPath();
-            List<String> urls = new ArrayList<String>();
-            List<String> fileNames = new ArrayList<String>();
-            List<String> newFileNames = new ArrayList<String>();
-            List<String> originalFilenames = new ArrayList<String>();
-            for (MultipartFile file : files)
-            {
-                // 上传并返回新文件名称
-                String fileName = FileUploadUtils.upload(filePath, file);
-                String url = serverConfig.getUrl() + fileName;
-                urls.add(url);
-                fileNames.add(fileName);
-                newFileNames.add(FileUtils.getName(fileName));
-                originalFilenames.add(file.getOriginalFilename());
-            }
-            AjaxResult ajax = AjaxResult.success();
-            ajax.put("urls", StringUtils.join(urls, FILE_DELIMETER));
-            ajax.put("fileNames", StringUtils.join(fileNames, FILE_DELIMETER));
-            ajax.put("newFileNames", StringUtils.join(newFileNames, FILE_DELIMETER));
-            ajax.put("originalFilenames", StringUtils.join(originalFilenames, FILE_DELIMETER));
-            return ajax;
-        }
-        catch (Exception e)
-        {
-            return AjaxResult.error(e.getMessage());
-        }
-    }
-
-    /**
-     * 本地资源通用下载
-     */
-    @GetMapping("/download/resource")
-    public void resourceDownload(String resource, HttpServletRequest request, HttpServletResponse response)
-            throws Exception
-    {
-        try
-        {
-            if (!FileUtils.checkAllowDownload(resource))
-            {
-                throw new Exception(StringUtils.format("资源文件({})非法,不允许下载。 ", resource));
-            }
-            // 本地资源路径
-            String localPath = RuoYiConfig.getProfile();
-            // 数据库资源地址
-            String downloadPath = localPath + StringUtils.substringAfter(resource, Constants.RESOURCE_PREFIX);
-            // 下载名称
-            String downloadName = StringUtils.substringAfterLast(downloadPath, "/");
-            response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
-            FileUtils.setAttachmentResponseHeader(response, downloadName);
-            FileUtils.writeBytes(downloadPath, response.getOutputStream());
-        }
-        catch (Exception e)
-        {
-            log.error("下载文件失败", e);
-        }
-    }
-}
diff --git a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/interceptor/MybatisConfiguration.java b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/interceptor/MybatisConfiguration.java
deleted file mode 100644
index 5390dc1..0000000
--- a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/interceptor/MybatisConfiguration.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package com.ruoyi.web.controller.interceptor;
-
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-@Configuration
-public class MybatisConfiguration {
- 
-    /**
-     * 注册拦截器
-     */
-    @Bean
-    public MybatisInterceptor getMybatisInterceptor() {
-        return new MybatisInterceptor();
-    }
-    
-}
\ No newline at end of file
diff --git a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/interceptor/MybatisInterceptor.java b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/interceptor/MybatisInterceptor.java
deleted file mode 100644
index 57a4ff0..0000000
--- a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/interceptor/MybatisInterceptor.java
+++ /dev/null
@@ -1,121 +0,0 @@
-package com.ruoyi.web.controller.interceptor;
-
-import com.ruoyi.framework.web.service.TokenService;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.ibatis.executor.Executor;
-import org.apache.ibatis.mapping.MappedStatement;
-import org.apache.ibatis.mapping.SqlCommandType;
-import org.apache.ibatis.plugin.*;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-import java.lang.reflect.Field;
-import java.util.*;
-
-@Slf4j
-@Component
-@Intercepts({ @Signature(type = Executor.class, method = "update", args = { MappedStatement.class, Object.class }) })
-public class MybatisInterceptor implements Interceptor {
-
-    @Autowired
-    private TokenService tokenService;
-
-    @Override
-    public Object intercept(Invocation invocation) throws Throwable {
-        MappedStatement mappedStatement = (MappedStatement) invocation.getArgs()[0];
-        log.debug("{}:"+mappedStatement);
-        log.debug("------sqlId------" + mappedStatement.getId());
-        if("com.ruoyi.system.mapper.SysLogininforMapper.insertLogininfor".equals(mappedStatement.getId())){
-            return invocation.proceed();
-        }
-        // sql类型:insert、update、select、delete
-        SqlCommandType sqlCommandType = mappedStatement.getSqlCommandType();
-        Object parameter = invocation.getArgs()[1];
-        log.debug("------sqlCommandType------" + sqlCommandType);
- 
-        if (parameter == null) {
-            return invocation.proceed();
-        }
- 
-        // 当sql为新增或更新类型时,自动填充操作人相关信息
-        if (SqlCommandType.INSERT == sqlCommandType) {
-
-            Field[] fields = getAllFields(parameter);
-            for (Field field : fields) {
-                try {
-                    // 注入创建人
-                    if ("createBy".equals(field.getName())) {
-                        // 获取当前登录用户信息
-                        if(Objects.nonNull(tokenService.getLoginUser())){
-                            String userName = tokenService.getLoginUser().getUser().getUserName();
-                            field.setAccessible(true);
-                            field.set(parameter, userName);
-                            field.setAccessible(false);
-                        }
-                    }
-                    //注入创建时间
-                    if ("createTime".equals(field.getName())) {
-                        field.setAccessible(true);
-//                        field.set(parameter, new Date());
-                        field.setAccessible(false);
-                    } 
-                } catch (Exception e) {
-                    log.error("failed to insert data, exception = ", e);
-                }
-            }
-        }
-        if (SqlCommandType.UPDATE == sqlCommandType) {
-            Field[] fields = getAllFields(parameter);
-            for (Field field : fields) {
-                try {
-                    if ("updateBy".equals(field.getName())) {
-                        // 获取当前登录用户信息
-                        if(Objects.nonNull(tokenService.getLoginUser())){
-                            String userName = tokenService.getLoginUser().getUser().getUserName();
-                            field.setAccessible(true);
-                            field.set(parameter, userName);
-                            field.setAccessible(false);
-                        }
-                    }
-                    if ("updateTime".equals(field.getName())) {
-                        field.setAccessible(true);
-//                        field.set(parameter, new Date());
-                        field.setAccessible(false);
-                    }
-                } catch (Exception e) {
-                    log.error("failed to update data, exception = ", e);
-                }
-            }
-        }
-        return invocation.proceed();
-    }
- 
-    @Override
-    public Object plugin(Object target) {
-        return Plugin.wrap(target, this);
-    }
- 
-    @Override
-    public void setProperties(Properties properties) {
-        // TODO Auto-generated method stub
-    }
- 
-    /**
-     * 获取类的所有属性,包括父类
-     *
-     * @param object
-     * @return
-     */
-    private Field[] getAllFields(Object object) {
-        Class<?> clazz = object.getClass();
-        List<Field> fieldList = new ArrayList<>();
-        while (clazz != null) {
-            fieldList.addAll(new ArrayList<>(Arrays.asList(clazz.getDeclaredFields())));
-            clazz = clazz.getSuperclass();
-        }
-        Field[] fields = new Field[fieldList.size()];
-        fieldList.toArray(fields);
-        return fields;
-    }
- 
-}
\ No newline at end of file
diff --git a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/monitor/CacheController.java b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/monitor/CacheController.java
deleted file mode 100644
index ef8c5dd..0000000
--- a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/monitor/CacheController.java
+++ /dev/null
@@ -1,113 +0,0 @@
-package com.ruoyi.web.controller.monitor;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.Set;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.redis.core.RedisCallback;
-import org.springframework.data.redis.core.RedisTemplate;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-import com.ruoyi.common.constant.CacheConstants;
-import com.ruoyi.common.core.domain.AjaxResult;
-import com.ruoyi.common.utils.StringUtils;
-import com.ruoyi.system.domain.SysCache;
-
-/**
- * 缓存监控
- * 
- * @author ruoyi
- */
-@RestController
-@RequestMapping("/monitor/cache")
-public class CacheController
-{
-    @Autowired
-    private RedisTemplate<String, String> redisTemplate;
-
-    private final static List<SysCache> caches = new ArrayList<SysCache>();
-    {
-        caches.add(new SysCache(CacheConstants.LOGIN_TOKEN_KEY, "用户信息"));
-        caches.add(new SysCache(CacheConstants.SYS_CONFIG_KEY, "配置信息"));
-        caches.add(new SysCache(CacheConstants.SYS_DICT_KEY, "数据字典"));
-        caches.add(new SysCache(CacheConstants.CAPTCHA_CODE_KEY, "验证码"));
-        caches.add(new SysCache(CacheConstants.REPEAT_SUBMIT_KEY, "防重提交"));
-        caches.add(new SysCache(CacheConstants.RATE_LIMIT_KEY, "限流处理"));
-        caches.add(new SysCache(CacheConstants.PWD_ERR_CNT_KEY, "密码错误次数"));
-    }
-
-    @GetMapping()
-    public AjaxResult getInfo() throws Exception
-    {
-        Properties info = (Properties) redisTemplate.execute((RedisCallback<Object>) connection -> connection.info());
-        Properties commandStats = (Properties) redisTemplate.execute((RedisCallback<Object>) connection -> connection.info("commandstats"));
-        Object dbSize = redisTemplate.execute((RedisCallback<Object>) connection -> connection.dbSize());
-
-        Map<String, Object> result = new HashMap<>(3);
-        result.put("info", info);
-        result.put("dbSize", dbSize);
-
-        List<Map<String, String>> pieList = new ArrayList<>();
-        commandStats.stringPropertyNames().forEach(key -> {
-            Map<String, String> data = new HashMap<>(2);
-            String property = commandStats.getProperty(key);
-            data.put("name", StringUtils.removeStart(key, "cmdstat_"));
-            data.put("value", StringUtils.substringBetween(property, "calls=", ",usec"));
-            pieList.add(data);
-        });
-        result.put("commandStats", pieList);
-        return AjaxResult.success(result);
-    }
-
-    @GetMapping("/getNames")
-    public AjaxResult cache()
-    {
-        return AjaxResult.success(caches);
-    }
-
-    @GetMapping("/getKeys/{cacheName}")
-    public AjaxResult getCacheKeys(@PathVariable String cacheName)
-    {
-        Set<String> cacheKeys = redisTemplate.keys(cacheName + "*");
-        return AjaxResult.success(cacheKeys);
-    }
-
-    @GetMapping("/getValue/{cacheName}/{cacheKey}")
-    public AjaxResult getCacheValue(@PathVariable String cacheName, @PathVariable String cacheKey)
-    {
-        String cacheValue = redisTemplate.opsForValue().get(cacheKey);
-        SysCache sysCache = new SysCache(cacheName, cacheKey, cacheValue);
-        return AjaxResult.success(sysCache);
-    }
-
-    @DeleteMapping("/clearCacheName/{cacheName}")
-    public AjaxResult clearCacheName(@PathVariable String cacheName)
-    {
-        Collection<String> cacheKeys = redisTemplate.keys(cacheName + "*");
-        redisTemplate.delete(cacheKeys);
-        return AjaxResult.success();
-    }
-
-    @DeleteMapping("/clearCacheKey/{cacheKey}")
-    public AjaxResult clearCacheKey(@PathVariable String cacheKey)
-    {
-        redisTemplate.delete(cacheKey);
-        return AjaxResult.success();
-    }
-
-    @DeleteMapping("/clearCacheAll")
-    public AjaxResult clearCacheAll()
-    {
-        Collection<String> cacheKeys = redisTemplate.keys("*");
-        redisTemplate.delete(cacheKeys);
-        return AjaxResult.success();
-    }
-}
diff --git a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/monitor/ServerController.java b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/monitor/ServerController.java
deleted file mode 100644
index 60f09bb..0000000
--- a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/monitor/ServerController.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package com.ruoyi.web.controller.monitor;
-
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-import com.ruoyi.common.core.domain.AjaxResult;
-import com.ruoyi.framework.web.domain.Server;
-
-/**
- * 服务器监控
- * 
- * @author ruoyi
- */
-@RestController
-@RequestMapping("/monitor/server")
-public class ServerController
-{
-    @GetMapping()
-    public AjaxResult getInfo() throws Exception
-    {
-        Server server = new Server();
-        server.copyTo();
-        return AjaxResult.success(server);
-    }
-}
diff --git a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/monitor/SysLogininforController.java b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/monitor/SysLogininforController.java
deleted file mode 100644
index eb748ba..0000000
--- a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/monitor/SysLogininforController.java
+++ /dev/null
@@ -1,77 +0,0 @@
-package com.ruoyi.web.controller.monitor;
-
-import java.util.List;
-import javax.servlet.http.HttpServletResponse;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-import com.ruoyi.common.annotation.Log;
-import com.ruoyi.common.core.controller.BaseController;
-import com.ruoyi.common.core.domain.AjaxResult;
-import com.ruoyi.common.core.page.TableDataInfo;
-import com.ruoyi.common.enums.BusinessType;
-import com.ruoyi.common.utils.poi.ExcelUtil;
-import com.ruoyi.framework.web.service.SysPasswordService;
-import com.ruoyi.system.domain.SysLogininfor;
-import com.ruoyi.system.service.ISysLogininforService;
-
-/**
- * 系统访问记录
- * 
- * @author ruoyi
- */
-@RestController
-@RequestMapping("/monitor/logininfor")
-public class SysLogininforController extends BaseController
-{
-    @Autowired
-    private ISysLogininforService logininforService;
-
-    @Autowired
-    private SysPasswordService passwordService;
-
-    @GetMapping("/list")
-    public TableDataInfo list(SysLogininfor logininfor)
-    {
-//        startPage();
-        List<SysLogininfor> list = logininforService.selectLogininforList(logininfor);
-        return getDataTable(list);
-    }
-
-//    @Log(title = "登录日志", businessType = BusinessType.EXPORT)
-//    @PostMapping("/export")
-//    public void export(HttpServletResponse response, SysLogininfor logininfor)
-//    {
-//        List<SysLogininfor> list = logininforService.selectLogininforList(logininfor);
-//        ExcelUtil<SysLogininfor> util = new ExcelUtil<SysLogininfor>(SysLogininfor.class);
-//        util.exportExcel(response, list, "登录日志");
-//    }
-
-    @Log(title = "登录日志", businessType = BusinessType.DELETE)
-    @DeleteMapping("/{infoIds}")
-    public AjaxResult remove(@PathVariable Long[] infoIds)
-    {
-        return toAjax(logininforService.deleteLogininforByIds(infoIds));
-    }
-
-    @Log(title = "登录日志", businessType = BusinessType.CLEAN)
-    @DeleteMapping("/clean")
-    public AjaxResult clean()
-    {
-        logininforService.cleanLogininfor();
-        return success();
-    }
-
-    @Log(title = "账户解锁", businessType = BusinessType.OTHER)
-    @GetMapping("/unlock/{userName}")
-    public AjaxResult unlock(@PathVariable("userName") String userName)
-    {
-        passwordService.clearLoginRecordCache(userName);
-        return success();
-    }
-}
diff --git a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/monitor/SysOperlogController.java b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/monitor/SysOperlogController.java
deleted file mode 100644
index 4de770c..0000000
--- a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/monitor/SysOperlogController.java
+++ /dev/null
@@ -1,112 +0,0 @@
-package com.ruoyi.web.controller.monitor;
-
-import com.ruoyi.common.annotation.Log;
-import com.ruoyi.common.core.controller.BaseController;
-import com.ruoyi.common.core.domain.AjaxResult;
-import com.ruoyi.common.enums.BusinessType;
-import com.ruoyi.system.service.ISysOperLogService;
-import io.swagger.annotations.Api;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * 操作日志记录
- * 
- * @author ruoyi
- */
-@Slf4j
-@Api(tags = "操作日志记录")
-@RestController
-@RequestMapping("/monitor/operlog")
-public class SysOperlogController extends BaseController
-{
-    @Autowired
-    private ISysOperLogService operLogService;
-
-//    @ApiOperation(value = "操作日志分页列表")
-//    @PostMapping("/list")
-//    public AjaxResult list(@RequestBody SysOperLogQuery query)
-//    {
-//        startPage(query.getPageNum(), query.getPageSize());
-//        List<SysOperLogVO> list = operLogService.selectOperLogPageList(query);
-//        operLogService.getLogDetail(list);
-//        return AjaxResult.success(getDataTable(list));
-//    }
-
-    /**
-     * 查询操作日志列表导出
-     */
-//    @ApiOperation(value = "查询操作日志列表导出")
-//    @Log(title = "操作日志-查询操作日志列表导出", businessType = BusinessType.EXPORT)
-//    @PostMapping("/exportOperLog")
-//    public void exportOperLog(@RequestBody SysOperLogQuery query)
-//    {
-//        List<SysOperLogVO> list = operLogService.selectOperLogPageList(query);
-//        List<TOperLogExport> operLogExports = new ArrayList<>();
-//        for (SysOperLogVO sysOperLogVO : list) {
-//            TOperLogExport operLogExport = new TOperLogExport();
-//            BeanUtils.copyProperties(sysOperLogVO,operLogExport);
-//            operLogService.getLogDetail(list);
-//            operLogExports.add(operLogExport);
-//        }
-//        Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), TOperLogExport.class, operLogExports);
-//        HttpServletResponse response = WebUtils.response();
-//        response.setContentType("application/vnd.ms-excel");
-//        response.setCharacterEncoding("utf-8");
-//        ServletOutputStream outputStream = null;
-//        try {
-//            String fileName = URLEncoder.encode("操作日志信息.xls", "utf-8");
-//            response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
-//            response.setContentType("application/vnd.ms-excel;charset=UTF-8");
-//            response.setHeader("Pragma", "no-cache");
-//            response.setHeader("Cache-Control", "no-cache");
-//            outputStream = response.getOutputStream();
-//            workbook.write(outputStream);
-//        } catch (IOException e) {
-//            e.printStackTrace();
-//            log.error("操作日志导出信息导出失败!");
-//        } finally {
-//            try {
-//                outputStream.close();
-//            } catch (IOException e) {
-//                e.printStackTrace();
-//            }
-//        }
-//    }
-
-//    @Log(title = "操作日志", businessType = BusinessType.EXPORT)
-//    @PostMapping("/export")
-//    public void export(HttpServletResponse response, SysOperLog operLog)
-//    {
-//        List<SysOperLog> list = operLogService.selectOperLogList(operLog);
-//        ExcelUtil<SysOperLog> util = new ExcelUtil<SysOperLog>(SysOperLog.class);
-//        util.exportExcel(response, list, "操作日志");
-//    }
-
-    @Log(title = "操作日志", businessType = BusinessType.DELETE)
-    @DeleteMapping("/deleteById/{operIds}")
-    public AjaxResult remove(@PathVariable String operIds)
-    {
-        String[] split = operIds.split(",");
-        List<Long> id = new ArrayList<>();
-        for (String s : split) {
-            id.add(Long.valueOf(s));
-        }
-        return AjaxResult.success(operLogService.deleteOperLogByIds(id));
-    }
-
-    @Log(title = "操作日志", businessType = BusinessType.CLEAN)
-    @DeleteMapping("/clean")
-    public AjaxResult clean()
-    {
-        operLogService.cleanOperLog();
-        return success();
-    }
-}
diff --git a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/monitor/SysUserOnlineController.java b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/monitor/SysUserOnlineController.java
deleted file mode 100644
index c13bcfc..0000000
--- a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/monitor/SysUserOnlineController.java
+++ /dev/null
@@ -1,81 +0,0 @@
-package com.ruoyi.web.controller.monitor;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-import com.ruoyi.common.annotation.Log;
-import com.ruoyi.common.constant.CacheConstants;
-import com.ruoyi.common.core.controller.BaseController;
-import com.ruoyi.common.core.domain.AjaxResult;
-import com.ruoyi.common.core.domain.model.LoginUser;
-import com.ruoyi.common.core.page.TableDataInfo;
-import com.ruoyi.common.core.redis.RedisCache;
-import com.ruoyi.common.enums.BusinessType;
-import com.ruoyi.common.utils.StringUtils;
-import com.ruoyi.system.domain.SysUserOnline;
-import com.ruoyi.system.service.ISysUserOnlineService;
-
-/**
- * 在线用户监控
- * 
- * @author ruoyi
- */
-@RestController
-@RequestMapping("/monitor/online")
-public class SysUserOnlineController extends BaseController
-{
-    @Autowired
-    private ISysUserOnlineService userOnlineService;
-
-    @Autowired
-    private RedisCache redisCache;
-
-    @GetMapping("/list")
-    public TableDataInfo list(String ipaddr, String userName)
-    {
-        Collection<String> keys = redisCache.keys(CacheConstants.LOGIN_TOKEN_KEY + "*");
-        List<SysUserOnline> userOnlineList = new ArrayList<SysUserOnline>();
-        for (String key : keys)
-        {
-            LoginUser user = redisCache.getCacheObject(key);
-            if (StringUtils.isNotEmpty(ipaddr) && StringUtils.isNotEmpty(userName))
-            {
-                userOnlineList.add(userOnlineService.selectOnlineByInfo(ipaddr, userName, user));
-            }
-            else if (StringUtils.isNotEmpty(ipaddr))
-            {
-                userOnlineList.add(userOnlineService.selectOnlineByIpaddr(ipaddr, user));
-            }
-            else if (StringUtils.isNotEmpty(userName) && StringUtils.isNotNull(user.getUser()))
-            {
-                userOnlineList.add(userOnlineService.selectOnlineByUserName(userName, user));
-            }
-            else
-            {
-                userOnlineList.add(userOnlineService.loginUserToUserOnline(user));
-            }
-        }
-        Collections.reverse(userOnlineList);
-        userOnlineList.removeAll(Collections.singleton(null));
-        return getDataTable(userOnlineList);
-    }
-
-    /**
-     * 强退用户
-     */
-    @Log(title = "在线用户", businessType = BusinessType.FORCE)
-    @DeleteMapping("/{tokenId}")
-    public AjaxResult forceLogout(@PathVariable String tokenId)
-    {
-        redisCache.deleteObject(CacheConstants.LOGIN_TOKEN_KEY + tokenId);
-        return success();
-    }
-}
diff --git a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/system/SysConfigController.java b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/system/SysConfigController.java
deleted file mode 100644
index 706ccf2..0000000
--- a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/system/SysConfigController.java
+++ /dev/null
@@ -1,115 +0,0 @@
-package com.ruoyi.web.controller.system;
-
-import java.util.List;
-import javax.servlet.http.HttpServletResponse;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-import com.ruoyi.common.annotation.Log;
-import com.ruoyi.common.core.controller.BaseController;
-import com.ruoyi.common.core.domain.AjaxResult;
-import com.ruoyi.common.core.page.TableDataInfo;
-import com.ruoyi.common.enums.BusinessType;
-import com.ruoyi.common.utils.poi.ExcelUtil;
-import com.ruoyi.system.domain.SysConfig;
-import com.ruoyi.system.service.ISysConfigService;
-
-/**
- * 参数配置 信息操作处理
- * 
- * @author ruoyi
- */
-@RestController
-@RequestMapping("/system/config")
-public class SysConfigController extends BaseController
-{
-    @Autowired
-    private ISysConfigService configService;
-
-//    @Log(title = "参数管理", businessType = BusinessType.EXPORT)
-//    @PostMapping("/export")
-//    public void export(HttpServletResponse response, SysConfig config)
-//    {
-//        List<SysConfig> list = configService.selectConfigList(config);
-//        ExcelUtil<SysConfig> util = new ExcelUtil<SysConfig>(SysConfig.class);
-//        util.exportExcel(response, list, "参数数据");
-//    }
-
-    /**
-     * 根据参数编号获取详细信息
-     */
-    @GetMapping(value = "/{configId}")
-    public AjaxResult getInfo(@PathVariable Long configId)
-    {
-        return success(configService.selectConfigById(configId));
-    }
-
-    /**
-     * 根据参数键名查询参数值
-     */
-    @GetMapping(value = "/configKey/{configKey}")
-    public AjaxResult getConfigKey(@PathVariable String configKey)
-    {
-        return success(configService.selectConfigByKey(configKey));
-    }
-
-    /**
-     * 新增参数配置
-     */
-    @Log(title = "参数管理", businessType = BusinessType.INSERT)
-    @PostMapping
-    public AjaxResult add(@Validated @RequestBody SysConfig config)
-    {
-        if (!configService.checkConfigKeyUnique(config))
-        {
-            return error("新增参数'" + config.getConfigName() + "'失败,参数键名已存在");
-        }
-        config.setCreateBy(getUsername());
-        return toAjax(configService.insertConfig(config));
-    }
-
-    /**
-     * 修改参数配置
-     */
-    @Log(title = "参数管理", businessType = BusinessType.UPDATE)
-    @PutMapping
-    public AjaxResult edit(@Validated @RequestBody SysConfig config)
-    {
-        if (!configService.checkConfigKeyUnique(config))
-        {
-            return error("修改参数'" + config.getConfigName() + "'失败,参数键名已存在");
-        }
-        config.setUpdateBy(getUsername());
-        return toAjax(configService.updateConfig(config));
-    }
-
-    /**
-     * 删除参数配置
-     */
-    @Log(title = "参数管理", businessType = BusinessType.DELETE)
-    @DeleteMapping("/{configIds}")
-    public AjaxResult remove(@PathVariable Long[] configIds)
-    {
-        configService.deleteConfigByIds(configIds);
-        return success();
-    }
-
-    /**
-     * 刷新参数缓存
-     */
-    @Log(title = "参数管理", businessType = BusinessType.CLEAN)
-    @DeleteMapping("/refreshCache")
-    public AjaxResult refreshCache()
-    {
-        configService.resetConfigCache();
-        return success();
-    }
-}
diff --git a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/system/SysDeptController.java b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/system/SysDeptController.java
deleted file mode 100644
index 990d0f7..0000000
--- a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/system/SysDeptController.java
+++ /dev/null
@@ -1,126 +0,0 @@
-package com.ruoyi.web.controller.system;
-
-import java.util.List;
-import org.apache.commons.lang3.ArrayUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-import com.ruoyi.common.annotation.Log;
-import com.ruoyi.common.constant.UserConstants;
-import com.ruoyi.common.core.controller.BaseController;
-import com.ruoyi.common.core.domain.AjaxResult;
-import com.ruoyi.common.core.domain.entity.SysDept;
-import com.ruoyi.common.enums.BusinessType;
-import com.ruoyi.common.utils.StringUtils;
-import com.ruoyi.system.service.ISysDeptService;
-
-/**
- * 部门信息
- * 
- * @author ruoyi
- */
-@RestController
-@RequestMapping("/system/dept")
-public class SysDeptController extends BaseController
-{
-    @Autowired
-    private ISysDeptService deptService;
-
-    /**
-     * 获取部门列表
-     */
-    @GetMapping("/list")
-    public AjaxResult list(SysDept dept)
-    {
-        List<SysDept> depts = deptService.selectDeptList(dept);
-        return AjaxResult.success(depts);
-    }
-
-    /**
-     * 查询部门列表(排除节点)
-     */
-    @GetMapping("/list/exclude/{deptId}")
-    public AjaxResult excludeChild(@PathVariable(value = "deptId", required = false) Long deptId)
-    {
-        List<SysDept> depts = deptService.selectDeptList(new SysDept());
-        depts.removeIf(d -> d.getDeptId().intValue() == deptId || ArrayUtils.contains(StringUtils.split(d.getAncestors(), ","), deptId + ""));
-        return AjaxResult.success(depts);
-    }
-
-    /**
-     * 根据部门编号获取详细信息
-     */
-    @GetMapping(value = "/{deptId}")
-    public AjaxResult getInfo(@PathVariable Long deptId)
-    {
-        deptService.checkDeptDataScope(deptId);
-        return AjaxResult.success(deptService.selectDeptById(deptId));
-    }
-
-    /**
-     * 新增部门
-     */
-    @Log(title = "部门管理", businessType = BusinessType.INSERT)
-    @PostMapping
-    public AjaxResult add(@Validated @RequestBody SysDept dept)
-    {
-        if (!deptService.checkDeptNameUnique(dept))
-        {
-            return error("新增部门'" + dept.getDeptName() + "'失败,部门名称已存在");
-        }
-        dept.setCreateBy(getUsername());
-        return AjaxResult.success(deptService.insertDept(dept));
-    }
-
-    /**
-     * 修改部门
-     */
-    @Log(title = "部门管理", businessType = BusinessType.UPDATE)
-    @PutMapping
-    public AjaxResult edit(@Validated @RequestBody SysDept dept)
-    {
-        Long deptId = dept.getDeptId();
-        deptService.checkDeptDataScope(deptId);
-        if (!deptService.checkDeptNameUnique(dept))
-        {
-            return error("修改部门'" + dept.getDeptName() + "'失败,部门名称已存在");
-        }
-        else if (dept.getParentId().equals(deptId))
-        {
-            return error("修改部门'" + dept.getDeptName() + "'失败,上级部门不能是自己");
-        }
-        else if (StringUtils.equals(UserConstants.DEPT_DISABLE, dept.getStatus()) && deptService.selectNormalChildrenDeptById(deptId) > 0)
-        {
-            return error("该部门包含未停用的子部门!");
-        }
-        dept.setUpdateBy(getUsername());
-        return AjaxResult.success(deptService.updateDept(dept));
-    }
-
-    /**
-     * 删除部门
-     */
-    @Log(title = "部门管理", businessType = BusinessType.DELETE)
-    @DeleteMapping("/{deptId}")
-    public AjaxResult remove(@PathVariable Long deptId)
-    {
-        if (deptService.hasChildByDeptId(deptId))
-        {
-            return warn("存在下级部门,不允许删除");
-        }
-        if (deptService.checkDeptExistUser(deptId))
-        {
-            return warn("部门存在用户,不允许删除");
-        }
-        deptService.checkDeptDataScope(deptId);
-        return AjaxResult.success(deptService.deleteDeptById(deptId));
-    }
-}
diff --git a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/system/SysDictDataController.java b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/system/SysDictDataController.java
deleted file mode 100644
index 23b0c23..0000000
--- a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/system/SysDictDataController.java
+++ /dev/null
@@ -1,115 +0,0 @@
-package com.ruoyi.web.controller.system;
-
-import java.util.ArrayList;
-import java.util.List;
-import javax.servlet.http.HttpServletResponse;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-import com.ruoyi.common.annotation.Log;
-import com.ruoyi.common.core.controller.BaseController;
-import com.ruoyi.common.core.domain.AjaxResult;
-import com.ruoyi.common.core.domain.entity.SysDictData;
-import com.ruoyi.common.core.page.TableDataInfo;
-import com.ruoyi.common.enums.BusinessType;
-import com.ruoyi.common.utils.StringUtils;
-import com.ruoyi.common.utils.poi.ExcelUtil;
-import com.ruoyi.system.service.ISysDictDataService;
-import com.ruoyi.system.service.ISysDictTypeService;
-
-/**
- * 数据字典信息
- * 
- * @author ruoyi
- */
-@RestController
-@RequestMapping("/system/dict/data")
-public class SysDictDataController extends BaseController
-{
-    @Autowired
-    private ISysDictDataService dictDataService;
-
-    @Autowired
-    private ISysDictTypeService dictTypeService;
-
-    @GetMapping("/list")
-    public TableDataInfo list(SysDictData dictData)
-    {
-//        startPage();
-        List<SysDictData> list = dictDataService.selectDictDataList(dictData);
-        return getDataTable(list);
-    }
-
-//    @Log(title = "字典数据", businessType = BusinessType.EXPORT)
-//    @PostMapping("/export")
-//    public void export(HttpServletResponse response, SysDictData dictData)
-//    {
-//        List<SysDictData> list = dictDataService.selectDictDataList(dictData);
-//        ExcelUtil<SysDictData> util = new ExcelUtil<SysDictData>(SysDictData.class);
-//        util.exportExcel(response, list, "字典数据");
-//    }
-
-    /**
-     * 查询字典数据详细
-     */
-    @GetMapping(value = "/{dictCode}")
-    public AjaxResult getInfo(@PathVariable Long dictCode)
-    {
-        return success(dictDataService.selectDictDataById(dictCode));
-    }
-
-    /**
-     * 根据字典类型查询字典数据信息
-     */
-    @GetMapping(value = "/type/{dictType}")
-    public AjaxResult dictType(@PathVariable String dictType)
-    {
-        List<SysDictData> data = dictTypeService.selectDictDataByType(dictType);
-        if (StringUtils.isNull(data))
-        {
-            data = new ArrayList<SysDictData>();
-        }
-        return success(data);
-    }
-
-    /**
-     * 新增字典类型
-     */
-    @Log(title = "字典数据", businessType = BusinessType.INSERT)
-    @PostMapping
-    public AjaxResult add(@Validated @RequestBody SysDictData dict)
-    {
-        dict.setCreateBy(getUsername());
-        return toAjax(dictDataService.insertDictData(dict));
-    }
-
-    /**
-     * 修改保存字典类型
-     */
-    @Log(title = "字典数据", businessType = BusinessType.UPDATE)
-    @PutMapping
-    public AjaxResult edit(@Validated @RequestBody SysDictData dict)
-    {
-        dict.setUpdateBy(getUsername());
-        return toAjax(dictDataService.updateDictData(dict));
-    }
-
-    /**
-     * 删除字典类型
-     */
-    @Log(title = "字典类型", businessType = BusinessType.DELETE)
-    @DeleteMapping("/{dictCodes}")
-    public AjaxResult remove(@PathVariable Long[] dictCodes)
-    {
-        dictDataService.deleteDictDataByIds(dictCodes);
-        return success();
-    }
-}
diff --git a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/system/SysDictTypeController.java b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/system/SysDictTypeController.java
deleted file mode 100644
index 1c5ab6b..0000000
--- a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/system/SysDictTypeController.java
+++ /dev/null
@@ -1,124 +0,0 @@
-package com.ruoyi.web.controller.system;
-
-import java.util.List;
-import javax.servlet.http.HttpServletResponse;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-import com.ruoyi.common.annotation.Log;
-import com.ruoyi.common.core.controller.BaseController;
-import com.ruoyi.common.core.domain.AjaxResult;
-import com.ruoyi.common.core.domain.entity.SysDictType;
-import com.ruoyi.common.core.page.TableDataInfo;
-import com.ruoyi.common.enums.BusinessType;
-import com.ruoyi.common.utils.poi.ExcelUtil;
-import com.ruoyi.system.service.ISysDictTypeService;
-
-/**
- * 数据字典信息
- * 
- * @author ruoyi
- */
-@RestController
-@RequestMapping("/system/dict/type")
-public class SysDictTypeController extends BaseController
-{
-    @Autowired
-    private ISysDictTypeService dictTypeService;
-
-    @GetMapping("/list")
-    public TableDataInfo list(SysDictType dictType)
-    {
-//        startPage();
-        List<SysDictType> list = dictTypeService.selectDictTypeList(dictType);
-        return getDataTable(list);
-    }
-
-//    @Log(title = "字典类型", businessType = BusinessType.EXPORT)
-//    @PostMapping("/export")
-//    public void export(HttpServletResponse response, SysDictType dictType)
-//    {
-//        List<SysDictType> list = dictTypeService.selectDictTypeList(dictType);
-//        ExcelUtil<SysDictType> util = new ExcelUtil<SysDictType>(SysDictType.class);
-//        util.exportExcel(response, list, "字典类型");
-//    }
-
-    /**
-     * 查询字典类型详细
-     */
-    @GetMapping(value = "/{dictId}")
-    public AjaxResult getInfo(@PathVariable Long dictId)
-    {
-        return success(dictTypeService.selectDictTypeById(dictId));
-    }
-
-    /**
-     * 新增字典类型
-     */
-    @Log(title = "字典类型", businessType = BusinessType.INSERT)
-    @PostMapping
-    public AjaxResult add(@Validated @RequestBody SysDictType dict)
-    {
-        if (!dictTypeService.checkDictTypeUnique(dict))
-        {
-            return error("新增字典'" + dict.getDictName() + "'失败,字典类型已存在");
-        }
-        dict.setCreateBy(getUsername());
-        return toAjax(dictTypeService.insertDictType(dict));
-    }
-
-    /**
-     * 修改字典类型
-     */
-    @Log(title = "字典类型", businessType = BusinessType.UPDATE)
-    @PutMapping
-    public AjaxResult edit(@Validated @RequestBody SysDictType dict)
-    {
-        if (!dictTypeService.checkDictTypeUnique(dict))
-        {
-            return error("修改字典'" + dict.getDictName() + "'失败,字典类型已存在");
-        }
-        dict.setUpdateBy(getUsername());
-        return toAjax(dictTypeService.updateDictType(dict));
-    }
-
-    /**
-     * 删除字典类型
-     */
-    @Log(title = "字典类型", businessType = BusinessType.DELETE)
-    @DeleteMapping("/{dictIds}")
-    public AjaxResult remove(@PathVariable Long[] dictIds)
-    {
-        dictTypeService.deleteDictTypeByIds(dictIds);
-        return success();
-    }
-
-    /**
-     * 刷新字典缓存
-     */
-    @Log(title = "字典类型", businessType = BusinessType.CLEAN)
-    @DeleteMapping("/refreshCache")
-    public AjaxResult refreshCache()
-    {
-        dictTypeService.resetDictCache();
-        return success();
-    }
-
-    /**
-     * 获取字典选择框列表
-     */
-    @GetMapping("/optionselect")
-    public AjaxResult optionselect()
-    {
-        List<SysDictType> dictTypes = dictTypeService.selectDictTypeAll();
-        return success(dictTypes);
-    }
-}
diff --git a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/system/SysIndexController.java b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/system/SysIndexController.java
deleted file mode 100644
index 13007eb..0000000
--- a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/system/SysIndexController.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.ruoyi.web.controller.system;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-import com.ruoyi.common.config.RuoYiConfig;
-import com.ruoyi.common.utils.StringUtils;
-
-/**
- * 首页
- *
- * @author ruoyi
- */
-@RestController
-public class SysIndexController
-{
-    /** 系统基础配置 */
-    @Autowired
-    private RuoYiConfig ruoyiConfig;
-
-    /**
-     * 访问首页,提示语
-     */
-    @RequestMapping("/")
-    public String index()
-    {
-        return StringUtils.format("欢迎使用{}后台管理框架,当前版本:v{},请通过前端地址访问。", ruoyiConfig.getName(), ruoyiConfig.getVersion());
-    }
-}
diff --git a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
deleted file mode 100644
index 224656a..0000000
--- a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
+++ /dev/null
@@ -1,166 +0,0 @@
-package com.ruoyi.web.controller.system;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.TimeUnit;
-
-import com.ruoyi.common.core.domain.R;
-import com.ruoyi.common.core.domain.entity.SysRole;
-import com.ruoyi.common.core.domain.model.LoginUser;
-import com.ruoyi.common.core.domain.model.LoginUserApplet;
-import com.ruoyi.common.core.redis.RedisCache;
-import com.ruoyi.common.utils.SmsUtil;
-import com.ruoyi.framework.web.service.TokenService;
-import com.ruoyi.system.service.ISysRoleService;
-import com.ruoyi.web.controller.tool.MsgUtils;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.util.CollectionUtils;
-import org.springframework.util.StringUtils;
-import org.springframework.web.bind.annotation.*;
-import com.ruoyi.common.constant.Constants;
-import com.ruoyi.common.core.domain.AjaxResult;
-import com.ruoyi.common.core.domain.entity.SysMenu;
-import com.ruoyi.common.core.domain.entity.SysUser;
-import com.ruoyi.common.core.domain.model.LoginBody;
-import com.ruoyi.common.utils.SecurityUtils;
-import com.ruoyi.framework.web.service.SysLoginService;
-import com.ruoyi.framework.web.service.SysPermissionService;
-import com.ruoyi.system.service.ISysMenuService;
-
-/**
- * 登录验证
- * 
- * @author ruoyi
- */
-@Api(tags = "登录")
-@RestController
-public class SysLoginController
-{
-    @Autowired
-    private SysLoginService loginService;
-
-    @Autowired
-    private ISysMenuService menuService;
-
-    @Autowired
-    private SysPermissionService permissionService;
-    @Autowired
-    private RedisCache redisCache;
-    @Autowired
-    private TokenService tokenService;
-    @Autowired
-    private ISysRoleService roleService;
-    @Autowired
-    private MsgUtils msgUtils;
-    @Autowired
-    private SmsUtil smsUtil;
-
-    /**
-     * 账号密码登录
-     * 
-     * @param loginBody 登录信息
-     * @return 结果
-     */
-    @ApiOperation(value = "账号密码登录",notes = "账号密码登录")
-        @PostMapping("/login")
-    public AjaxResult login(@RequestBody LoginBody loginBody)
-    {
-        AjaxResult ajax = AjaxResult.success();
-        // 生成令牌
-        LoginUser loginUser = loginService.login(loginBody.getUsername(), loginBody.getPassword());
-        ajax.put(Constants.TOKEN, tokenService.createToken(loginUser));
-        List<SysRole> roles = loginUser.getUser().getRoles();
-        if(CollectionUtils.isEmpty(roles)){
-            return AjaxResult.error("请关联角色!");
-        }
-        if(roles.get(0).getStatus() == 1){
-            return AjaxResult.error("该账号角色已被禁用!");
-        }
-
-        List<SysMenu> menus = roleService.roleInfoFromUserId(loginUser.getUserId());
-
-        ajax.put("menus",menus);
-        ajax.put("roleName",roles.get(0).getRoleName());
-        ajax.put("userInfo",loginUser);
-        return ajax;
-    }
-
-    /**
-     * 账号密码登录
-     *
-     * @param loginBody 登录信息
-     * @return 结果
-     */
-    @ApiOperation(value = "短信登录",notes = "短信登录")
-    @PostMapping("/loginCode")
-    public AjaxResult loginCode(@RequestBody LoginBody loginBody)
-    {
-        AjaxResult ajax = AjaxResult.success();
-        // 生成令牌
-        LoginUserApplet loginUser = loginService.loginCodeApplet(loginBody.getUsername(), loginBody.getCode());
-        ajax.put(Constants.TOKEN, tokenService.createTokenApplet(loginUser));
-        ajax.put("userInfo",loginUser);
-        return ajax;
-    }
-
-    /**
-     * 获取验证码
-     *
-     * @param phone 手机号
-     * @return 结果
-     */
-    @ApiOperation(value = "获取验证码",notes = "获取验证码")
-    @GetMapping("/getCode")
-    public AjaxResult getCode(@RequestParam String phone)
-    {
-        // 发送验证码并存储到redis
-        if (StringUtils.hasLength(phone)) {
-            String code = String.valueOf((int) (Math.random() * 1000000));
-            redisCache.setCacheObject(phone, code,5*60,TimeUnit.SECONDS);
-            try {
-                smsUtil.sendSms(phone, "2369926", new String[]{code});
-            } catch (Exception e) {
-                throw new RuntimeException(e);
-            }
-            return AjaxResult.success("发送短信验证码成功!5分钟内有效");
-        }
-        return AjaxResult.error(500, "发送短信验证码失败,请确认手机号码!");
-    }
-
-    /**
-     * 获取用户信息
-     * 
-     * @return 用户信息
-     */
-    @GetMapping("getInfo")
-    public AjaxResult getInfo()
-    {
-        SysUser user = SecurityUtils.getLoginUser().getUser();
-        // 角色集合
-        Set<String> roles = permissionService.getRolePermission(user);
-        // 权限集合
-        Set<String> permissions = permissionService.getMenuPermission(user);
-        AjaxResult ajax = AjaxResult.success();
-        ajax.put("user", user);
-        ajax.put("roles", roles);
-        ajax.put("permissions", permissions);
-        return ajax;
-    }
-
-    /**
-     * 获取路由信息
-     * 
-     * @return 路由信息
-     */
-    @GetMapping("getRouters")
-    public AjaxResult getRouters()
-    {
-        Long userId = SecurityUtils.getUserId();
-        List<SysMenu> menus = menuService.selectMenuTreeByUserId(userId);
-        return AjaxResult.success(menuService.buildMenus(menus));
-    }
-}
diff --git a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/system/SysMenuController.java b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/system/SysMenuController.java
deleted file mode 100644
index 2b5e89c..0000000
--- a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/system/SysMenuController.java
+++ /dev/null
@@ -1,163 +0,0 @@
-package com.ruoyi.web.controller.system;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.stream.Collectors;
-
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-import com.ruoyi.common.annotation.Log;
-import com.ruoyi.common.constant.UserConstants;
-import com.ruoyi.common.core.controller.BaseController;
-import com.ruoyi.common.core.domain.AjaxResult;
-import com.ruoyi.common.core.domain.entity.SysMenu;
-import com.ruoyi.common.enums.BusinessType;
-import com.ruoyi.common.utils.StringUtils;
-import com.ruoyi.system.service.ISysMenuService;
-
-/**
- * 菜单信息
- * 
- * @author ruoyi
- */
-@Api(tags = "菜单信息")
-@RestController
-@RequestMapping("/system/menu")
-public class SysMenuController extends BaseController
-{
-    @Autowired
-    private ISysMenuService menuService;
-
-    @ApiOperation("菜单权限(有层级)")
-    @GetMapping("/levelList")
-    public AjaxResult levelList()
-    {
-        // 获取当前角色的菜单列表
-        List<SysMenu> menus = menuService.selectList();
-        if(menus.size()==0){
-            return AjaxResult.success(new ArrayList<>());
-        }
-        // 第三级
-        List<SysMenu> s3 = menus.stream().filter(e -> e.getMenuType().equals("F")).collect(Collectors.toList());
-        // 第二级
-        List<SysMenu> s2 = menus.stream().filter(e -> e.getMenuType().equals("C")).collect(Collectors.toList());
-        // 第一级
-        List<SysMenu> s1 = menus.stream().filter(e -> e.getMenuType().equals("M")).collect(Collectors.toList());
-
-        for (SysMenu menu : s2) {
-            List<SysMenu> collect = s3.stream().filter(e -> e.getParentId().equals(menu.getMenuId())).collect(Collectors.toList());
-            menu.setChildren(collect);
-        }
-        for (SysMenu menu : s1) {
-            List<SysMenu> collect = s2.stream().filter(e -> e.getParentId().equals(menu.getMenuId())).collect(Collectors.toList());
-            menu.setChildren(collect);
-        }
-
-        return AjaxResult.success(s1);
-    }
-
-    /**
-     * 获取菜单列表
-     */
-    @GetMapping("/list")
-    public AjaxResult list(SysMenu menu)
-    {
-        List<SysMenu> menus = menuService.selectMenuList(menu, getUserId());
-        return AjaxResult.success(menus);
-    }
-
-    /**
-     * 根据菜单编号获取详细信息
-     */
-    @GetMapping(value = "/{menuId}")
-    public AjaxResult getInfo(@PathVariable Long menuId)
-    {
-        return AjaxResult.success(menuService.selectMenuById(menuId));
-    }
-
-    /**
-     * 获取菜单下拉树列表
-     */
-    @GetMapping("/treeselect")
-    public AjaxResult treeselect(SysMenu menu)
-    {
-        List<SysMenu> menus = menuService.selectMenuList(menu, getUserId());
-        return AjaxResult.success(menuService.buildMenuTreeSelect(menus));
-    }
-
-    /**
-     * 加载对应角色菜单列表树
-     */
-    @GetMapping(value = "/roleMenuTreeselect/{roleId}")
-    public AjaxResult roleMenuTreeselect(@PathVariable("roleId") Long roleId)
-    {
-        List<SysMenu> menus = menuService.selectMenuList(getUserId());
-        AjaxResult ajax = AjaxResult.success();
-        ajax.put("checkedKeys", menuService.selectMenuListByRoleId(roleId));
-        ajax.put("menus", menuService.buildMenuTreeSelect(menus));
-        return ajax;
-    }
-
-    /**
-     * 新增菜单
-     */
-    @Log(title = "菜单管理", businessType = BusinessType.INSERT)
-    @PostMapping
-    public AjaxResult add(@Validated @RequestBody SysMenu menu)
-    {
-        if (!menuService.checkMenuNameUnique(menu))
-        {
-            return error("新增菜单'" + menu.getMenuName() + "'失败,菜单名称已存在");
-        }
-        else if (UserConstants.YES_FRAME.equals(menu.getIsFrame()) && !StringUtils.ishttp(menu.getPath()))
-        {
-            return error("新增菜单'" + menu.getMenuName() + "'失败,地址必须以http(s)://开头");
-        }
-        menu.setCreateBy(getUsername());
-        return AjaxResult.success(menuService.insertMenu(menu));
-    }
-
-    /**
-     * 修改菜单
-     */
-    @Log(title = "菜单管理", businessType = BusinessType.UPDATE)
-    @PutMapping
-    public AjaxResult edit(@Validated @RequestBody SysMenu menu)
-    {
-        if (!menuService.checkMenuNameUnique(menu))
-        {
-            return error("修改菜单'" + menu.getMenuName() + "'失败,菜单名称已存在");
-        }
-        else if (UserConstants.YES_FRAME.equals(menu.getIsFrame()) && !StringUtils.ishttp(menu.getPath()))
-        {
-            return error("修改菜单'" + menu.getMenuName() + "'失败,地址必须以http(s)://开头");
-        }
-        else if (menu.getMenuId().equals(menu.getParentId()))
-        {
-            return error("修改菜单'" + menu.getMenuName() + "'失败,上级菜单不能选择自己");
-        }
-        menu.setUpdateBy(getUsername());
-        return AjaxResult.success(menuService.updateMenu(menu));
-    }
-
-    /**
-     * 删除菜单
-     */
-    @Log(title = "菜单管理", businessType = BusinessType.DELETE)
-    @DeleteMapping("/{menuId}")
-    public AjaxResult remove(@PathVariable("menuId") Long menuId)
-    {
-        if (menuService.hasChildByMenuId(menuId))
-        {
-            return warn("存在子菜单,不允许删除");
-        }
-        if (menuService.checkMenuExistRole(menuId))
-        {
-            return warn("菜单已分配,不允许删除");
-        }
-        return AjaxResult.success(menuService.deleteMenuById(menuId));
-    }
-}
\ No newline at end of file
diff --git a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/system/SysNoticeController.java b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/system/SysNoticeController.java
deleted file mode 100644
index 92a1d6b..0000000
--- a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/system/SysNoticeController.java
+++ /dev/null
@@ -1,86 +0,0 @@
-package com.ruoyi.web.controller.system;
-
-import java.util.List;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-import com.ruoyi.common.annotation.Log;
-import com.ruoyi.common.core.controller.BaseController;
-import com.ruoyi.common.core.domain.AjaxResult;
-import com.ruoyi.common.core.page.TableDataInfo;
-import com.ruoyi.common.enums.BusinessType;
-import com.ruoyi.system.domain.SysNotice;
-import com.ruoyi.system.service.ISysNoticeService;
-
-/**
- * 公告 信息操作处理
- * 
- * @author ruoyi
- */
-@RestController
-@RequestMapping("/system/notice")
-public class SysNoticeController extends BaseController
-{
-    @Autowired
-    private ISysNoticeService noticeService;
-
-    /**
-     * 获取通知公告列表
-     */
-    @GetMapping("/list")
-    public TableDataInfo list(SysNotice notice)
-    {
-//        startPage();
-        List<SysNotice> list = noticeService.selectNoticeList(notice);
-        return getDataTable(list);
-    }
-
-    /**
-     * 根据通知公告编号获取详细信息
-     */
-    @GetMapping(value = "/{noticeId}")
-    public AjaxResult getInfo(@PathVariable Long noticeId)
-    {
-        return success(noticeService.selectNoticeById(noticeId));
-    }
-
-    /**
-     * 新增通知公告
-     */
-    @Log(title = "通知公告", businessType = BusinessType.INSERT)
-    @PostMapping
-    public AjaxResult add(@Validated @RequestBody SysNotice notice)
-    {
-        notice.setCreateBy(getUsername());
-        return toAjax(noticeService.insertNotice(notice));
-    }
-
-    /**
-     * 修改通知公告
-     */
-    @Log(title = "通知公告", businessType = BusinessType.UPDATE)
-    @PutMapping
-    public AjaxResult edit(@Validated @RequestBody SysNotice notice)
-    {
-        notice.setUpdateBy(getUsername());
-        return toAjax(noticeService.updateNotice(notice));
-    }
-
-    /**
-     * 删除通知公告
-     */
-    @Log(title = "通知公告", businessType = BusinessType.DELETE)
-    @DeleteMapping("/{noticeIds}")
-    public AjaxResult remove(@PathVariable Long[] noticeIds)
-    {
-        return toAjax(noticeService.deleteNoticeByIds(noticeIds));
-    }
-}
diff --git a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/system/SysPostController.java b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/system/SysPostController.java
deleted file mode 100644
index a7a3e13..0000000
--- a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/system/SysPostController.java
+++ /dev/null
@@ -1,123 +0,0 @@
-package com.ruoyi.web.controller.system;
-
-import java.util.List;
-import javax.servlet.http.HttpServletResponse;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-import com.ruoyi.common.annotation.Log;
-import com.ruoyi.common.core.controller.BaseController;
-import com.ruoyi.common.core.domain.AjaxResult;
-import com.ruoyi.common.core.page.TableDataInfo;
-import com.ruoyi.common.enums.BusinessType;
-import com.ruoyi.common.utils.poi.ExcelUtil;
-import com.ruoyi.system.domain.SysPost;
-import com.ruoyi.system.service.ISysPostService;
-
-/**
- * 岗位信息操作处理
- * 
- * @author ruoyi
- */
-@RestController
-@RequestMapping("/system/post")
-public class SysPostController extends BaseController
-{
-    @Autowired
-    private ISysPostService postService;
-
-    /**
-     * 获取岗位列表
-     */
-    @GetMapping("/list")
-    public TableDataInfo list(SysPost post)
-    {
-//        startPage();
-        List<SysPost> list = postService.selectPostList(post);
-        return getDataTable(list);
-    }
-    
-//    @Log(title = "岗位管理", businessType = BusinessType.EXPORT)
-//    @PostMapping("/export")
-//    public void export(HttpServletResponse response, SysPost post)
-//    {
-//        List<SysPost> list = postService.selectPostList(post);
-//        ExcelUtil<SysPost> util = new ExcelUtil<SysPost>(SysPost.class);
-//        util.exportExcel(response, list, "岗位数据");
-//    }
-
-    /**
-     * 根据岗位编号获取详细信息
-     */
-    @GetMapping(value = "/{postId}")
-    public AjaxResult getInfo(@PathVariable Long postId)
-    {
-        return success(postService.selectPostById(postId));
-    }
-
-    /**
-     * 新增岗位
-     */
-    @Log(title = "岗位管理", businessType = BusinessType.INSERT)
-    @PostMapping
-    public AjaxResult add(@Validated @RequestBody SysPost post)
-    {
-        if (!postService.checkPostNameUnique(post))
-        {
-            return error("新增岗位'" + post.getPostName() + "'失败,岗位名称已存在");
-        }
-        else if (!postService.checkPostCodeUnique(post))
-        {
-            return error("新增岗位'" + post.getPostName() + "'失败,岗位编码已存在");
-        }
-        post.setCreateBy(getUsername());
-        return toAjax(postService.insertPost(post));
-    }
-
-    /**
-     * 修改岗位
-     */
-    @Log(title = "岗位管理", businessType = BusinessType.UPDATE)
-    @PutMapping
-    public AjaxResult edit(@Validated @RequestBody SysPost post)
-    {
-        if (!postService.checkPostNameUnique(post))
-        {
-            return error("修改岗位'" + post.getPostName() + "'失败,岗位名称已存在");
-        }
-        else if (!postService.checkPostCodeUnique(post))
-        {
-            return error("修改岗位'" + post.getPostName() + "'失败,岗位编码已存在");
-        }
-        post.setUpdateBy(getUsername());
-        return toAjax(postService.updatePost(post));
-    }
-
-    /**
-     * 删除岗位
-     */
-    @Log(title = "岗位管理", businessType = BusinessType.DELETE)
-    @DeleteMapping("/{postIds}")
-    public AjaxResult remove(@PathVariable Long[] postIds)
-    {
-        return toAjax(postService.deletePostByIds(postIds));
-    }
-
-    /**
-     * 获取岗位选择框列表
-     */
-    @GetMapping("/optionselect")
-    public AjaxResult optionselect()
-    {
-        List<SysPost> posts = postService.selectPostAll();
-        return success(posts);
-    }
-}
diff --git a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/system/SysProfileController.java b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/system/SysProfileController.java
deleted file mode 100644
index be5af6a..0000000
--- a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/system/SysProfileController.java
+++ /dev/null
@@ -1,136 +0,0 @@
-package com.ruoyi.web.controller.system;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
-import org.springframework.web.multipart.MultipartFile;
-import com.ruoyi.common.annotation.Log;
-import com.ruoyi.common.config.RuoYiConfig;
-import com.ruoyi.common.core.controller.BaseController;
-import com.ruoyi.common.core.domain.AjaxResult;
-import com.ruoyi.common.core.domain.entity.SysUser;
-import com.ruoyi.common.core.domain.model.LoginUser;
-import com.ruoyi.common.enums.BusinessType;
-import com.ruoyi.common.utils.SecurityUtils;
-import com.ruoyi.common.utils.StringUtils;
-import com.ruoyi.common.utils.file.FileUploadUtils;
-import com.ruoyi.common.utils.file.MimeTypeUtils;
-import com.ruoyi.framework.web.service.TokenService;
-import com.ruoyi.system.service.ISysUserService;
-
-/**
- * 个人信息 业务处理
- * 
- * @author ruoyi
- */
-@RestController
-@RequestMapping("/system/user/profile")
-public class SysProfileController extends BaseController
-{
-    @Autowired
-    private ISysUserService userService;
-
-    @Autowired
-    private TokenService tokenService;
-
-    /**
-     * 个人信息
-     */
-    @GetMapping
-    public AjaxResult profile()
-    {
-        LoginUser loginUser = getLoginUser();
-        SysUser user = loginUser.getUser();
-        AjaxResult ajax = AjaxResult.success(user);
-        ajax.put("roleGroup", userService.selectUserRoleGroup(loginUser.getUsername()));
-        ajax.put("postGroup", userService.selectUserPostGroup(loginUser.getUsername()));
-        return ajax;
-    }
-
-    /**
-     * 修改用户
-     */
-    @Log(title = "个人信息", businessType = BusinessType.UPDATE)
-    @PutMapping
-    public AjaxResult updateProfile(@RequestBody SysUser user)
-    {
-        LoginUser loginUser = getLoginUser();
-        SysUser currentUser = loginUser.getUser();
-        currentUser.setNickName(user.getNickName());
-        currentUser.setEmail(user.getEmail());
-        currentUser.setPhonenumber(user.getPhonenumber());
-        currentUser.setSex(user.getSex());
-        if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(currentUser))
-        {
-            return error("修改用户'" + user.getUserName() + "'失败,手机号码已存在");
-        }
-        if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(currentUser))
-        {
-            return error("修改用户'" + user.getUserName() + "'失败,邮箱账号已存在");
-        }
-        if (userService.updateUserProfile(currentUser) > 0)
-        {
-            // 更新缓存用户信息
-            tokenService.setLoginUser(loginUser);
-            return success();
-        }
-        return error("修改个人信息异常,请联系管理员");
-    }
-
-    /**
-     * 重置密码
-     */
-    @Log(title = "个人信息", businessType = BusinessType.UPDATE)
-    @PutMapping("/updatePwd")
-    public AjaxResult updatePwd(String oldPassword, String newPassword)
-    {
-        LoginUser loginUser = getLoginUser();
-        String userName = loginUser.getUsername();
-        String password = loginUser.getPassword();
-        if (!SecurityUtils.matchesPassword(oldPassword, password))
-        {
-            return error("修改密码失败,旧密码错误");
-        }
-        if (SecurityUtils.matchesPassword(newPassword, password))
-        {
-            return error("新密码不能与旧密码相同");
-        }
-        if (userService.resetUserPwd(userName, SecurityUtils.encryptPassword(newPassword)) > 0)
-        {
-            // 更新缓存用户密码
-            loginUser.getUser().setPassword(SecurityUtils.encryptPassword(newPassword));
-            tokenService.setLoginUser(loginUser);
-            return success();
-        }
-        return error("修改密码异常,请联系管理员");
-    }
-
-    /**
-     * 头像上传
-     */
-    @Log(title = "用户头像", businessType = BusinessType.UPDATE)
-    @PostMapping("/avatar")
-    public AjaxResult avatar(@RequestParam("avatarfile") MultipartFile file) throws Exception
-    {
-        if (!file.isEmpty())
-        {
-            LoginUser loginUser = getLoginUser();
-            String avatar = FileUploadUtils.upload(RuoYiConfig.getAvatarPath(), file, MimeTypeUtils.IMAGE_EXTENSION);
-            if (userService.updateUserAvatar(loginUser.getUsername(), avatar))
-            {
-                AjaxResult ajax = AjaxResult.success();
-                ajax.put("imgUrl", avatar);
-                // 更新缓存用户头像
-                loginUser.getUser().setAvatar(avatar);
-                tokenService.setLoginUser(loginUser);
-                return ajax;
-            }
-        }
-        return error("上传图片异常,请联系管理员");
-    }
-}
diff --git a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/system/SysRegisterController.java b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/system/SysRegisterController.java
deleted file mode 100644
index fe19249..0000000
--- a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/system/SysRegisterController.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package com.ruoyi.web.controller.system;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RestController;
-import com.ruoyi.common.core.controller.BaseController;
-import com.ruoyi.common.core.domain.AjaxResult;
-import com.ruoyi.common.core.domain.model.RegisterBody;
-import com.ruoyi.common.utils.StringUtils;
-import com.ruoyi.framework.web.service.SysRegisterService;
-import com.ruoyi.system.service.ISysConfigService;
-
-/**
- * 注册验证
- * 
- * @author ruoyi
- */
-@RestController
-public class SysRegisterController extends BaseController
-{
-    @Autowired
-    private SysRegisterService registerService;
-
-    @Autowired
-    private ISysConfigService configService;
-
-    @PostMapping("/register")
-    public AjaxResult register(@RequestBody RegisterBody user)
-    {
-        if (!("true".equals(configService.selectConfigByKey("sys.account.registerUser"))))
-        {
-            return error("当前系统没有开启注册功能!");
-        }
-        String msg = registerService.register(user);
-        return StringUtils.isEmpty(msg) ? success() : error(msg);
-    }
-}
diff --git a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java
deleted file mode 100644
index fecb55c..0000000
--- a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java
+++ /dev/null
@@ -1,305 +0,0 @@
-package com.ruoyi.web.controller.system;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
-
-import com.ruoyi.common.basic.PageInfo;
-import com.ruoyi.common.core.domain.entity.SysMenu;
-import com.ruoyi.system.dto.SysRoleDTO;
-import com.ruoyi.system.query.SysRoleQuery;
-import com.ruoyi.system.service.ISysMenuService;
-import com.ruoyi.system.vo.RoleInfoVO;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-import com.ruoyi.common.annotation.Log;
-import com.ruoyi.common.core.controller.BaseController;
-import com.ruoyi.common.core.domain.AjaxResult;
-import com.ruoyi.common.core.domain.entity.SysDept;
-import com.ruoyi.common.core.domain.entity.SysRole;
-import com.ruoyi.common.core.domain.entity.SysUser;
-import com.ruoyi.common.core.domain.model.LoginUser;
-import com.ruoyi.common.core.page.TableDataInfo;
-import com.ruoyi.common.enums.BusinessType;
-import com.ruoyi.common.utils.StringUtils;
-import com.ruoyi.framework.web.service.SysPermissionService;
-import com.ruoyi.framework.web.service.TokenService;
-import com.ruoyi.system.domain.SysUserRole;
-import com.ruoyi.system.service.ISysDeptService;
-import com.ruoyi.system.service.ISysRoleService;
-import com.ruoyi.system.service.ISysUserService;
-
-/**
- * 角色信息
- * 
- * @author ruoyi
- */
-@Api(tags = "角色信息")
-@RestController
-@RequestMapping("/system/role")
-public class SysRoleController extends BaseController
-{
-    @Autowired
-    private ISysRoleService roleService;
-
-    @Autowired
-    private TokenService tokenService;
-
-    @Autowired
-    private SysPermissionService permissionService;
-
-    @Autowired
-    private ISysUserService userService;
-
-    @Autowired
-    private ISysDeptService deptService;
-    @Autowired
-    private ISysMenuService menuService;
-
-    @ApiOperation(value = "角色列表")
-    @PostMapping("/list")
-    public AjaxResult list(@RequestBody SysRoleQuery query)
-    {
-        PageInfo<SysRole> list = roleService.selectPageList(query);
-        return AjaxResult.success(list);
-    }
-
-    @ApiOperation(value = "角色列表不分页")
-    @PostMapping("/listNotPage")
-    public AjaxResult list()
-    {
-        List<SysRole> list = roleService.selectRoleList(new SysRole());
-        return AjaxResult.success(list);
-    }
-
-    @ApiOperation(value = "角色数量统计")
-    @PostMapping("/roleCount")
-    public AjaxResult roleCount()
-    {
-        int all = roleService.selectCount(null);
-        int normal = roleService.selectCount(0);
-        int stop = roleService.selectCount(1);
-
-        Map<String,Integer> map = new HashMap<>();
-        map.put("all",all);
-        map.put("normal",normal);
-        map.put("stop",stop);
-        return AjaxResult.success(map);
-    }
-
-//    @Log(title = "角色管理", businessType = BusinessType.EXPORT)
-//    @PostMapping("/export")
-//    public void export(HttpServletResponse response, SysRole role)
-//    {
-//        List<SysRole> list = roleService.selectRoleList(role);
-//        ExcelUtil<SysRole> util = new ExcelUtil<SysRole>(SysRole.class);
-//        util.exportExcel(response, list, "角色数据");
-//    }
-
-    /**
-     * 根据角色编号获取详细信息
-     */
-    @GetMapping(value = "/{roleId}")
-    public AjaxResult getInfo(@PathVariable Long roleId)
-    {
-        roleService.checkRoleDataScope(roleId);
-        return AjaxResult.success(roleService.selectRoleById(roleId));
-    }
-
-
-    @ApiOperation("角色详情")
-    @GetMapping("/roleInfo")
-    public AjaxResult roleInfo(@RequestParam Long roleId)
-    {
-        SysRole role = roleService.selectRoleById(roleId);
-        RoleInfoVO roleInfoVo = new RoleInfoVO();
-        roleInfoVo.setRoleId(role.getRoleId());
-        roleInfoVo.setRoleName(role.getRoleName());
-
-        // 获取当前角色的菜单列表
-        List<SysMenu> menus = menuService.selectListByRoleId(roleId);
-        if(menus.size()==0){
-            return AjaxResult.success(new ArrayList<>());
-        }
-        List<Long> menusId = menus.stream().map(SysMenu::getMenuId).collect(Collectors.toList());
-
-        // 获取当前的权限菜单(有层级)
-        List<SysMenu> levelMenus = roleService.getMenuLevelList(menusId);
-
-        roleInfoVo.setMenus(menusId);
-        return AjaxResult.success(roleInfoVo);
-    }
-
-
-    @ApiOperation("用户获取权限菜单")
-    @GetMapping("/roleInfoFromUserId")
-    public AjaxResult roleInfoFromUserId(@RequestParam Long userId)
-    {
-        return AjaxResult.success(roleService.roleInfoFromUserId(userId));
-    }
-
-
-    /**
-     * 新增角色
-     */
-    @ApiOperation(value = "新增角色")
-    @Log(title = "角色信息-新增角色", businessType = BusinessType.INSERT)
-    @PostMapping("/add")
-    public AjaxResult add(@Validated @RequestBody SysRoleDTO dto)
-    {
-        Boolean flag= roleService.isExit(dto.getRoleId(),dto.getRoleName());
-        if(flag){
-            return error("新增角色'" + dto.getRoleName() + "'失败,角色名称已存在");
-        }
-        roleService.saveRole(dto);
-        return AjaxResult.success();
-
-    }
-
-    /**
-     * 修改保存角色
-     */
-    @ApiOperation(value = "编辑角色")
-    @Log(title = "角色信息-编辑角色", businessType = BusinessType.UPDATE)
-    @PutMapping
-    public AjaxResult edit(@Validated @RequestBody SysRoleDTO dto)
-    {
-        Boolean flag= roleService.isExit(dto.getRoleId(),dto.getRoleName());
-        if (flag){
-            return error("修改角色'" + dto.getRoleName() + "'失败,角色名称已存在");
-        }
-        if (roleService.editRole(dto) > 0)
-        {
-            // 更新缓存用户权限
-            LoginUser loginUser = getLoginUser();
-            if (StringUtils.isNotNull(loginUser.getUser()) && !loginUser.getUser().isAdmin())
-            {
-                loginUser.setPermissions(permissionService.getMenuPermission(loginUser.getUser()));
-                loginUser.setUser(userService.selectUserByUserName(loginUser.getUser().getUserName()));
-                tokenService.setLoginUser(loginUser);
-            }
-            return AjaxResult.success();
-        }
-        return error("修改角色'" + dto.getRoleName() + "'失败,请联系管理员");
-    }
-
-    /**
-     * 修改保存数据权限
-     */
-    @Log(title = "角色管理", businessType = BusinessType.UPDATE)
-    @PutMapping("/dataScope")
-    public AjaxResult dataScope(@RequestBody SysRole role)
-    {
-        roleService.checkRoleAllowed(role);
-        roleService.checkRoleDataScope(role.getRoleId());
-        return AjaxResult.success(roleService.authDataScope(role));
-    }
-
-    /**
-     * 状态修改
-     */
-    @ApiOperation(value = "状态修改")
-    @Log(title = "角色信息-角色状态修改", businessType = BusinessType.UPDATE)
-    @PutMapping("/changeStatus")
-    public AjaxResult changeStatus(@RequestBody SysRole role)
-    {
-        role.setUpdateBy(getUsername());
-        roleService.updateStatus(role);
-        return AjaxResult.success();
-    }
-
-    /**
-     * 删除角色
-     */
-    @ApiOperation(value = "删除角色")
-    @Log(title = "角色信息-角色删除角色", businessType = BusinessType.DELETE)
-    @DeleteMapping("/deleteById/{ids}")
-    public AjaxResult remove(@PathVariable String ids)
-    {
-        String[] split = ids.split(",");
-        List<Long> id = new ArrayList<>();
-        for (String s : split) {
-            id.add(Long.valueOf(s));
-        }
-        return AjaxResult.success(roleService.deleteRoleByIds(id));
-    }
-
-    /**
-     * 获取角色选择框列表
-     */
-    @GetMapping("/optionselect")
-    public AjaxResult optionselect()
-    {
-        return AjaxResult.success(roleService.selectRoleAll());
-    }
-
-    /**
-     * 查询已分配用户角色列表
-     */
-    @GetMapping("/authUser/allocatedList")
-    public TableDataInfo allocatedList(SysUser user)
-    {
-//        startPage();
-        List<SysUser> list = userService.selectAllocatedList(user);
-        return getDataTable(list);
-    }
-
-    /**
-     * 查询未分配用户角色列表
-     */
-    @GetMapping("/authUser/unallocatedList")
-    public TableDataInfo unallocatedList(SysUser user)
-    {
-//        startPage();
-        List<SysUser> list = userService.selectUnallocatedList(user);
-        return getDataTable(list);
-    }
-
-    /**
-     * 取消授权用户
-     */
-    @Log(title = "角色管理", businessType = BusinessType.GRANT)
-    @PutMapping("/authUser/cancel")
-    public AjaxResult cancelAuthUser(@RequestBody SysUserRole userRole)
-    {
-        return AjaxResult.success(roleService.deleteAuthUser(userRole));
-    }
-
-    /**
-     * 批量取消授权用户
-     */
-    @Log(title = "角色管理", businessType = BusinessType.GRANT)
-    @PutMapping("/authUser/cancelAll")
-    public AjaxResult cancelAuthUserAll(Long roleId, Long[] userIds)
-    {
-        return AjaxResult.success(roleService.deleteAuthUsers(roleId, userIds));
-    }
-
-    /**
-     * 批量选择用户授权
-     */
-    @Log(title = "角色管理", businessType = BusinessType.GRANT)
-    @PutMapping("/authUser/selectAll")
-    public AjaxResult selectAuthUserAll(Long roleId, Long[] userIds)
-    {
-        roleService.checkRoleDataScope(roleId);
-        return AjaxResult.success(roleService.insertAuthUsers(roleId, userIds));
-    }
-
-    /**
-     * 获取对应角色部门树列表
-     */
-    @GetMapping(value = "/deptTree/{roleId}")
-    public AjaxResult deptTree(@PathVariable("roleId") Long roleId)
-    {
-        AjaxResult ajax = AjaxResult.success();
-        ajax.put("checkedKeys", deptService.selectDeptListByRoleId(roleId));
-        ajax.put("depts", deptService.selectDeptTreeList(new SysDept()));
-        return ajax;
-    }
-}
diff --git a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/system/SysUserController.java b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/system/SysUserController.java
deleted file mode 100644
index f3465ce..0000000
--- a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/system/SysUserController.java
+++ /dev/null
@@ -1,391 +0,0 @@
-package com.ruoyi.web.controller.system;
-
-import com.ruoyi.common.annotation.Log;
-import com.ruoyi.common.basic.PageInfo;
-import com.ruoyi.common.core.controller.BaseController;
-import com.ruoyi.common.core.domain.AjaxResult;
-import com.ruoyi.common.core.domain.entity.SysDept;
-import com.ruoyi.common.core.domain.entity.SysRole;
-import com.ruoyi.common.core.domain.entity.SysUser;
-import com.ruoyi.common.enums.BusinessType;
-import com.ruoyi.common.utils.SecurityUtils;
-import com.ruoyi.common.utils.StringUtils;
-import com.ruoyi.framework.web.service.TokenService;
-import com.ruoyi.system.dto.SysUserUpdateStatusDTO;
-import com.ruoyi.system.query.SysUserQuery;
-import com.ruoyi.system.service.*;
-import com.ruoyi.system.vo.SysUserVO;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import org.springframework.beans.BeanUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.*;
-import java.util.stream.Collectors;
-
-/**
- * 用户信息
- * 
- * @author ruoyi
- */
-@Api(tags = "用户信息")
-@RestController
-@RequestMapping("/system/user")
-public class SysUserController extends BaseController
-{
-    @Autowired
-    private ISysUserService userService;
-
-    @Autowired
-    private ISysRoleService roleService;
-
-    @Autowired
-    private ISysDeptService deptService;
-    @Autowired
-    private TokenService tokenService;
-
-    /**
-     * 获取用户列表
-     */
-    @ApiOperation(value = "获取用户列表")
-    @PostMapping("/list")
-    public AjaxResult list(@RequestBody SysUserQuery query)
-    {
-        PageInfo<SysUserVO> list = userService.pageList(query);
-        return AjaxResult.success(list);
-    }
-
-    @ApiOperation(value = "获取用户列表-不分页")
-    @PostMapping("/listNotPage")
-    public AjaxResult listNotPage()
-    {
-        List<SysUser> list = userService.selectList();
-        return AjaxResult.success(list);
-    }
-
-    /**
-     * 获取用户黑名单列表
-     */
-//    @ApiOperation(value = "获取用户黑名单列表")
-//    @PostMapping("/blacklist")
-//    public AjaxResult blacklist(@RequestBody SysUserQuery query)
-//    {
-//        startPage(query.getPageNum(), query.getPageSize());
-//        List<SysUserVO> list = userService.selectBlackPageList(query);
-//        return AjaxResult.success(getDataTable(list));
-//    }
-
-    /**
-     * 人员借用列表
-     */
-//    @ApiOperation(value = "人员借用列表")
-//    @GetMapping("/userBorrowList")
-//    public AjaxResult userBorrowList(@RequestParam(required = false) String name,
-//                                     @RequestParam(required = false) Integer type)
-//    {
-//
-//        UserAddListVO userAddListVO = new UserAddListVO();
-//
-//        Long companyId = tokenService.getLoginUser().getUser().getCompanyId();
-//
-//        List<TCompany> companyList = new ArrayList<>();
-//        List<TDept> deptList = new ArrayList<>();
-//        List<SysUser> userList = new ArrayList<>();
-//        // 查询公司
-//        if(Objects.nonNull(type) && type == 1){
-//            companyList = companyService.userAddListByCompanyName(name);
-//        }
-//        // 查询部门
-//        if(Objects.nonNull(type) && type == 2){
-//            deptList = tDeptService.userAddListByDeptName(name);
-//        }
-//        // 查询用户
-//        if(Objects.nonNull(type) && type == 3){
-//            userList = userService.selectListByNamePhone(name);
-//        }
-//
-//        if(Objects.isNull(type)){
-//            companyList = companyService.userAddListByCompanyName(name);
-//            deptList = tDeptService.userAddListByDeptName(name);
-//            userList = userService.selectListByNamePhone(name);
-//        }
-//
-//        List<Long> companyIds = companyList.stream().map(TCompany::getId).collect(Collectors.toList());
-//        List<Long> deptCompanyIds = deptList.stream().map(TDept::getCompanyId).collect(Collectors.toList());
-//        List<Long> userCompanyIds = userList.stream().map(SysUser::getCompanyId).collect(Collectors.toList());
-//        companyIds.addAll(deptCompanyIds);
-//        companyIds.addAll(userCompanyIds);
-//
-//        companyIds = companyIds.stream().distinct().collect(Collectors.toList());
-//
-//        if(CollectionUtils.isEmpty(companyIds)){
-//            return AjaxResult.success(userAddListVO);
-//        }
-//        SysUser user1 = tokenService.getLoginUser().getUser();
-//        if(!user1.isAdmin()){
-//            companyIds = companyIds.stream().filter(e->!e.equals(companyId)).collect(Collectors.toList());
-//        }
-//
-//        // 查询符合要求的公司
-//        List<UserLevelVO> parent = companyService.userAddListByCompanyIds(companyIds);
-//
-//        List<TDept> depts = tDeptService.selectList();
-//
-//        List<SysUser> sysUsers = userService.selectList();
-//
-//        for (UserLevelVO userLevelVO : parent) {
-//
-//            // 找到公司下的部门
-//            List<TDept> tDepts = depts.stream().filter(e -> userLevelVO.getKey().equals(e.getCompanyId())).collect(Collectors.toList());
-//            List<UserLevelVO> children = new ArrayList<>();
-//            // 封装部门
-//            for (TDept dept : tDepts) {
-//                userLevelVO.setChildren(children);
-//                UserLevelVO userLevelVO1 = new UserLevelVO();
-//                userLevelVO1.setKey(dept.getId());
-//                userLevelVO1.setTitle(dept.getDeptName());
-//                // 找到部门下的人员
-//                List<SysUser> users;
-//                if(StringUtils.isNotEmpty(name) && type == 3){
-//                    users = sysUsers.stream().filter(e -> userLevelVO1.getKey().equals(e.getDeptId())
-//                            && ((StringUtils.isNotEmpty(e.getNickName()) && e.getNickName().contains(name)))
-//                            || (StringUtils.isNotEmpty(e.getPhonenumber()) && e.getPhonenumber().contains(name))).collect(Collectors.toList());
-//                }else {
-//                    users = sysUsers.stream().filter(e -> userLevelVO1.getKey().equals(e.getDeptId())).collect(Collectors.toList());
-//                }
-//                List<UserLevelVO> children1 = new ArrayList<>();
-//                // 封装人员
-//                for (SysUser user : users) {
-//                    UserLevelVO userLevelVO2 = new UserLevelVO();
-//                    userLevelVO2.setKey(user.getUserId());
-//                    userLevelVO2.setTitle(user.getNickName());
-//                    userLevelVO2.setAvatar(user.getAvatar());
-//                    userLevelVO2.setFlag(true);
-//                    children1.add(userLevelVO2);
-//                }
-//                userLevelVO1.setChildren(children1);
-//
-//                children.add(userLevelVO1);
-//            }
-//            userLevelVO.setChildren(children);
-//        }
-//        userAddListVO.setUserLevelVOS(parent);
-//        userAddListVO.setUserList(sysUsers);
-//        return AjaxResult.success(userAddListVO);
-//    }
-
-    /**
-     * 获取用户详情
-     */
-    @ApiOperation(value = "获取用户详情")
-    @GetMapping("/getDetail")
-    public AjaxResult getDetail(@RequestParam Long userId)
-    {
-        SysUser sysUser = userService.selectUserById(userId);
-        SysUserVO sysUserVO = new SysUserVO();
-        BeanUtils.copyProperties(sysUser,sysUserVO);
-
-        return AjaxResult.success(sysUser);
-    }
-
-
-    /**
-     * 获取用户数量统计
-     */
-    @ApiOperation(value = "获取用户数量统计")
-    @PostMapping("/getUserCount")
-    public AjaxResult getUserCount()
-    {
-        Map<String,Integer> map = new HashMap<>();
-
-        Integer userCountSum = userService.selectCount(null);
-        Integer normalCount = userService.selectCount(0);// 正常
-        Integer stopCount = userService.selectCount(1);// 停用
-
-        map.put("all",userCountSum);
-        map.put("normal",normalCount);
-        map.put("stop",stopCount);
-
-        return AjaxResult.success(map);
-    }
-
-    /**
-     * 移除黑名单
-     */
-    @GetMapping("/removeBlackList")
-    public AjaxResult removeBlackList(@RequestParam String ids)
-    {
-        String[] split = ids.split(",");
-        List<Long> id = new ArrayList<>();
-        for (String s : split) {
-            id.add(Long.valueOf(s));
-        }
-        userService.updateUserIfBlack(id);
-        return AjaxResult.success();
-    }
-
-
-//    @Log(title = "用户管理", businessType = BusinessType.EXPORT)
-//    @PostMapping("/export")
-//    public void export(HttpServletResponse response, SysUser user)
-//    {
-//        List<SysUser> list = userService.selectUserList(user);
-//        ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class);
-//        util.exportExcel(response, list, "用户数据");
-//    }
-
-//    @Log(title = "用户管理", businessType = BusinessType.IMPORT)
-//    @PostMapping("/importData")
-//    public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception
-//    {
-//        ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class);
-//        List<SysUser> userList = util.importExcel(file.getInputStream());
-//        String operName = getUsername();
-//        String message = userService.importUser(userList, updateSupport, operName);
-//        return AjaxResult.success(message);
-//    }
-
-//    @PostMapping("/importTemplate")
-//    public void importTemplate(HttpServletResponse response)
-//    {
-//        ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class);
-//        util.importTemplateExcel(response, "用户数据");
-//    }
-
-
-    /**
-     * 新增用户
-     */
-    @ApiOperation(value = "新增用户管理")
-    @Log(title = "用户信息-新增用户", businessType = BusinessType.INSERT)
-    @PostMapping("/add")
-    public AjaxResult add(@Validated @RequestBody SysUser user)
-    {
-        user.setUserName(user.getPhonenumber());
-        if (!userService.checkUserNameUnique(user))
-        {
-            return error("新增用户'" + user.getUserName() + "'失败,登录账号已存在");
-        }
-        else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user))
-        {
-            return error("新增用户'" + user.getUserName() + "'失败,手机号码已存在");
-        }
-        user.setCreateBy(getUsername());
-        user.setPassword(SecurityUtils.encryptPassword(user.getPassword()));
-        userService.insertUser(user);
-        return AjaxResult.success();
-    }
-
-    /**
-     * 修改用户
-     */
-    @ApiOperation(value = "修改用户管理")
-    @Log(title = "用户信息-修改用户", businessType = BusinessType.UPDATE)
-    @PostMapping("/edit")
-    public AjaxResult edit(@Validated @RequestBody SysUser user)
-    {
-        user.setUserName(user.getPhonenumber());
-//        userService.checkUserAllowed(user);
-//        userService.checkUserDataScope(user.getUserId());
-        if (!userService.checkUserNameUnique(user))
-        {
-            return error("修改用户'" + user.getUserName() + "'失败,登录账号已存在");
-        }
-        else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user))
-        {
-            return error("修改用户'" + user.getUserName() + "'失败,手机号码已存在");
-        }
-
-        user.setUpdateBy(getUsername());
-        user.setPassword(SecurityUtils.encryptPassword(user.getPassword()));
-        return AjaxResult.success(userService.updateUser(user));
-    }
-
-    /**
-     * 删除用户
-     */
-    @ApiOperation(value = "批量删除用户")
-    @Log(title = "用户信息-批量删除用户", businessType = BusinessType.DELETE)
-    @DeleteMapping("/deleteById/{ids}")
-    public AjaxResult remove(@PathVariable String ids)
-    {
-        String[] split = ids.split(",");
-        List<Long> userIds = new ArrayList<>();
-        for (String s : split) {
-            userIds.add(Long.valueOf(s));
-        }
-        if (userIds.contains(getUserId()))
-        {
-            return error("当前用户不能删除");
-        }
-        return AjaxResult.success(userService.deleteUserByIds(userIds));
-    }
-
-    /**
-     * 重置密码
-     */
-    @ApiOperation(value = "重置密码")
-    @Log(title = "用户信息-重置密码", businessType = BusinessType.UPDATE)
-    @PostMapping("/resetPwd")
-    public AjaxResult resetPwd(@RequestBody SysUser user)
-    {
-        userService.checkUserAllowed(user);
-//        userService.checkUserDataScope(user.getUserId());
-        user.setPassword(SecurityUtils.encryptPassword(user.getPassword()));
-        user.setUpdateBy(getUsername());
-        return AjaxResult.success(userService.resetPwd(user));
-    }
-
-    /**
-     * 状态修改
-     */
-    @ApiOperation(value = "状态修改")
-    @Log(title = "用户信息-状态修改", businessType = BusinessType.UPDATE)
-    @PutMapping("/changeStatus")
-    public AjaxResult changeStatus(@RequestBody SysUserUpdateStatusDTO dto)
-    {
-        SysUser user = new SysUser();
-        user.setUserId(dto.getUserId());
-        user.setStatus(String.valueOf(dto.getStatus()));
-        user.setRemark(dto.getRemark());
-        user.setUpdateBy(getUsername());
-        return AjaxResult.success(userService.updateUserStatus(user));
-    }
-
-    /**
-     * 根据用户编号获取授权角色
-     */
-    @GetMapping("/authRole/{userId}")
-    public AjaxResult authRole(@PathVariable("userId") Long userId)
-    {
-        AjaxResult ajax = AjaxResult.success();
-        SysUser user = userService.selectUserById(userId);
-        List<SysRole> roles = roleService.selectRolesByUserId(userId);
-        ajax.put("user", user);
-        ajax.put("roles", SysUser.isAdmin(userId) ? roles : roles.stream().filter(r -> !r.isAdmin()).collect(Collectors.toList()));
-        return ajax;
-    }
-
-    /**
-     * 用户授权角色
-     */
-    @Log(title = "用户管理", businessType = BusinessType.GRANT)
-    @PutMapping("/authRole")
-    public AjaxResult insertAuthRole(Long userId, Long[] roleIds)
-    {
-        userService.checkUserDataScope(userId);
-        userService.insertUserAuth(userId, roleIds);
-        return AjaxResult.success();
-    }
-
-    /**
-     * 获取部门树列表
-     */
-    @GetMapping("/deptTree")
-    public AjaxResult deptTree(SysDept dept)
-    {
-        return AjaxResult.success(deptService.selectDeptTreeList(dept));
-    }
-}
diff --git a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/tool/HttpClientUtil.java b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/tool/HttpClientUtil.java
deleted file mode 100644
index 2da9a44..0000000
--- a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/tool/HttpClientUtil.java
+++ /dev/null
@@ -1,79 +0,0 @@
-package com.ruoyi.web.controller.tool;
- 
-import java.io.ByteArrayOutputStream;
-import java.io.InputStream;
-import java.net.HttpURLConnection;
-import java.net.URL;
- 
-/**
- * @author zhy
- * @title: HttpClientUtil
- * @projectName car_park
- * @description: http连接工具类
- * @date 2019/10/2219:23
- */
-public class HttpClientUtil {
- 
- 
-    /**
-     * @param strUrl
-     * @return byte[]
-     * @throws
-     * @description: 获取网络图片转成字节流
-     * @author zhy
-     * @date 2019/10/23 8:59
-     */
-    public static byte[] getImageFromNetByUrl(String strUrl) {
-        if (!isURL(strUrl)){
-            return null;
-        }
-        try {
-            URL url = new URL(strUrl);
-            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
-            conn.setRequestMethod("GET");
-            conn.setConnectTimeout(2 * 1000);
-            InputStream inStream = conn.getInputStream();// 通过输入流获取图片数据
-            byte[] btImg = readInputStream(inStream);// 得到图片的二进制数据
-            return btImg;
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-        return null;
-    }
- 
-    /**
-     * 从输入流中获取字节流数据
-     *
-     * @param inStream 输入流
-     * @return
-     * @throws Exception
-     */
-    public static byte[] readInputStream(InputStream inStream) throws Exception {
-        ByteArrayOutputStream outStream = new ByteArrayOutputStream();
-        byte[] buffer = new byte[10240];
-        int len = 0;
-        while ((len = inStream.read(buffer)) != -1) {
-            outStream.write(buffer, 0, len);
-        }
-        inStream.close();
-        return outStream.toByteArray();
-    }
- 
-    public static boolean isURL(String str) {
-        str = str.toLowerCase();
-        String regex = "^((https|http|ftp|rtsp|mms)?://)"
-                + "?(([0-9a-z_!~*'().&=+$%-]+: )?[0-9a-z_!~*'().&=+$%-]+@)?"
-                + "(([0-9]{1,3}\\.){3}[0-9]{1,3}"
-                + "|"
-                + "([0-9a-z_!~*'()-]+\\.)*"
-                + "([0-9a-z][0-9a-z-]{0,61})?[0-9a-z]\\."
-                + "[a-z]{2,6})"
-                + "(:[0-9]{1,5})?"
-                + "((/?)|"
-                + "(/[0-9a-z_!~*'().;?:@&=+$,%#-]+)+/?)$";
-        return str.matches(regex);
-    }
- 
- 
-}
- 
\ No newline at end of file
diff --git a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/tool/ImportExcelUtil.java b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/tool/ImportExcelUtil.java
deleted file mode 100644
index e488f03..0000000
--- a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/tool/ImportExcelUtil.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package com.ruoyi.web.controller.tool;
-
-import com.alibaba.fastjson2.JSON;
-import com.alibaba.fastjson2.JSONObject;
-import com.ruoyi.common.core.domain.R;
-import lombok.extern.slf4j.Slf4j;
-
-import java.io.IOException;
-import java.util.List;
-
-/**
- * 导出返回信息
- */
-@Slf4j
-public class ImportExcelUtil {
-
-    /**
-     * @param errorLines   错误行数
-     * @param successLines 成功行数
-     * @param errorMessage 错误信息
-     * @return
-     * @throws IOException
-     */
-    public static R<String> importReturnMsg(int errorLines, int successLines, List<String> errorMessage) throws IOException {
-        if (errorLines == 0) {
-            return R.ok("共" + successLines + "行数据全部导入成功!");
-        } else {
-            JSONObject result = new JSONObject(5);
-            int totalCount = successLines + errorLines;
-            result.put("totalCount", totalCount);
-            result.put("errorCount", errorLines);
-            result.put("errorMessage", errorMessage);
-            result.put("successCount", successLines);
-            result.put("msg", "总上传行数:" + totalCount + ",已导入行数:" + successLines + ",错误行数:" + errorLines);
-            return R.ok(JSON.toJSONString(result));
-        }
-    }
-
-}
diff --git a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/tool/MsgCodeUtil.java b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/tool/MsgCodeUtil.java
deleted file mode 100644
index 073f315..0000000
--- a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/tool/MsgCodeUtil.java
+++ /dev/null
@@ -1,61 +0,0 @@
-package com.ruoyi.web.controller.tool;
-
-import com.alibaba.fastjson.JSONObject;
-import com.ruoyi.system.code.SubmitTemplateReg;
-import org.apache.commons.codec.binary.Base64;
-import org.apache.commons.codec.binary.Hex;
-
-import java.io.Serializable;
-import java.nio.charset.StandardCharsets;
-
-/**
- * 短信工具类
- */
-public class MsgCodeUtil implements Serializable {
-
-    /**接口账号用户名*/
-    private static final String AP_ID = "";
-    /**企业名称*/
-    private static final String EC_NAME = "";
-    /**签名*/
-    private static final String SECRET_KEY = "";
-    /**签名编码*/
-    private static final String SIGN = "";
-    /**模板ID*/
-    private static final String TEMPLATE_ID = "";
-
-
-    /**
-     * 实体封装
-     * @param code
-     * @return
-     */
-    public static SubmitTemplateReg getSubmitTemplateReg(String code,String mobiles) {
-        SubmitTemplateReg submitReg =new SubmitTemplateReg();
-        String[] paramss = {code};
-        submitReg.setApId(AP_ID);
-        submitReg.setEcName(EC_NAME);
-        submitReg.setSecretKey(SECRET_KEY);
-        submitReg.setParams(JSONObject.toJSONString(paramss));
-        submitReg.setMobiles(mobiles);
-        submitReg.setAddSerial("");
-        submitReg.setSign(SIGN);
-        submitReg.setTemplateId(TEMPLATE_ID);
-        submitReg.setMac(TEMPLATE_ID);
-        StringBuffer stringBuffer = new StringBuffer();
-        stringBuffer.append(submitReg.getEcName( ));stringBuffer.append(submitReg.getApId());
-        stringBuffer.append(submitReg.getSecretKey());stringBuffer.append(submitReg.getTemplateId());stringBuffer.append(submitReg.getMobiles());
-        stringBuffer.append(submitReg.getParams());stringBuffer.append(submitReg.getSign());stringBuffer.append(submitReg.getAddSerial());
-        submitReg.setMac(Hex.encodeHexString(stringBuffer.toString().getBytes(StandardCharsets.UTF_8)));
-        String regText = JSONObject.toJSONString(submitReg);
-        //加密
-        String encode = Base64.encodeBase64String(regText.getBytes());
-        System.err.println(encode);
-        return submitReg;
-    }
-
-    public static void main(String[] args) {
-        getSubmitTemplateReg("123456","18398968484");
-    }
-
-}
diff --git a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/tool/MsgUtils.java b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/tool/MsgUtils.java
deleted file mode 100644
index 119a5ea..0000000
--- a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/tool/MsgUtils.java
+++ /dev/null
@@ -1,70 +0,0 @@
-package com.ruoyi.web.controller.tool;
-
-import com.aliyun.dysmsapi20170525.models.SendSmsRequest;
-import com.aliyun.dysmsapi20170525.models.SendSmsResponse;
-import com.aliyun.tea.TeaException;
-import com.aliyun.teaopenapi.models.Config;
-import com.aliyun.teautil.models.RuntimeOptions;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Component;
-
-@Component
-@Slf4j
-public class MsgUtils {
-
-    @Value("${code.config.accessKeyId}")
-    private  String accessKeyId;
-    @Value("${code.config.accessKeySecret}")
-    private  String accessKeySecret;
-    @Value("${code.config.signName}")
-    private  String signName;
-    @Value("${code.config.templateCode}")
-    private  String templateCode;
-    @Value("${code.config.signNameTest}")
-    private  String signNameTest;
-    @Value("${code.config.templateCodeTest}")
-    private  String templateCodeTest;
-
-    /**
-     * 使用AK&SK初始化账号Client
-     * @param accessKeyId
-     * @param accessKeySecret
-     * @return Client
-     * @throws Exception
-     */
-    public static com.aliyun.dysmsapi20170525.Client createClient(String accessKeyId, String accessKeySecret) throws Exception {
-        Config config = new Config()
-                // 您的 AccessKey ID
-                .setAccessKeyId(accessKeyId)
-                // 您的 AccessKey Secret
-                .setAccessKeySecret(accessKeySecret);
-        // 访问的域名
-        config.endpoint = "dysmsapi.aliyuncs.com";
-        return new com.aliyun.dysmsapi20170525.Client(config);
-    }
-
-    public void sendMsg(String phone,String code) throws Exception {
-        com.aliyun.dysmsapi20170525.Client client = MsgUtils.createClient(accessKeyId,accessKeySecret);
-        SendSmsRequest sendSmsRequest = new SendSmsRequest()
-                .setSignName(signName)
-                .setTemplateCode(templateCode)
-                .setPhoneNumbers(phone)
-                .setTemplateParam("{\"code\":\""+code+"\"}");
-        RuntimeOptions runtime = new RuntimeOptions();
-        try {
-            // 复制代码运行请自行打印 API 的返回值
-            SendSmsResponse sendSmsResponse = client.sendSmsWithOptions(sendSmsRequest, runtime);
-            log.info("短信发送成功:{},{}",sendSmsResponse.getBody().getMessage(),sendSmsResponse.getStatusCode());
-        } catch (TeaException error) {
-            // 如有需要,请打印 error
-            com.aliyun.teautil.Common.assertAsString(error.message);
-            log.info("短信发送失败:{}",error.message);
-        } catch (Exception _error) {
-            TeaException error = new TeaException(_error.getMessage(), _error);
-            // 如有需要,请打印 error
-            com.aliyun.teautil.Common.assertAsString(error.message);
-            log.info("短信发送失败:{}",error.message);
-        }
-    }
-}
diff --git a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/tool/MyFileUtil.java b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/tool/MyFileUtil.java
deleted file mode 100644
index 40af28a..0000000
--- a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/tool/MyFileUtil.java
+++ /dev/null
@@ -1,128 +0,0 @@
-package com.ruoyi.web.controller.tool;
-
-import org.springframework.web.multipart.MultipartFile;
-import java.io.*;
-import java.nio.file.Files;
- 
- 
-/**
- * @author RainbowCloud
- */
-public class MyFileUtil {
- 
-    /**
-     * 将 File 转换为 MultipartFile。
-     *
-     * @param file      要转换的文件
-     * @param fieldName 字段名,通常用于表单中的文件字段名
-     * @return 转换后的 MultipartFile
-     * @throws IOException 如果发生I/O错误
-     */
-    public static MultipartFile fileToMultipartFile(File file, String fieldName) throws IOException {
-        try {
-            if (file == null || !file.exists()) {
-                throw new FileNotFoundException("文件未找到:" + file);
-            }
-            byte[] content = Files.readAllBytes(file.toPath());
-            return new ByteArrayMultipartFile(content, file.getName(), fieldName, Files.probeContentType(file.toPath()));
-        } catch (IOException e) {
-            throw new RuntimeException(e);
-        } finally {
-            // 删除临时文件
-            file.delete();
-        }
-    }
- 
-    /**
-     * 将 MultipartFile 转换为 File。
-     *
-     * @param multipartFile 要转换的 MultipartFile
-     * @return 转换后的 File
-     * @throws IOException 如果发生I/O错误
-     */
-    public static File multipartFileToFile(MultipartFile multipartFile) throws IOException {
-        if (multipartFile.isEmpty()) {
-            throw new IOException("传入的MultipartFile为空");
-        }
-        String originalFilename = multipartFile.getOriginalFilename();
-        String tempFileSuffix = originalFilename != null ? originalFilename.substring(originalFilename.lastIndexOf('.')) : ".tmp";
-        File tempFile = File.createTempFile("temp", tempFileSuffix);
-        try (InputStream ins = multipartFile.getInputStream();
-             OutputStream os = new FileOutputStream(tempFile)) {
-            byte[] buffer = new byte[8192];
-            int bytesRead;
-            while ((bytesRead = ins.read(buffer)) != -1) {
-                os.write(buffer, 0, bytesRead);
-            }
-        }
-        return tempFile;
-    }
- 
-    /**
-     * 内置一个简单的 MultipartFile 实现类,用于File转换
-     */
-    private static class ByteArrayMultipartFile implements MultipartFile {
-        private final byte[] content;
-        private final String name;
-        private final String originalFilename;
-        private final String contentType;
- 
-        /**
-         * 构造函数
-         *
-         * @param content         文件内容
-         * @param originalFilename 文件原始名字
-         * @param name            字段名
-         * @param contentType     文件类型
-         */
-        public ByteArrayMultipartFile(byte[] content, String originalFilename, String name, String contentType) {
-            this.content = content;
-            this.originalFilename = originalFilename;
-            this.name = name;
-            this.contentType = contentType;
-        }
- 
-        @Override
-        public String getName() {
-            return this.name;
-        }
- 
-        @Override
-        public String getOriginalFilename() {
-            return this.originalFilename;
-        }
- 
-        @Override
-        public String getContentType() {
-            return this.contentType;
-        }
- 
-        @Override
-        public boolean isEmpty() {
-            return (this.content == null || this.content.length == 0);
-        }
- 
-        @Override
-        public long getSize() {
-            return this.content.length;
-        }
- 
-        @Override
-        public byte[] getBytes() {
-            return this.content;
-        }
- 
-        @Override
-        public InputStream getInputStream() {
-            return new ByteArrayInputStream(this.content);
-        }
- 
-        @Override
-        public void transferTo(File dest) throws IOException, IllegalStateException {
-            try (OutputStream os = new FileOutputStream(dest)) {
-                os.write(this.content);
-            }
-        }
-    }
- 
-}
\ No newline at end of file
diff --git a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/tool/QRCodeUtil.java b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/tool/QRCodeUtil.java
deleted file mode 100644
index 9097589..0000000
--- a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/tool/QRCodeUtil.java
+++ /dev/null
@@ -1,124 +0,0 @@
-package com.ruoyi.web.controller.tool;
-
-import com.google.zxing.BarcodeFormat;
-import com.google.zxing.EncodeHintType;
-import com.google.zxing.MultiFormatWriter;
-import com.google.zxing.WriterException;
-import com.google.zxing.common.BitMatrix;
-import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
-import com.ruoyi.common.utils.StringUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.imageio.ImageIO;
-import javax.swing.filechooser.FileSystemView;
-import java.awt.image.BufferedImage;
-import java.io.File;
-import java.io.OutputStream;
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * 二维码工具
- * @Author:debug (SteadyJack)
- * @Link: weixin-> debug0868  qq-> 1948831260
- * @Date: 2020/11/16 22:38
- **/
-public class QRCodeUtil {
-    private static final Logger log= LoggerFactory.getLogger(QRCodeUtil.class);
- 
-    //CODE_WIDTH:二维码宽度,单位像素
-    private static final int CODE_WIDTH = 400;
-    //CODE_HEIGHT:二维码高度,单位像素
-    private static final int CODE_HEIGHT = 400;
-    //FRONT_COLOR:二维码前景色,0x000000 表示黑色
-    private static final int FRONT_COLOR = 0x000000;
-    //BACKGROUND_COLOR:二维码背景色,0xFFFFFF 表示白色
-    //演示用 16 进制表示,和前端页面 CSS 的取色是一样的,注意前后景颜色应该对比明显,如常见的黑白
-    private static final int BACKGROUND_COLOR = 0xFFFFFF;
-
-
-    public static void main(String[] args) {
-        createCodeToFile("5261548530",new File("C:\\Users\\Admin\\Desktop\\qrcode"),"5261548530.png");
-    }
-
-    public static void createCodeToFile(String content, File codeImgFileSaveDir, String fileName) {
-        try {
-            if (StringUtils.isBlank(content) || StringUtils.isBlank(fileName)) {
-                return;
-            }
-            content = content.trim();
-            if (codeImgFileSaveDir==null || codeImgFileSaveDir.isFile()) {
-                //二维码图片存在目录为空,默认放在桌面...
-                codeImgFileSaveDir = FileSystemView.getFileSystemView().getHomeDirectory();
-            }
-            if (!codeImgFileSaveDir.exists()) {
-                //二维码图片存在目录不存在,开始创建...
-                codeImgFileSaveDir.mkdirs();
-            }
- 
-            //核心代码-生成二维码
-            BufferedImage bufferedImage = getBufferedImage(content);
- 
-            File codeImgFile = new File(codeImgFileSaveDir, fileName);
-            ImageIO.write(bufferedImage, "png", codeImgFile);
- 
-            log.info("二维码图片生成成功:" + codeImgFile.getPath());
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
- 
-    /**
-     * 生成二维码并输出到输出流, 通常用于输出到网页上进行显示,输出到网页与输出到磁盘上的文件中,区别在于最后一句 ImageIO.write
-     * write(RenderedImage im,String formatName,File output):写到文件中
-     * write(RenderedImage im,String formatName,OutputStream output):输出到输出流中
-     * @param content  :二维码内容
-     * @param outputStream :输出流,比如 HttpServletResponse 的 getOutputStream
-     */
-    public static void createCodeToOutputStream(String content, OutputStream outputStream) {
-        try {
-            if (StringUtils.isBlank(content)) {
-                return;
-            }
-            content = content.trim();
-            //核心代码-生成二维码
-            BufferedImage bufferedImage = getBufferedImage(content);
- 
-            //区别就是这一句,输出到输出流中,如果第三个参数是 File,则输出到文件中
-            ImageIO.write(bufferedImage, "png", outputStream);
- 
-            log.info("二维码图片生成到输出流成功...");
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
- 
-    //核心代码-生成二维码
-    private static BufferedImage getBufferedImage(String content) throws WriterException {
- 
-        //com.google.zxing.EncodeHintType:编码提示类型,枚举类型
-        Map<EncodeHintType, Object> hints = new HashMap();
- 
-        //EncodeHintType.CHARACTER_SET:设置字符编码类型
-        hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
- 
-        //EncodeHintType.ERROR_CORRECTION:设置误差校正
-        //ErrorCorrectionLevel:误差校正等级,L = ~7% correction、M = ~15% correction、Q = ~25% correction、H = ~30% correction
-        //不设置时,默认为 L 等级,等级不一样,生成的图案不同,但扫描的结果是一样的
-        hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M);
- 
-        //EncodeHintType.MARGIN:设置二维码边距,单位像素,值越小,二维码距离四周越近
-        hints.put(EncodeHintType.MARGIN, 1);
-        
-        MultiFormatWriter multiFormatWriter = new MultiFormatWriter();
-        BitMatrix bitMatrix = multiFormatWriter.encode(content, BarcodeFormat.QR_CODE, CODE_WIDTH, CODE_HEIGHT, hints);
-        BufferedImage bufferedImage = new BufferedImage(CODE_WIDTH, CODE_HEIGHT, BufferedImage.TYPE_INT_BGR);
-        for (int x = 0; x < CODE_WIDTH; x++) {
-            for (int y = 0; y < CODE_HEIGHT; y++) {
-                bufferedImage.setRGB(x, y, bitMatrix.get(x, y) ? FRONT_COLOR : BACKGROUND_COLOR);
-            }
-        }
-        return bufferedImage;
-    }
-}
diff --git a/ruoyi-applet/src/main/java/com/ruoyi/web/core/config/DataUpdateHandlerConfig.java b/ruoyi-applet/src/main/java/com/ruoyi/web/core/config/DataUpdateHandlerConfig.java
deleted file mode 100644
index e27f2a5..0000000
--- a/ruoyi-applet/src/main/java/com/ruoyi/web/core/config/DataUpdateHandlerConfig.java
+++ /dev/null
@@ -1,61 +0,0 @@
-package com.ruoyi.web.core.config;
-
-import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
-import com.ruoyi.common.utils.SecurityUtils;
-import com.ruoyi.common.utils.StringUtils;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.ibatis.reflection.MetaObject;
-import org.springframework.context.annotation.Configuration;
-
-/**
- * @author xiaochen
- * @ClassName DataUpdateInterceptor
- * @Description 数据更新操作处理
- * @date 2021-12-15
- * <p>
- * 注意,之前在此处注入了 JwtTokenUtils
- * <p>
- * 造成spring循环依赖,项目支棱不起来
- */
-@Slf4j
-@Configuration
-public class DataUpdateHandlerConfig implements MetaObjectHandler {
-
-    /**
-     * 新增数据执行
-     *
-     * @param metaObject
-     */
-    @Override
-    public void insertFill(MetaObject metaObject) {
-        //  获取登录信息
-//        String userName = SecurityUtils.getUsernameApplet();
-//        if (StringUtils.isNotBlank(userName)) {
-//            this.setFieldValByName("createBy", userName, metaObject);
-//            this.setFieldValByName("updateBy", userName, metaObject);
-//        } else {
-//            this.setFieldValByName("createBy", userName, metaObject);
-//            this.setFieldValByName("updateBy", userName, metaObject);
-//        }
-
-    }
-
-    /**
-     * 修改数据执行
-     *
-     * @param metaObject
-     */
-    @Override
-    public void updateFill(MetaObject metaObject) {
-        //  获取登录信息
-//        String userName = SecurityUtils.getUsernameApplet();
-//        if (StringUtils.isNotBlank(userName)){
-//            this.setFieldValByName("createBy", userName, metaObject);
-//            this.setFieldValByName("updateBy", userName, metaObject);
-//        } else {
-//            this.setFieldValByName("createBy", userName, metaObject);
-//            this.setFieldValByName("updateBy", userName, metaObject);
-//        }
-
-    }
-}
diff --git a/ruoyi-applet/src/main/java/com/ruoyi/web/core/config/MybatisPlusConfig.java b/ruoyi-applet/src/main/java/com/ruoyi/web/core/config/MybatisPlusConfig.java
deleted file mode 100644
index fac9a9f..0000000
--- a/ruoyi-applet/src/main/java/com/ruoyi/web/core/config/MybatisPlusConfig.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package com.ruoyi.web.core.config;
-
-import com.baomidou.mybatisplus.annotation.DbType;
-import com.baomidou.mybatisplus.core.config.GlobalConfig;
-import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
-import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-/**
- * @author liheng
- * @ClassName MybatisPlusConfig
- * @Description MybatisPlus相关配置
- * @date 2020-09-22 11:22、
- * 直接以实现类作为bean的注入(有事务管理的类)
- * @EnableTransactionManagement(proxyTargetClass = true)
- */
-@Configuration
-public class MybatisPlusConfig {
-    private final DataUpdateHandlerConfig dataUpdateHandler;
-
-    @Autowired
-    public MybatisPlusConfig(DataUpdateHandlerConfig dataUpdateHandler) {
-        this.dataUpdateHandler = dataUpdateHandler;
-    }
-
-    /**
-     * 新的分页插件,一缓和二缓遵循mybatis的规则,需要设置 MybatisConfiguration#useDeprecatedExecutor = false 避免缓存出现问题
-     */
-    @Bean
-    public MybatisPlusInterceptor mybatisPlusInterceptor() {
-        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
-        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
-        return interceptor;
-    }
-
-    /**
-     * 自动填充功能
-     *
-     * @return
-     */
-    @Bean
-    public GlobalConfig globalConfig() {
-        GlobalConfig globalConfig = new GlobalConfig();
-        globalConfig.setMetaObjectHandler(dataUpdateHandler);
-        return globalConfig;
-    }
-
-
-}
diff --git a/ruoyi-applet/src/main/java/com/ruoyi/web/core/config/SwaggerConfig.java b/ruoyi-applet/src/main/java/com/ruoyi/web/core/config/SwaggerConfig.java
deleted file mode 100644
index 040116a..0000000
--- a/ruoyi-applet/src/main/java/com/ruoyi/web/core/config/SwaggerConfig.java
+++ /dev/null
@@ -1,125 +0,0 @@
-package com.ruoyi.web.core.config;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import com.ruoyi.common.config.RuoYiConfig;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.models.auth.In;
-import springfox.documentation.builders.ApiInfoBuilder;
-import springfox.documentation.builders.PathSelectors;
-import springfox.documentation.builders.RequestHandlerSelectors;
-import springfox.documentation.service.ApiInfo;
-import springfox.documentation.service.ApiKey;
-import springfox.documentation.service.AuthorizationScope;
-import springfox.documentation.service.Contact;
-import springfox.documentation.service.SecurityReference;
-import springfox.documentation.service.SecurityScheme;
-import springfox.documentation.spi.DocumentationType;
-import springfox.documentation.spi.service.contexts.SecurityContext;
-import springfox.documentation.spring.web.plugins.Docket;
-
-/**
- * Swagger2的接口配置
- * 
- * @author ruoyi
- */
-@Configuration
-public class SwaggerConfig
-{
-    /** 系统基础配置 */
-    @Autowired
-    private RuoYiConfig ruoyiConfig;
-
-    /** 是否开启swagger */
-    @Value("${swagger.enabled}")
-    private boolean enabled;
-
-    /** 设置请求的统一前缀 */
-    @Value("${swagger.pathMapping}")
-    private String pathMapping;
-
-    /**
-     * 创建API
-     */
-    @Bean
-    public Docket createRestApi()
-    {
-        return new Docket(DocumentationType.OAS_30)
-                // 是否启用Swagger
-                .enable(enabled)
-                // 用来创建该API的基本信息,展示在文档的页面中(自定义展示的信息)
-                .apiInfo(apiInfo())
-                // 设置哪些接口暴露给Swagger展示
-                .select()
-                // 扫描所有有注解的api,用这种方式更灵活
-                .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
-                // 扫描指定包中的swagger注解
-                // .apis(RequestHandlerSelectors.basePackage("com.ruoyi.project.tool.swagger"))
-                // 扫描所有 .apis(RequestHandlerSelectors.any())
-                .paths(PathSelectors.any())
-                .build()
-                /* 设置安全模式,swagger可以设置访问token */
-                .securitySchemes(securitySchemes())
-                .securityContexts(securityContexts())
-                .pathMapping(pathMapping);
-    }
-
-    /**
-     * 安全模式,这里指定token通过Authorization头请求头传递
-     */
-    private List<SecurityScheme> securitySchemes()
-    {
-        List<SecurityScheme> apiKeyList = new ArrayList<SecurityScheme>();
-        apiKeyList.add(new ApiKey("Authorization", "Authorization", In.HEADER.toValue()));
-        return apiKeyList;
-    }
-
-    /**
-     * 安全上下文
-     */
-    private List<SecurityContext> securityContexts()
-    {
-        List<SecurityContext> securityContexts = new ArrayList<>();
-        securityContexts.add(
-                SecurityContext.builder()
-                        .securityReferences(defaultAuth())
-                        .operationSelector(o -> o.requestMappingPattern().matches("/.*"))
-                        .build());
-        return securityContexts;
-    }
-
-    /**
-     * 默认的安全上引用
-     */
-    private List<SecurityReference> defaultAuth()
-    {
-        AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
-        AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
-        authorizationScopes[0] = authorizationScope;
-        List<SecurityReference> securityReferences = new ArrayList<>();
-        securityReferences.add(new SecurityReference("Authorization", authorizationScopes));
-        return securityReferences;
-    }
-
-    /**
-     * 添加摘要信息
-     */
-    private ApiInfo apiInfo()
-    {
-        // 用ApiInfoBuilder进行定制
-        return new ApiInfoBuilder()
-                // 设置标题
-                .title("标题:乐山实验室管理系统_接口文档")
-                // 描述
-                .description("乐山实验室接口文档")
-                // 作者信息
-                .contact(new Contact(ruoyiConfig.getName(), null, null))
-                // 版本
-                .version("版本号:" + ruoyiConfig.getVersion())
-                .build();
-    }
-}
diff --git a/ruoyi-applet/src/main/resources/META-INF/spring-devtools.properties b/ruoyi-applet/src/main/resources/META-INF/spring-devtools.properties
deleted file mode 100644
index 2b23f85..0000000
--- a/ruoyi-applet/src/main/resources/META-INF/spring-devtools.properties
+++ /dev/null
@@ -1 +0,0 @@
-restart.include.json=/com.alibaba.fastjson.*.jar
\ No newline at end of file
diff --git a/ruoyi-applet/src/main/resources/application-prod.yml b/ruoyi-applet/src/main/resources/application-prod.yml
deleted file mode 100644
index 10c4c27..0000000
--- a/ruoyi-applet/src/main/resources/application-prod.yml
+++ /dev/null
@@ -1,230 +0,0 @@
-# 项目相关配置
-ruoyi:
-  # 名称
-  name: RuoYi
-  # 版本
-  version: 3.8.6
-  # 版权年份
-  copyrightYear: 2023
-  # 实例演示开关
-  demoEnabled: true
-  # 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath)
-  profile: D:/ruoyi/uploadPath
-  # 获取ip地址开关
-  addressEnabled: false
-  # 验证码类型 math 数字计算 char 字符验证
-  captchaType: math
-
-# 开发环境配置
-server:
-  # 服务器的HTTP端口,默认为8080
-  port: 8082
-  servlet:
-    # 应用的访问路径
-    context-path: /
-  tomcat:
-    # tomcat的URI编码
-    uri-encoding: UTF-8
-    # 连接数满后的排队数,默认为100
-    accept-count: 1000
-    threads:
-      # tomcat最大线程数,默认为200
-      max: 800
-      # Tomcat启动初始化的线程数,默认值10
-      min-spare: 100
-
-# 日志配置
-logging:
-  level:
-    com.ruoyi: debug
-    org.springframework: warn
-
-# 用户配置
-user:
-  password:
-    # 密码最大错误次数
-    maxRetryCount: 5
-    # 密码锁定时间(默认10分钟)
-    lockTime: 10
-
-# Spring配置
-spring:
-  main:
-    allow-bean-definition-overriding: true
-  # 资源信息
-  messages:
-    # 国际化资源文件路径
-    basename: i18n/messages
-  # 文件上传
-  servlet:
-    multipart:
-      # 单个文件大小
-      max-file-size: 500MB
-      # 设置总上传的文件大小
-      max-request-size: 2000MB
-  # 服务模块
-  devtools:
-    restart:
-      # 热部署开关
-      enabled: true
-  # redis 配置
-  redis:
-    # 地址
-    #    host: 127.0.0.1
-    #    # 端口,默认为6379
-    #    port: 6379
-    #    # 数据库索引
-    #    database: 0
-    #    # 密码
-    #    password: 123456
-    host: 127.0.0.1
-    # 端口,默认为6379
-    port: 16379
-    # 数据库索引
-    database: 0
-    # 密码
-    password: 8f5z9g52gx4bg
-    # 连接超时时间
-    timeout: 10s
-    lettuce:
-      pool:
-        # 连接池中的最小空闲连接
-        min-idle: 0
-        # 连接池中的最大空闲连接
-        max-idle: 8
-        # 连接池的最大数据库连接数
-        max-active: 8
-        # #连接池最大阻塞等待时间(使用负值表示没有限制)
-        max-wait: -1ms
-  # 数据源配置
-  datasource:
-    type: com.alibaba.druid.pool.DruidDataSource
-    driverClassName: com.mysql.cj.jdbc.Driver
-    druid:
-      # 主库数据源
-      master:
-        url: jdbc:mysql://172.27.0.13:3306/xizang?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=Asia/Shanghai
-        username: xzgt
-        password: changyun!6f2gshj6h3j
-      # 从库数据源
-      slave:
-        # 从数据源开关/默认关闭
-        enabled: false
-        url:
-        username:
-        password:
-      # 初始连接数
-      initialSize: 5
-      # 最小连接池数量
-      minIdle: 10
-      # 最大连接池数量
-      maxActive: 20
-      # 配置获取连接等待超时的时间
-      maxWait: 60000
-      # 配置连接超时时间
-      connectTimeout: 30000
-      # 配置网络超时时间
-      socketTimeout: 60000
-      # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
-      timeBetweenEvictionRunsMillis: 60000
-      # 配置一个连接在池中最小生存的时间,单位是毫秒
-      minEvictableIdleTimeMillis: 300000
-      # 配置一个连接在池中最大生存的时间,单位是毫秒
-      maxEvictableIdleTimeMillis: 900000
-      # 配置检测连接是否有效
-      validationQuery: SELECT 1 FROM DUAL
-      testWhileIdle: true
-      testOnBorrow: false
-      testOnReturn: false
-      webStatFilter:
-        enabled: true
-      statViewServlet:
-        enabled: true
-        # 设置白名单,不填则允许所有访问
-        allow:
-        url-pattern: /druid/*
-        # 控制台管理用户名和密码
-        login-username: ruoyi
-        login-password: 123456
-      filter:
-        stat:
-          enabled: true
-          # 慢SQL记录
-          log-slow-sql: true
-          slow-sql-millis: 1000
-          merge-sql: true
-        wall:
-          config:
-            multi-statement-allow: true
-# token配置
-token:
-  # 令牌自定义标识
-  header: Authorization
-  # 令牌密钥
-  secret: abcdefghijklmnopqrstuvwxyz
-  # 令牌有效期(默认30分钟)
-  expireTime: 120
-
-mybatis-plus:
-  # 此处在多数据源中生效
-  config-location: classpath:/mybatis-config.xml
-  global-config:
-    banner: false
-    db-config:
-      logic-not-delete-value: 0
-      logic-delete-value: 1
-  type-aliases-package: com.ruoyi.**.domain,com.ruoyi.**.vo,com.ruoyi.**.model
-  # 指定Mapper文件位置
-  mapper-locations: classpath*:mapper/**/*.xml
-
-# Swagger配置
-swagger:
-  # 是否开启swagger
-  enabled: true
-  # 请求前缀
-  pathMapping: /
-
-# 防止XSS攻击
-xss:
-  # 过滤开关
-  enabled: true
-  # 排除链接(多个用逗号分隔)
-  excludes: /system/notice
-  # 匹配链接
-  urlPatterns: /system/*,/monitor/*,/tool/*
-# file upload
-file:
-  upload:
-    location: /file/
-    qrLocation: /file/qrCode/
-    accessPath: /file/
-    allowExt: .jpg|.png|.gif|.jpeg|.doc|.docx|.apk|.MP4|.mp4|.pdf|.PDF
-  url:
-    prefix: https://xzgt.test.591taxi.cn:${server.port}${server.servlet.context-path}
-wx:
-  conf:
-    appId: wxe91f1af7638aa5dd
-    secretId: a787e1a462715604e0c9528b6d8960d1
-#OSS及短信配置
-code:
-  config:
-    templateCodeTest: "SMS_154950909"
-    signNameTest: "阿里云短信测试"
-    accessKeyId: LTAI5tAdba8HtT1C6UqtSxBt
-    accessKeySecret: 0SRb6XGkciQDPWn2rYqbJtq2qRMDY8
-    signName: "四川金达通信工程"
-    templateCode: "SMS_293985284"
-cos:
-  client:
-    accessKey: AKIDCF5EF2c0DE1e5JK8r4EGJF4mNsMgp26x
-    secretKey: lLl184rUyFOOE0d5KNGC3kmfNsCWk4GU
-    bucket: xzgttest-1305134071
-    bucketAddr: ap-chengdu
-    rootSrc: https://xzgttest-1305134071.cos.ap-chengdu.myqcloud.com/
-    location: xizang
-sms:
-  enable: true
-  appId: 1400957506
-  secretid: AKIDCF5EF2c0DE1e5JK8r4EGJF4mNsMgp26x
-  secretkey: lLl184rUyFOOE0d5KNGC3kmfNsCWk4GU
-  sign: 畅云出行
diff --git a/ruoyi-applet/src/main/resources/application-test.yml b/ruoyi-applet/src/main/resources/application-test.yml
deleted file mode 100644
index 40d4e3f..0000000
--- a/ruoyi-applet/src/main/resources/application-test.yml
+++ /dev/null
@@ -1,231 +0,0 @@
-# 项目相关配置
-ruoyi:
-  # 名称
-  name: RuoYi
-  # 版本
-  version: 3.8.6
-  # 版权年份
-  copyrightYear: 2023
-  # 实例演示开关
-  demoEnabled: true
-  # 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath)
-  profile: D:/ruoyi/uploadPath
-  # 获取ip地址开关
-  addressEnabled: false
-  # 验证码类型 math 数字计算 char 字符验证
-  captchaType: math
-
-# 开发环境配置
-server:
-  # 服务器的HTTP端口,默认为8080
-  port: 8082
-  servlet:
-    # 应用的访问路径
-    context-path: /
-  tomcat:
-    # tomcat的URI编码
-    uri-encoding: UTF-8
-    # 连接数满后的排队数,默认为100
-    accept-count: 1000
-    threads:
-      # tomcat最大线程数,默认为200
-      max: 800
-      # Tomcat启动初始化的线程数,默认值10
-      min-spare: 100
-
-# 日志配置
-logging:
-  level:
-    com.ruoyi: debug
-    org.springframework: warn
-
-# 用户配置
-user:
-  password:
-    # 密码最大错误次数
-    maxRetryCount: 5
-    # 密码锁定时间(默认10分钟)
-    lockTime: 10
-
-# Spring配置
-spring:
-  main:
-    allow-bean-definition-overriding: true
-  # 资源信息
-  messages:
-    # 国际化资源文件路径
-    basename: i18n/messages
-  # 文件上传
-  servlet:
-    multipart:
-      # 单个文件大小
-      max-file-size: 500MB
-      # 设置总上传的文件大小
-      max-request-size: 2000MB
-  # 服务模块
-  devtools:
-    restart:
-      # 热部署开关
-      enabled: true
-  # redis 配置
-  redis:
-    # 地址
-#    host: 127.0.0.1
-#    # 端口,默认为6379
-#    port: 6379
-#    # 数据库索引
-#    database: 0
-#    # 密码
-#    password: 123456
-    host: xzgt.test.591taxi.cn
-    # 端口,默认为6379
-    port: 16379
-    # 数据库索引
-    database: 0
-    # 密码
-    password: 8f5z9g52gx4bg
-    # 连接超时时间
-    timeout: 10s
-    lettuce:
-      pool:
-        # 连接池中的最小空闲连接
-        min-idle: 0
-        # 连接池中的最大空闲连接
-        max-idle: 8
-        # 连接池的最大数据库连接数
-        max-active: 8
-        # #连接池最大阻塞等待时间(使用负值表示没有限制)
-        max-wait: -1ms
-# 数据源配置
-  datasource:
-    type: com.alibaba.druid.pool.DruidDataSource
-    driverClassName: com.mysql.cj.jdbc.Driver
-    druid:
-      # 主库数据源
-      master:
-        url: jdbc:mysql://xzgt.test.591taxi.cn:13306/xizang?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=Asia/Shanghai
-        username: root
-        password: 8f5z9g52gx4bg
-      # 从库数据源
-      slave:
-        # 从数据源开关/默认关闭
-        enabled: false
-        url:
-        username:
-        password:
-      # 初始连接数
-      initialSize: 5
-      # 最小连接池数量
-      minIdle: 10
-      # 最大连接池数量
-      maxActive: 20
-      # 配置获取连接等待超时的时间
-      maxWait: 60000
-      # 配置连接超时时间
-      connectTimeout: 30000
-      # 配置网络超时时间
-      socketTimeout: 60000
-      # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
-      timeBetweenEvictionRunsMillis: 60000
-      # 配置一个连接在池中最小生存的时间,单位是毫秒
-      minEvictableIdleTimeMillis: 300000
-      # 配置一个连接在池中最大生存的时间,单位是毫秒
-      maxEvictableIdleTimeMillis: 900000
-      # 配置检测连接是否有效
-      validationQuery: SELECT 1 FROM DUAL
-      testWhileIdle: true
-      testOnBorrow: false
-      testOnReturn: false
-      webStatFilter:
-        enabled: true
-      statViewServlet:
-        enabled: true
-        # 设置白名单,不填则允许所有访问
-        allow:
-        url-pattern: /druid/*
-        # 控制台管理用户名和密码
-        login-username: ruoyi
-        login-password: 123456
-      filter:
-        stat:
-          enabled: true
-          # 慢SQL记录
-          log-slow-sql: true
-          slow-sql-millis: 1000
-          merge-sql: true
-        wall:
-          config:
-            multi-statement-allow: true
-# token配置
-token:
-  # 令牌自定义标识
-  header: Authorization
-  # 令牌密钥
-  secret: abcdefghijklmnopqrstuvwxyz
-  # 令牌有效期(默认30分钟)
-  expireTime: 120
-
-mybatis-plus:
-  # 此处在多数据源中生效
-  config-location: classpath:/mybatis-config.xml
-  global-config:
-    banner: false
-    db-config:
-      logic-not-delete-value: 0
-      logic-delete-value: 1
-  type-aliases-package: com.ruoyi.**.domain,com.ruoyi.**.vo,com.ruoyi.**.model
-  # 指定Mapper文件位置
-  mapper-locations: classpath*:mapper/**/*.xml
-
-# Swagger配置
-swagger:
-  # 是否开启swagger
-  enabled: true
-  # 请求前缀
-  pathMapping: /
-
-# 防止XSS攻击
-xss:
-  # 过滤开关
-  enabled: true
-  # 排除链接(多个用逗号分隔)
-  excludes: /system/notice
-  # 匹配链接
-  urlPatterns: /system/*,/monitor/*,/tool/*
-# file upload
-file:
-  upload:
-    location: /file/
-    qrLocation: /file/qrCode/
-    accessPath: /file/
-    allowExt: .jpg|.png|.gif|.jpeg|.doc|.docx|.apk|.MP4|.mp4|.pdf|.PDF
-  url:
-#    prefix: http://localhost:${server.port}${server.servlet.context-path}
-    prefix: https://xzgt.test.591taxi.cn:${server.port}${server.servlet.context-path}
-wx:
-  conf:
-    appId: wxe91f1af7638aa5dd
-    secretId: a787e1a462715604e0c9528b6d8960d1
-#OSS及短信配置
-code:
-  config:
-    templateCodeTest: "SMS_154950909"
-    signNameTest: "阿里云短信测试"
-    accessKeyId: LTAI5tAdba8HtT1C6UqtSxBt
-    accessKeySecret: 0SRb6XGkciQDPWn2rYqbJtq2qRMDY8
-    signName: "四川金达通信工程"
-    templateCode: "SMS_293985284"
-cos:
-  client:
-    accessKey: AKIDCF5EF2c0DE1e5JK8r4EGJF4mNsMgp26x
-    secretKey: lLl184rUyFOOE0d5KNGC3kmfNsCWk4GU
-    bucket: xzgttest-1305134071
-    bucketAddr: ap-chengdu
-    rootSrc: https://xzgttest-1305134071.cos.ap-chengdu.myqcloud.com/
-    location: xizang
-sms:
-  enable: true
-  appId: 1400957506
-  secretid: AKIDCF5EF2c0DE1e5JK8r4EGJF4mNsMgp26x
-  secretkey: lLl184rUyFOOE0d5KNGC3kmfNsCWk4GU
-  sign: 畅云出行
diff --git a/ruoyi-applet/src/main/resources/application.yml b/ruoyi-applet/src/main/resources/application.yml
deleted file mode 100644
index dcc106d..0000000
--- a/ruoyi-applet/src/main/resources/application.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-# 项目相关配置
-spring:
-  profiles:
-    active: test
diff --git a/ruoyi-applet/src/main/resources/banner.txt b/ruoyi-applet/src/main/resources/banner.txt
deleted file mode 100644
index 0931cb8..0000000
--- a/ruoyi-applet/src/main/resources/banner.txt
+++ /dev/null
@@ -1,24 +0,0 @@
-Application Version: ${ruoyi.version}
-Spring Boot Version: ${spring-boot.version}
-////////////////////////////////////////////////////////////////////
-//                          _ooOoo_                               //
-//                         o8888888o                              //
-//                         88" . "88                              //
-//                         (| ^_^ |)                              //
-//                         O\  =  /O                              //
-//                      ____/`---'\____                           //
-//                    .'  \\|     |//  `.                         //
-//                   /  \\|||  :  |||//  \                        //
-//                  /  _||||| -:- |||||-  \                       //
-//                  |   | \\\  -  /// |   |                       //
-//                  | \_|  ''\---/''  |   |                       //
-//                  \  .-\__  `-`  ___/-. /                       //
-//                ___`. .'  /--.--\  `. . ___                     //
-//              ."" '<  `.___\_<|>_/___.'  >'"".                  //
-//            | | :  `- \`.;`\ _ /`;.`/ - ` : | |                 //
-//            \  \ `-.   \_ __\ /__ _/   .-` /  /                 //
-//      ========`-.____`-.___\_____/___.-`____.-'========         //
-//                           `=---='                              //
-//      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^        //
-//             佛祖保佑       永不宕机      永无BUG               //
-////////////////////////////////////////////////////////////////////
\ No newline at end of file
diff --git a/ruoyi-applet/src/main/resources/i18n/messages.properties b/ruoyi-applet/src/main/resources/i18n/messages.properties
deleted file mode 100644
index 93de005..0000000
--- a/ruoyi-applet/src/main/resources/i18n/messages.properties
+++ /dev/null
@@ -1,38 +0,0 @@
-#错误消息
-not.null=* 必须填写
-user.jcaptcha.error=验证码错误
-user.jcaptcha.expire=验证码已失效
-user.not.exists=用户不存在/密码错误
-user.password.not.match=用户不存在/密码错误
-user.password.retry.limit.count=密码输入错误{0}次
-user.password.retry.limit.exceed=密码输入错误{0}次,帐户锁定{1}分钟
-user.password.delete=对不起,您的账号已被删除
-user.blocked=用户已封禁,请联系管理员
-role.blocked=角色已封禁,请联系管理员
-login.blocked=很遗憾,访问IP已被列入系统黑名单
-user.logout.success=退出成功
-
-length.not.valid=长度必须在{min}到{max}个字符之间
-
-user.username.not.valid=* 2到20个汉字、字母、数字或下划线组成,且必须以非数字开头
-user.password.not.valid=* 5-50个字符
- 
-user.email.not.valid=邮箱格式错误
-user.mobile.phone.number.not.valid=手机号格式错误
-user.login.success=登录成功
-user.register.success=注册成功
-user.notfound=请重新登录
-user.forcelogout=管理员强制退出,请重新登录
-user.unknown.error=未知错误,请重新登录
-
-##文件上传消息
-upload.exceed.maxSize=上传的文件大小超出限制的文件大小!<br/>允许的文件最大大小是:{0}MB!
-upload.filename.exceed.length=上传的文件名最长{0}个字符
-
-##权限
-no.permission=您没有数据的权限,请联系管理员添加权限 [{0}]
-no.create.permission=您没有创建数据的权限,请联系管理员添加权限 [{0}]
-no.update.permission=您没有修改数据的权限,请联系管理员添加权限 [{0}]
-no.delete.permission=您没有删除数据的权限,请联系管理员添加权限 [{0}]
-no.export.permission=您没有导出数据的权限,请联系管理员添加权限 [{0}]
-no.view.permission=您没有查看数据的权限,请联系管理员添加权限 [{0}]
diff --git a/ruoyi-applet/src/main/resources/logback.xml b/ruoyi-applet/src/main/resources/logback.xml
deleted file mode 100644
index a360583..0000000
--- a/ruoyi-applet/src/main/resources/logback.xml
+++ /dev/null
@@ -1,93 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<configuration>
-    <!-- 日志存放路径 -->
-	<property name="log.path" value="/home/ruoyi/logs" />
-    <!-- 日志输出格式 -->
-	<property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />
-
-	<!-- 控制台输出 -->
-	<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
-		<encoder>
-			<pattern>${log.pattern}</pattern>
-		</encoder>
-	</appender>
-	
-	<!-- 系统日志输出 -->
-	<appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
-	    <file>${log.path}/sys-info.log</file>
-        <!-- 循环政策:基于时间创建日志文件 -->
-		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <!-- 日志文件名格式 -->
-			<fileNamePattern>${log.path}/sys-info.%d{yyyy-MM-dd}.log</fileNamePattern>
-			<!-- 日志最大的历史 60天 -->
-			<maxHistory>60</maxHistory>
-		</rollingPolicy>
-		<encoder>
-			<pattern>${log.pattern}</pattern>
-		</encoder>
-		<filter class="ch.qos.logback.classic.filter.LevelFilter">
-            <!-- 过滤的级别 -->
-            <level>INFO</level>
-            <!-- 匹配时的操作:接收(记录) -->
-            <onMatch>ACCEPT</onMatch>
-            <!-- 不匹配时的操作:拒绝(不记录) -->
-            <onMismatch>DENY</onMismatch>
-        </filter>
-	</appender>
-	
-	<appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
-	    <file>${log.path}/sys-error.log</file>
-        <!-- 循环政策:基于时间创建日志文件 -->
-        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <!-- 日志文件名格式 -->
-            <fileNamePattern>${log.path}/sys-error.%d{yyyy-MM-dd}.log</fileNamePattern>
-			<!-- 日志最大的历史 60天 -->
-			<maxHistory>60</maxHistory>
-        </rollingPolicy>
-        <encoder>
-            <pattern>${log.pattern}</pattern>
-        </encoder>
-        <filter class="ch.qos.logback.classic.filter.LevelFilter">
-            <!-- 过滤的级别 -->
-            <level>ERROR</level>
-			<!-- 匹配时的操作:接收(记录) -->
-            <onMatch>ACCEPT</onMatch>
-			<!-- 不匹配时的操作:拒绝(不记录) -->
-            <onMismatch>DENY</onMismatch>
-        </filter>
-    </appender>
-	
-	<!-- 用户访问日志输出  -->
-    <appender name="sys-user" class="ch.qos.logback.core.rolling.RollingFileAppender">
-		<file>${log.path}/sys-user.log</file>
-        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <!-- 按天回滚 daily -->
-            <fileNamePattern>${log.path}/sys-user.%d{yyyy-MM-dd}.log</fileNamePattern>
-            <!-- 日志最大的历史 60天 -->
-            <maxHistory>60</maxHistory>
-        </rollingPolicy>
-        <encoder>
-            <pattern>${log.pattern}</pattern>
-        </encoder>
-    </appender>
-	
-	<!-- 系统模块日志级别控制  -->
-	<logger name="com.ruoyi" level="info" />
-	<!-- Spring日志级别控制  -->
-	<logger name="org.springframework" level="warn" />
-
-	<root level="info">
-		<appender-ref ref="console" />
-	</root>
-	
-	<!--系统操作日志-->
-    <root level="info">
-        <appender-ref ref="file_info" />
-        <appender-ref ref="file_error" />
-    </root>
-	
-	<!--系统用户操作日志-->
-    <logger name="sys-user" level="info">
-        <appender-ref ref="sys-user"/>
-    </logger>
-</configuration> 
\ No newline at end of file
diff --git a/ruoyi-applet/src/main/resources/mybatis-config.xml b/ruoyi-applet/src/main/resources/mybatis-config.xml
deleted file mode 100644
index 53c5587..0000000
--- a/ruoyi-applet/src/main/resources/mybatis-config.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE configuration  PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
-<configuration>
-
-    <settings>
-        <!-- 打印查询语句 不会写入到日志文件中-->
-        <setting name="logImpl" value="STDOUT_LOGGING"/>
-        <!--<setting name="logImpl" value="LOG4J" />-->
-        <!-- 控制全局缓存(二级缓存),按美团技术团队的说法,尽量别用缓存机制 emmmm.... -->
-        <setting name="cacheEnabled" value="true"/>
-        <!-- 延迟加载的全局开关。当开启时,所有关联对象都会延迟加载。默认 false  -->
-        <!-- <setting name="lazyLoadingEnabled" value="true"/> -->
-        <setting name="mapUnderscoreToCamelCase" value="true"/><!--是否将map下划线方式转为驼峰式命名-->
-        <!-- 当开启时,任何方法的调用都会加载该对象的所有属性。默认 false,可通过select标签的 fetchType来覆盖-->
-        <!-- <setting name="aggressiveLazyLoading" value="false"/>-->
-        <!--  Mybatis 创建具有延迟加载能力的对象所用到的代理工具,默认JAVASSIST -->
-        <!--<setting name="proxyFactory" value="CGLIB" />-->
-        <!-- 关于mybatis的一二级缓存 请参照:https://tech.meituan.com/2018/01/19/mybatis-cache.html -->
-        <!-- 一级缓存范围默认:SESSION ,此范围在复杂应用场景中可能会出现脏读数据-->
-        <!-- STATEMENT级别的缓存,使一级缓存,只针对当前执行的这一statement有效 -->
-        <!--<setting name="localCacheScope" value="STATEMENT"/>-->
-        <setting name="localCacheScope" value="STATEMENT"/>
-    </settings>
-
-</configuration>
diff --git a/ruoyi-applet/src/main/resources/mybatis/mybatis-config.xml b/ruoyi-applet/src/main/resources/mybatis/mybatis-config.xml
deleted file mode 100644
index ac47c03..0000000
--- a/ruoyi-applet/src/main/resources/mybatis/mybatis-config.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE configuration
-PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
-"http://mybatis.org/dtd/mybatis-3-config.dtd">
-<configuration>
-    <!-- 全局参数 -->
-    <settings>
-        <!-- 使全局的映射器启用或禁用缓存 -->
-        <setting name="cacheEnabled"             value="true"   />
-        <!-- 允许JDBC 支持自动生成主键 -->
-        <setting name="useGeneratedKeys"         value="true"   />
-        <!-- 配置默认的执行器.SIMPLE就是普通执行器;REUSE执行器会重用预处理语句(prepared statements);BATCH执行器将重用语句并执行批量更新 -->
-        <setting name="defaultExecutorType"      value="SIMPLE" />
-		<!-- 指定 MyBatis 所用日志的具体实现 -->
-        <setting name="logImpl"                  value="SLF4J"  />
-        <!-- 使用驼峰命名法转换字段 -->
-		<!-- <setting name="mapUnderscoreToCamelCase" value="true"/> -->
-	</settings>
-	
-</configuration>
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/config/SmsProperties.java b/ruoyi-common/src/main/java/com/ruoyi/common/config/SmsProperties.java
deleted file mode 100644
index 7a45914..0000000
--- a/ruoyi-common/src/main/java/com/ruoyi/common/config/SmsProperties.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package com.ruoyi.common.config;
-
-import lombok.Data;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.stereotype.Component;
-
-@Data
-@Component
-@ConfigurationProperties(prefix = "sms")
-public class SmsProperties {
-
-    public static final String ENABLE_KEY = "sms.enable";
-
-    private Boolean enable;
-
-    private String appId;
-
-    private String secretid;
-
-    private String secretkey;
-    /**
-     * 短信签名
-     */
-    private String sign;
-
-    /**
-     * 账单提醒 ,同一个用户离上次发送短信的最小间隔
-     * 单位分钟
-     */
-    private Integer billSmsDelayPeriod = 60;
-    /**
-     * 账单提醒 ,同一个用户离上次发送邮件的最小间隔
-     * 单位分钟
-     */
-    private Integer billMailDelayPeriod = 60;
-
-
-}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/SmsUtil.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/SmsUtil.java
deleted file mode 100644
index c558969..0000000
--- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/SmsUtil.java
+++ /dev/null
@@ -1,79 +0,0 @@
-package com.ruoyi.common.utils;
-
-import com.alibaba.fastjson2.JSON;
-import com.ruoyi.common.config.SmsProperties;
-import com.ruoyi.common.exception.ServiceException;
-import com.tencentcloudapi.common.Credential;
-import com.tencentcloudapi.common.exception.TencentCloudSDKException;
-import com.tencentcloudapi.common.profile.ClientProfile;
-import com.tencentcloudapi.common.profile.HttpProfile;
-import com.tencentcloudapi.sms.v20190711.SmsClient;
-import com.tencentcloudapi.sms.v20190711.models.SendSmsRequest;
-import com.tencentcloudapi.sms.v20190711.models.SendSmsResponse;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Component;
-
-import javax.annotation.PostConstruct;
-import javax.annotation.Resource;
-import java.util.Arrays;
-import java.util.List;
-
-@Component
-@Slf4j
-public class SmsUtil {
-
-    @Resource
-    SmsProperties smsProperties;
-    static SmsClient smsClient;
-
-
-    public SmsProperties getPro() {
-        return smsProperties;
-    }
-
-    @PostConstruct
-    public void createSmsClient() {
-        // 实例化一个认证对象,入参需要传入腾讯云账户 SecretId,SecretKey。
-        // 为了保护密钥安全,建议将密钥设置在环境变量中或者配置文件中,请参考凭证管理 https://github.com/TencentCloud/tencentcloud-sdk-java?tab=readme-ov-file#%E5%87%AD%E8%AF%81%E7%AE%A1%E7%90%86。
-        // 硬编码密钥到代码中有可能随代码泄露而暴露,有安全隐患,并不推荐。
-        // SecretId、SecretKey 查询: https://console.cloud.tencent.com/cam/capi
-        // Credential cred = new Credential("SecretId", "SecretKey");
-
-        Credential cred = new Credential(smsProperties.getSecretid(), smsProperties.getSecretkey());
-        // 实例化一个http选项,可选的,没有特殊需求可以跳过
-        HttpProfile httpProfile = new HttpProfile();
-        // 指定接入地域域名,默认就近地域接入域名为 sms.tencentcloudapi.com ,也支持指定地域域名访问,例如广州地域的域名为 sms.ap-guangzhou.tencentcloudapi.com
-        httpProfile.setEndpoint("sms.tencentcloudapi.com");
-        // 实例化一个客户端配置对象
-        ClientProfile clientProfile = new ClientProfile();
-        clientProfile.setHttpProfile(httpProfile);
-        // 实例化要请求产品(sms)的client对象,第二个参数是地域信息,可以直接填写字符串ap-guangzhou,支持的地域列表参考 https://cloud.tencent.com/document/api/382/52071#.E5.9C.B0.E5.9F.9F.E5.88.97.E8.A1.A8
-        smsClient =  new SmsClient(cred, "ap-guangzhou", clientProfile);
-    }
-
-    public boolean sendSms(String phone,String templateId,String[] param){
-        phone = phone.startsWith("+86")?phone:("+86"+phone);
-        SendSmsRequest req = new SendSmsRequest();
-        req.setSmsSdkAppid(smsProperties.getAppId());
-        req.setPhoneNumberSet(new String[]{phone});
-        req.setTemplateID(templateId);
-        req.setSign(smsProperties.getSign());
-        req.setTemplateParamSet(param);
-        req.setSenderId("");
-        req.setSessionContext("");
-        req.setExtendCode("");
-        try {
-            SendSmsResponse sendSmsResponse = smsClient.SendSms(req);
-            System.out.println(JSON.toJSONString(sendSmsResponse));
-            return true;
-        } catch (TencentCloudSDKException e) {
-            log.error("发送短信失败,{},{}",phone,param,e);
-            throw new ServiceException("发送短信失败");
-        } catch (Exception e){
-            log.error("发送短信失败1,{},{}",phone,param,e);
-            throw new ServiceException("发送短信失败1");
-        }
-    }
-
-
-}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/TSeparationOfCultureDishes.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/TSeparationOfCultureDishes.java
index f033e9f..b5083cc 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/model/TSeparationOfCultureDishes.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/model/TSeparationOfCultureDishes.java
@@ -33,8 +33,6 @@
     @TableField("id")
     private String id;
 
-
-
     @ApiModelProperty(value = "菌种选育保藏记录id")
     @TableField("breeding_preserve_id")
     private String breedingPreserveId;
@@ -46,6 +44,9 @@
     @ApiModelProperty(value = "分离菌落编号")
     @TableField("separate_bacterial_colonies_code")
     private String separateBacterialColoniesCode;
+    @ApiModelProperty(value = "2.0新增字段培养皿编号")
+    @TableField("petri_dish_number")
+    private String petriDishNumber;
 
 
 }
diff --git a/ruoyi-system/src/main/resources/mapper/system/TTrainLibraryMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TTrainLibraryMapper.xml
index f804864..b4cce6c 100644
--- a/ruoyi-system/src/main/resources/mapper/system/TTrainLibraryMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/TTrainLibraryMapper.xml
@@ -57,7 +57,7 @@
             </if>
             AND disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()}
         </where>
-        order by create_time desc
+        order by strain_code desc
     </select>
     <select id="getDetailById" resultType="com.ruoyi.system.vo.TTrainLibraryWarehousingVO">
         select t1.* from t_train_library_warehousing t1
diff --git a/ruoyi-system/target/classes/mapper/system/SysUserMapper.xml b/ruoyi-system/target/classes/mapper/system/SysUserMapper.xml
index f844487..4cfd0a7 100644
--- a/ruoyi-system/target/classes/mapper/system/SysUserMapper.xml
+++ b/ruoyi-system/target/classes/mapper/system/SysUserMapper.xml
@@ -25,6 +25,7 @@
         <result property="updateTime"   column="update_time"  />
         <result property="remark"       column="remark"       />
         <result property="ifBlack"       column="ifBlack"       />
+        <result property="allocateIp"       column="allocateIp"       />
         <association property="dept"    javaType="SysDept"         resultMap="deptResult" />
         <collection  property="roles"   javaType="java.util.List"  resultMap="RoleResult" />
     </resultMap>
@@ -51,7 +52,7 @@
 	<sql id="selectUserVo">
         select u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.avatar, u.phonenumber, u.password,
                u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark,
-               u.roleType,
+               u.roleType,u.allocateIp,
         d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.status as dept_status,
         r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.status as role_status
         from sys_user u
@@ -134,7 +135,7 @@
 		select u.user_id AS userId, u.dept_id AS deptId, u.user_name AS userName, u.nick_name AS nickName, u.email AS email, u.avatar AS avatar,
 			   u.phonenumber AS phonenumber, u.sex AS sex, u.status AS status, u.del_flag AS delFlag, u.login_ip AS loginIp,
 			   u.login_date AS loginDate, u.create_by AS createBy, u.create_time AS createTime, u.remark AS remark,u.ifBlack AS ifBlack,
-			   u.roleType,u.sign_picture as signPicture,
+			   u.roleType,u.sign_picture as signPicture,u.allocateIp,
 			   ur.role_id AS roleId,sr.role_name AS roleName,u.deptName as deptName
 		from sys_user u
 		left join sys_user_role ur on u.user_id = ur.user_id
@@ -163,7 +164,7 @@
 	</select>
     <select id="selectList" resultType="com.ruoyi.common.core.domain.entity.SysUser">
 		select u.user_id AS userId, u.dept_id AS deptId, u.user_name AS userName, u.nick_name AS nickName, u.email AS email, u.avatar AS avatar,
-			   u.phonenumber AS phonenumber, u.sex AS sex, u.status AS status, u.del_flag AS delFlag, u.login_ip AS loginIp,
+			   u.phonenumber AS phonenumber, u.sex AS sex, u.status AS status, u.del_flag AS delFlag, u.login_ip AS loginIp,u.allocateIp,
 			   u.login_date AS loginDate, u.create_by AS createBy, u.create_time AS createTime, u.remark AS remark,u.ifBlack AS ifBlack
 		from sys_user u
 		WHERE u.del_flag = 0
@@ -228,7 +229,7 @@
 			   u.phonenumber AS phonenumber, u.sex AS sex, u.status AS status, u.del_flag AS delFlag, u.login_ip AS loginIp,u.operating_time AS operatingTime,u.operating_person AS operatingPerson,
 			   u.login_date AS loginDate, u.create_by AS createBy, u.create_time AS createTime, u.remark AS remark,u.ifBlack AS ifBlack,
 			   r.role_id AS roleId, r.role_name AS roleName, r.role_key AS roleKey, r.role_sort AS roleSort, r.data_scope AS dataScope, r.status as role_status,u.deptName as deptName
-		,u.roleType as roleType
+		,u.roleType as roleType,u.allocateIp
 		from sys_user u
 		left join sys_user_role ur on u.user_id = ur.user_id
 		left join sys_role r on r.role_id = ur.role_id
@@ -307,6 +308,7 @@
  			<if test="createBy != null and createBy != ''">create_by,</if>
  			<if test="remark != null and remark != ''">remark,</if>
  			<if test="ifBlack != null">ifBlack,</if>
+ 			<if test="allocateIp != null">allocateIp,</if>
  			create_time
  		)values(
  			<if test="userId != null and userId != ''">#{userId},</if>
@@ -324,6 +326,7 @@
  			<if test="createBy != null and createBy != ''">#{createBy},</if>
  			<if test="remark != null and remark != ''">#{remark},</if>
 			<if test="ifBlack != null">#{ifBlack},</if>
+			<if test="allocateIp != null">#{allocateIp},</if>
  			sysdate()
  		)
 	</insert>
@@ -350,6 +353,7 @@
 			<if test="operatingTime != null">operating_time = #{operatingTime},</if>
 			<if test="operatingPerson != null">operating_person = #{operatingPerson},</if>
 			<if test="roleType != null">roleType = #{roleType},</if>
+			<if test="allocateIp != null">allocateIp = #{allocateIp},</if>
  			update_time = sysdate()
  		</set>
  		where user_id = #{userId}
diff --git a/ruoyi-system/target/classes/mapper/system/TPedigreeChartMapper.xml b/ruoyi-system/target/classes/mapper/system/TPedigreeChartMapper.xml
index 964e772..0285917 100644
--- a/ruoyi-system/target/classes/mapper/system/TPedigreeChartMapper.xml
+++ b/ruoyi-system/target/classes/mapper/system/TPedigreeChartMapper.xml
@@ -35,6 +35,15 @@
             <if test="query.generationType != null">
                 and generation_type = #{query.generationType}
             </if>
+            <if test="query.roleType == 1">
+                and status = 2
+            </if>
+            <if test="query.roleType == 2">
+                and status = 2
+            </if>
+            <if test="query.roleType == 3">
+                and status = 2 or status = 1
+            </if>
         <if test="query.projectIds != null and query.projectIds.size() > 0">
             and project_id in
             <foreach item="item" collection="query.projectIds" separator="," open="(" close=")" index="">
@@ -57,9 +66,18 @@
         where pedigree_chart_id = #{query.id}
           and status = 1
           and type = 1
-          and vaccinate_id is not null
-          and preserve_id is null
-        and  disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()}
+          and audit_status = 1
+          and  disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()}
+        order by create_time desc
+    </select>
+    <select id="pageListCountDetail" resultType="com.ruoyi.system.vo.TPedigreeChartDetailVO">
+        select  * from t_pedigree_chart_detail
+        where pedigree_chart_id = #{query.id}
+          and status = 1
+          and type = 2
+          and audit_status = 1
+          and  disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()}
+        order by create_time desc
     </select>
 
 
diff --git a/ruoyi-system/target/classes/mapper/system/TTrainLibraryMapper.xml b/ruoyi-system/target/classes/mapper/system/TTrainLibraryMapper.xml
index f804864..b4cce6c 100644
--- a/ruoyi-system/target/classes/mapper/system/TTrainLibraryMapper.xml
+++ b/ruoyi-system/target/classes/mapper/system/TTrainLibraryMapper.xml
@@ -57,7 +57,7 @@
             </if>
             AND disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()}
         </where>
-        order by create_time desc
+        order by strain_code desc
     </select>
     <select id="getDetailById" resultType="com.ruoyi.system.vo.TTrainLibraryWarehousingVO">
         select t1.* from t_train_library_warehousing t1

--
Gitblit v1.7.1