wukai 2 роки тому
батько
коміт
f7e3a2dfc5

+ 83 - 4
dayun-admin/src/main/java/com/jjt/biz/controller/ApiController.java

@@ -2,21 +2,20 @@ package com.jjt.biz.controller;
 
 import com.jjt.biz.domain.*;
 import com.jjt.biz.service.*;
-import com.jjt.biz.vo.BluetoothInfoVO;
-import com.jjt.biz.vo.VenueAreaVO;
-import com.jjt.biz.vo.VenueInfoVO;
-import com.jjt.biz.vo.WifiInfoVO;
+import com.jjt.biz.vo.*;
 import com.jjt.common.annotation.Log;
 import com.jjt.common.config.RuoYiConfig;
 import com.jjt.common.core.controller.BaseController;
 import com.jjt.common.core.domain.AjaxResult;
 import com.jjt.common.core.page.TableDataInfo;
+import com.jjt.common.core.redis.RedisCache;
 import com.jjt.common.enums.BusinessType;
 import com.jjt.common.utils.StringUtils;
 import com.jjt.common.utils.file.FileUploadUtils;
 import com.jjt.common.utils.file.FileUtils;
 import com.jjt.common.utils.poi.ExcelUtil;
 import com.jjt.common.utils.sign.Base64;
+import com.jjt.common.utils.spring.SpringUtils;
 import com.jjt.framework.config.ServerConfig;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -28,6 +27,7 @@ import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
 import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
 
@@ -52,6 +52,8 @@ public class ApiController extends BaseController {
     private IVenueAreaService areaService;
     @Resource
     private ServerConfig serverConfig;
+    @Resource
+    private IKeyInfoService keyInfoService;
 
     /**
      * 设备注册接口
@@ -67,39 +69,72 @@ public class ApiController extends BaseController {
      */
     @PostMapping("/wifi")
     public AjaxResult wifi(@RequestBody List<WifiInfoVO> infoList) {
+        keyInfoList = keyInfoService.selectKeyInfoList(new KeyInfo());
         infoList.forEach(vo -> {
             WifiInfo info = new WifiInfo();
             info.setDeviceId(vo.getDeviceId());
             String[] vaId = vo.getVenueId().split("-");
             Long vId = Long.parseLong(vaId[0]);
             info.setVenueId(vId);
+            info.setIsIllegal("N");
             if (vaId.length > 1) {
                 Long aId = Long.parseLong(vaId[1]);
                 info.setAreaId(aId);
             }
             if (StringUtils.isNotEmpty(vo.getAuthPage())) {
                 String page = new String(Base64.decode(vo.getAuthPage()), StandardCharsets.UTF_8);
+                IllegalVO illegal = isIllegal(page);
+                if (illegal.isIllegal()) {
+                    info.setIsIllegal("Y");
+                    info.setKeyType(illegal.getKeyType());
+                }
+                isIllegal(vo.getSsid());
                 info.setAuthPage(page);
             }
             info.setBssid(vo.getBssid());
             info.setSsid(vo.getSsid());
             info.setTime(vo.getTime());
+            IllegalVO illegal = isIllegal(vo.getSsid());
+            if (illegal.isIllegal()) {
+                info.setIsIllegal("Y");
+                info.setKeyType(illegal.getKeyType());
+            }
             wifiInfoService.insertWifiInfo(info);
         });
         return AjaxResult.success();
     }
 
+    private List<KeyInfo> keyInfoList;
+
+    private IllegalVO isIllegal(String content) {
+        IllegalVO result = new IllegalVO();
+        result.setIllegal(false);
+        for (KeyInfo keyInfo : keyInfoList) {
+            String[] keys = keyInfo.getKeyWords().split(",");
+            for (String key : keys) {
+                if (content.contains(key)) {
+                    result.setIllegal(true);
+                    result.setKeyType(keyInfo.getKeyType());
+                    return result;
+                }
+            }
+        }
+        return result;
+    }
+
     /**
      * 蓝牙上传
      */
     @PostMapping("/bluetooth")
     public AjaxResult bluetooth(@RequestBody List<BluetoothInfoVO> infoList) {
+        keyInfoList = keyInfoService.selectKeyInfoList(new KeyInfo());
         infoList.forEach(vo -> {
             BluetoothInfo info = new BluetoothInfo();
             info.setDeviceId(vo.getDeviceId());
             String[] vaId = vo.getVenueId().split("-");
             Long vId = Long.parseLong(vaId[0]);
             info.setVenueId(vId);
+            info.setIsIllegal("N");
             if (vaId.length > 1) {
                 Long aId = Long.parseLong(vaId[1]);
                 info.setAreaId(aId);
@@ -109,6 +144,17 @@ public class ApiController extends BaseController {
             info.setFileName(vo.getFileName());
             info.setFilePath(vo.getFilePath());
             info.setTime(vo.getTime());
+
+            IllegalVO illegal = isIllegal(vo.getName());
+            if (illegal.isIllegal()) {
+                info.setIsIllegal("Y");
+                info.setKeyType(illegal.getKeyType());
+            }
+            illegal = isIllegal(vo.getFileName());
+            if (illegal.isIllegal()) {
+                info.setIsIllegal("Y");
+                info.setKeyType(illegal.getKeyType());
+            }
             bluetoothInfoService.insertBluetoothInfo(info);
         });
         return AjaxResult.success();
@@ -161,4 +207,37 @@ public class ApiController extends BaseController {
         }
         return getDataTable(result);
     }
+
+    /**
+     * 获取场馆信息
+     */
+    @GetMapping("/venueA")
+    public TableDataInfo venueA() {
+        List<VenueInfo> list = venueInfoService.selectVenueInfoList(null);
+        List<VenueInfoAVO> result = new ArrayList<>();
+        VenueArea area = new VenueArea();
+        for (VenueInfo info : list) {
+            area.setVenueId(info.getVenueId());
+            List<VenueArea> areaList = areaService.selectVenueAreaList(area);
+            if (areaList.size() > 0) {
+                areaList.forEach(bean -> {
+                    VenueInfoAVO vo = new VenueInfoAVO();
+                    String id = info.getVenueId() + "-" + bean.getAreaId();
+                    String name = info.getVenueName() + "-" + bean.getAreaName();
+                    vo.setVenueId(id);
+                    vo.setVenueName(name);
+                    result.add(vo);
+                });
+            } else {
+                VenueInfoAVO vo = new VenueInfoAVO();
+                String id = info.getVenueId() + "";
+                String name = info.getVenueName();
+                vo.setVenueId(id);
+                vo.setVenueName(name);
+                result.add(vo);
+            }
+
+        }
+        return getDataTable(result);
+    }
 }

+ 98 - 0
dayun-admin/src/main/java/com/jjt/biz/controller/IndexController.java

@@ -0,0 +1,98 @@
+package com.jjt.biz.controller;
+
+import com.jjt.biz.domain.BluetoothInfo;
+import com.jjt.biz.service.IBluetoothInfoService;
+import com.jjt.common.annotation.Log;
+import com.jjt.common.core.controller.BaseController;
+import com.jjt.common.core.domain.AjaxResult;
+import com.jjt.common.core.page.TableDataInfo;
+import com.jjt.common.enums.BusinessType;
+import com.jjt.common.utils.poi.ExcelUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * 蓝牙信息Controller
+ * 
+ * @author ruoyi
+ * @date 2023-07-06
+ */
+@RestController
+@RequestMapping("/index")
+public class IndexController extends BaseController
+{
+    @Autowired
+    private IBluetoothInfoService bluetoothInfoService;
+
+    /**
+     * 查询蓝牙信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('biz:bluetoothINfo:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(BluetoothInfo bluetoothInfo)
+    {
+        startPage();
+        List<BluetoothInfo> list = bluetoothInfoService.selectBluetoothInfoList(bluetoothInfo);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出蓝牙信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('biz:bluetoothINfo:export')")
+    @Log(title = "蓝牙信息", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, BluetoothInfo bluetoothInfo)
+    {
+        List<BluetoothInfo> list = bluetoothInfoService.selectBluetoothInfoList(bluetoothInfo);
+        ExcelUtil<BluetoothInfo> util = new ExcelUtil<BluetoothInfo>(BluetoothInfo.class);
+        util.exportExcel(response, list, "蓝牙信息数据");
+    }
+
+    /**
+     * 获取蓝牙信息详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('biz:bluetoothINfo:query')")
+    @GetMapping(value = "/{bInfoId}")
+    public AjaxResult getInfo(@PathVariable("bInfoId") Long bInfoId)
+    {
+        return success(bluetoothInfoService.selectBluetoothInfoByBInfoId(bInfoId));
+    }
+
+    /**
+     * 新增蓝牙信息
+     */
+    @PreAuthorize("@ss.hasPermi('biz:bluetoothINfo:add')")
+    @Log(title = "蓝牙信息", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody BluetoothInfo bluetoothInfo)
+    {
+        return toAjax(bluetoothInfoService.insertBluetoothInfo(bluetoothInfo));
+    }
+
+    /**
+     * 修改蓝牙信息
+     */
+    @PreAuthorize("@ss.hasPermi('biz:bluetoothINfo:edit')")
+    @Log(title = "蓝牙信息", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody BluetoothInfo bluetoothInfo)
+    {
+        return toAjax(bluetoothInfoService.updateBluetoothInfo(bluetoothInfo));
+    }
+
+    /**
+     * 删除蓝牙信息
+     */
+    @PreAuthorize("@ss.hasPermi('biz:bluetoothINfo:remove')")
+    @Log(title = "蓝牙信息", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{bInfoIds}")
+    public AjaxResult remove(@PathVariable Long[] bInfoIds)
+    {
+        return toAjax(bluetoothInfoService.deleteBluetoothInfoByBInfoIds(bInfoIds));
+    }
+}

+ 42 - 0
dayun-admin/src/main/java/com/jjt/biz/vo/IllegalVO.java

@@ -0,0 +1,42 @@
+package com.jjt.biz.vo;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+
+/**
+ * IllegalVO IllegalVO
+ *
+ * @author ruoyi
+ * @date 2023-07-06
+ */
+public class IllegalVO {
+    private static final long serialVersionUID = 1L;
+    private Boolean isIllegal;
+    private String keyType;
+
+    public boolean isIllegal() {
+        return isIllegal;
+    }
+
+    public void setIllegal(boolean illegal) {
+        isIllegal = illegal;
+    }
+
+    public String getKeyType() {
+        return keyType;
+    }
+
+    public void setKeyType(String keyType) {
+        this.keyType = keyType;
+    }
+
+    @Override
+    public String toString() {
+        return "IllegalVO{" +
+                "isIllegal=" + isIllegal +
+                ", keyType='" + keyType + '\'' +
+                '}';
+    }
+}

+ 51 - 0
dayun-admin/src/main/java/com/jjt/biz/vo/VenueInfoAVO.java

@@ -0,0 +1,51 @@
+package com.jjt.biz.vo;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.List;
+
+/**
+ * 场馆基本信息对象 venue_info
+ *
+ * @author ruoyi
+ * @date 2023-07-06
+ */
+public class VenueInfoAVO {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 场馆ID
+     */
+    private String venueId;
+
+    /**
+     * 场馆名称
+     */
+    private String venueName;
+
+    public void setVenueId(String venueId) {
+        this.venueId = venueId;
+    }
+
+    public String getVenueId() {
+        return venueId;
+    }
+
+    public void setVenueName(String venueName) {
+        this.venueName = venueName;
+    }
+
+    public String getVenueName() {
+        return venueName;
+    }
+
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+                .append("venueId", getVenueId())
+                .append("venueName", getVenueName())
+                .toString();
+    }
+}

+ 39 - 1
dayun-admin/src/main/resources/application-dev.yml

@@ -1,5 +1,43 @@
-# 数据源配置
+# 项目相关配置
+ruoyi:
+  # 名称
+  name: RuoYi
+  # 版本
+  version: 3.8.6
+  # 版权年份
+  copyrightYear: 2023
+  # 实例演示开关
+  demoEnabled: false
+  # 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath)
+  profile: D:/ruoyi/uploadPath
+  # 获取ip地址开关
+  addressEnabled: false
+  # 验证码类型 math 数字计算 char 字符验证
+  captchaType: math
 spring:
+  # redis 配置
+  redis:
+    # 地址
+    host: 192.168.188.88
+    # 端口,默认为6379
+    port: 6379
+    # 数据库索引
+    database: 0
+    # 密码
+    password: redis123
+    # 连接超时时间
+    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

+ 98 - 60
dayun-admin/src/main/resources/application-prod.yml

@@ -1,61 +1,99 @@
-# 数据源配置
+# 项目相关配置
+ruoyi:
+  # 名称
+  name: RuoYi
+  # 版本
+  version: 3.8.6
+  # 版权年份
+  copyrightYear: 2023
+  # 实例演示开关
+  demoEnabled: false
+  # 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath)
+  profile: /opt/dayun/uploadPath
+  # 获取ip地址开关
+  addressEnabled: false
+  # 验证码类型 math 数字计算 char 字符验证
+  captchaType: math
 spring:
-    datasource:
-        type: com.alibaba.druid.pool.DruidDataSource
-        driverClassName: com.mysql.cj.jdbc.Driver
-        druid:
-            # 主库数据源
-            master:
-                url: jdbc:mysql://localhost:3306/ry-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
-                username: root
-                password: password
-            # 从库数据源
-            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
+  # redis 配置
+  redis:
+    # 地址
+    host: 127.0.0.1
+    # 端口,默认为6379
+    port: 6379
+    # 数据库索引
+    database: 0
+    # 密码
+    password:
+    # 连接超时时间
+    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://127.0.0.1:3306/dayun?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+        username: root
+        password: 2096094ba37529f2
+      # 从库数据源
+      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

+ 0 - 39
dayun-admin/src/main/resources/application.yml

@@ -1,20 +1,3 @@
-# 项目相关配置
-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
@@ -67,28 +50,6 @@ spring:
     restart:
       # 热部署开关
       enabled: true
-  # redis 配置
-  redis:
-    # 地址
-    host: 192.168.188.88
-    # 端口,默认为6379
-    port: 6379
-    # 数据库索引
-    database: 0
-    # 密码
-    password: redis123
-    # 连接超时时间
-    timeout: 10s
-    lettuce:
-      pool:
-        # 连接池中的最小空闲连接
-        min-idle: 0
-        # 连接池中的最大空闲连接
-        max-idle: 8
-        # 连接池的最大数据库连接数
-        max-active: 8
-        # #连接池最大阻塞等待时间(使用负值表示没有限制)
-        max-wait: -1ms
 
 # token配置
 token:

+ 19 - 208
dayun-admin/src/test/java/Test.java

@@ -7,217 +7,28 @@ public class Test {
         String yy = Base64.encode(xx.getBytes(StandardCharsets.UTF_8));
         System.err.println(yy);
 
-        String zz = new String(Base64.decode(yy), StandardCharsets.UTF_8);
-        System.err.println(zz);
+//        String zz = new String(Base64.decode(yy), StandardCharsets.UTF_8);
+//        System.err.println(zz);
     }
 
     static String xx = "<!DOCTYPE html>\n" +
             "<html>\n" +
-            "  <head>\n" +
-            "    <meta charset=\"utf-8\">\n" +
-            "    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge,chrome=1\">\n" +
-            "    <meta name=\"renderer\" content=\"webkit\">\n" +
-            "    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no\">\n" +
-            "    <link rel=\"icon\" href=\"<%= BASE_URL %>favicon.ico\">\n" +
-            "    <title><%= webpackConfig.name %></title>\n" +
-            "    <!--[if lt IE 11]><script>window.location.href='/html/ie.html';</script><![endif]-->\n" +
-            "\t  <style>\n" +
-            "    html,\n" +
-            "    body,\n" +
-            "    #app {\n" +
-            "      height: 100%;\n" +
-            "      margin: 0px;\n" +
-            "      padding: 0px;\n" +
-            "    }\n" +
-            "    .chromeframe {\n" +
-            "      margin: 0.2em 0;\n" +
-            "      background: #ccc;\n" +
-            "      color: #000;\n" +
-            "      padding: 0.2em 0;\n" +
-            "    }\n" +
-            "\n" +
-            "    #loader-wrapper {\n" +
-            "      position: fixed;\n" +
-            "      top: 0;\n" +
-            "      left: 0;\n" +
-            "      width: 100%;\n" +
-            "      height: 100%;\n" +
-            "      z-index: 999999;\n" +
-            "    }\n" +
-            "\n" +
-            "    #loader {\n" +
-            "      display: block;\n" +
-            "      position: relative;\n" +
-            "      left: 50%;\n" +
-            "      top: 50%;\n" +
-            "      width: 150px;\n" +
-            "      height: 150px;\n" +
-            "      margin: -75px 0 0 -75px;\n" +
-            "      border-radius: 50%;\n" +
-            "      border: 3px solid transparent;\n" +
-            "      border-top-color: #FFF;\n" +
-            "      -webkit-animation: spin 2s linear infinite;\n" +
-            "      -ms-animation: spin 2s linear infinite;\n" +
-            "      -moz-animation: spin 2s linear infinite;\n" +
-            "      -o-animation: spin 2s linear infinite;\n" +
-            "      animation: spin 2s linear infinite;\n" +
-            "      z-index: 1001;\n" +
-            "    }\n" +
-            "\n" +
-            "    #loader:before {\n" +
-            "      content: \"\";\n" +
-            "      position: absolute;\n" +
-            "      top: 5px;\n" +
-            "      left: 5px;\n" +
-            "      right: 5px;\n" +
-            "      bottom: 5px;\n" +
-            "      border-radius: 50%;\n" +
-            "      border: 3px solid transparent;\n" +
-            "      border-top-color: #FFF;\n" +
-            "      -webkit-animation: spin 3s linear infinite;\n" +
-            "      -moz-animation: spin 3s linear infinite;\n" +
-            "      -o-animation: spin 3s linear infinite;\n" +
-            "      -ms-animation: spin 3s linear infinite;\n" +
-            "      animation: spin 3s linear infinite;\n" +
-            "    }\n" +
-            "\n" +
-            "    #loader:after {\n" +
-            "      content: \"\";\n" +
-            "      position: absolute;\n" +
-            "      top: 15px;\n" +
-            "      left: 15px;\n" +
-            "      right: 15px;\n" +
-            "      bottom: 15px;\n" +
-            "      border-radius: 50%;\n" +
-            "      border: 3px solid transparent;\n" +
-            "      border-top-color: #FFF;\n" +
-            "      -moz-animation: spin 1.5s linear infinite;\n" +
-            "      -o-animation: spin 1.5s linear infinite;\n" +
-            "      -ms-animation: spin 1.5s linear infinite;\n" +
-            "      -webkit-animation: spin 1.5s linear infinite;\n" +
-            "      animation: spin 1.5s linear infinite;\n" +
-            "    }\n" +
-            "\n" +
-            "\n" +
-            "    @-webkit-keyframes spin {\n" +
-            "      0% {\n" +
-            "        -webkit-transform: rotate(0deg);\n" +
-            "        -ms-transform: rotate(0deg);\n" +
-            "        transform: rotate(0deg);\n" +
-            "      }\n" +
-            "      100% {\n" +
-            "        -webkit-transform: rotate(360deg);\n" +
-            "        -ms-transform: rotate(360deg);\n" +
-            "        transform: rotate(360deg);\n" +
-            "      }\n" +
-            "    }\n" +
-            "\n" +
-            "    @keyframes spin {\n" +
-            "      0% {\n" +
-            "        -webkit-transform: rotate(0deg);\n" +
-            "        -ms-transform: rotate(0deg);\n" +
-            "        transform: rotate(0deg);\n" +
-            "      }\n" +
-            "      100% {\n" +
-            "        -webkit-transform: rotate(360deg);\n" +
-            "        -ms-transform: rotate(360deg);\n" +
-            "        transform: rotate(360deg);\n" +
-            "      }\n" +
-            "    }\n" +
-            "\n" +
-            "\n" +
-            "    #loader-wrapper .loader-section {\n" +
-            "      position: fixed;\n" +
-            "      top: 0;\n" +
-            "      width: 51%;\n" +
-            "      height: 100%;\n" +
-            "      background: #7171C6;\n" +
-            "      z-index: 1000;\n" +
-            "      -webkit-transform: translateX(0);\n" +
-            "      -ms-transform: translateX(0);\n" +
-            "      transform: translateX(0);\n" +
-            "    }\n" +
-            "\n" +
-            "    #loader-wrapper .loader-section.section-left {\n" +
-            "      left: 0;\n" +
-            "    }\n" +
-            "\n" +
-            "    #loader-wrapper .loader-section.section-right {\n" +
-            "      right: 0;\n" +
-            "    }\n" +
-            "\n" +
-            "\n" +
-            "    .loaded #loader-wrapper .loader-section.section-left {\n" +
-            "      -webkit-transform: translateX(-100%);\n" +
-            "      -ms-transform: translateX(-100%);\n" +
-            "      transform: translateX(-100%);\n" +
-            "      -webkit-transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);\n" +
-            "      transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);\n" +
-            "    }\n" +
-            "\n" +
-            "    .loaded #loader-wrapper .loader-section.section-right {\n" +
-            "      -webkit-transform: translateX(100%);\n" +
-            "      -ms-transform: translateX(100%);\n" +
-            "      transform: translateX(100%);\n" +
-            "      -webkit-transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);\n" +
-            "      transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);\n" +
-            "    }\n" +
-            "\n" +
-            "    .loaded #loader {\n" +
-            "      opacity: 0;\n" +
-            "      -webkit-transition: all 0.3s ease-out;\n" +
-            "      transition: all 0.3s ease-out;\n" +
-            "    }\n" +
-            "\n" +
-            "    .loaded #loader-wrapper {\n" +
-            "      visibility: hidden;\n" +
-            "      -webkit-transform: translateY(-100%);\n" +
-            "      -ms-transform: translateY(-100%);\n" +
-            "      transform: translateY(-100%);\n" +
-            "      -webkit-transition: all 0.3s 1s ease-out;\n" +
-            "      transition: all 0.3s 1s ease-out;\n" +
-            "    }\n" +
-            "\n" +
-            "    .no-js #loader-wrapper {\n" +
-            "      display: none;\n" +
-            "    }\n" +
-            "\n" +
-            "    .no-js h1 {\n" +
-            "      color: #222222;\n" +
-            "    }\n" +
-            "\n" +
-            "    #loader-wrapper .load_title {\n" +
-            "      font-family: 'Open Sans';\n" +
-            "      color: #FFF;\n" +
-            "      font-size: 19px;\n" +
-            "      width: 100%;\n" +
-            "      text-align: center;\n" +
-            "      z-index: 9999999999999;\n" +
-            "      position: absolute;\n" +
-            "      top: 60%;\n" +
-            "      opacity: 1;\n" +
-            "      line-height: 30px;\n" +
-            "    }\n" +
-            "\n" +
-            "    #loader-wrapper .load_title span {\n" +
-            "      font-weight: normal;\n" +
-            "      font-style: italic;\n" +
-            "      font-size: 13px;\n" +
-            "      color: #FFF;\n" +
-            "      opacity: 0.5;\n" +
-            "    }\n" +
-            "  </style>\n" +
-            "  </head>\n" +
-            "  <body>\n" +
-            "    <div id=\"app\">\n" +
-            "\t    <div id=\"loader-wrapper\">\n" +
-            "\t\t    <div id=\"loader\"></div>\n" +
-            "\t\t    <div class=\"loader-section section-left\"></div>\n" +
-            "\t\t    <div class=\"loader-section section-right\"></div>\n" +
-            "\t\t    <div class=\"load_title\">正在加载系统资源,请耐心等待</div>\n" +
-            "        </div>\n" +
-            "\t</div>\n" +
-            "  </body>\n" +
-            "</html>\n";
+            "\t<head>\n" +
+            "\t\t<meta charset=\"utf-8\">\n" +
+            "\t\t<title></title>\n" +
+            "\t</head>\n" +
+            "\t<body>\n" +
+            "\t\t<font color=\"red\">我是一</font><br/>\n" +
+            "\t\t<font color=\"blue\">我是二</font><br/>\n" +
+            "\t\t<font color=\"red\">我是3</font><br/>\n" +
+            "\t\t<font color=\"red\">我是4</font><br/>\n" +
+            "\t\t<font color=\"red\">我是5</font><br/>\n" +
+            "\t\t<h1>我是标题哎</h1>\n" +
+            "\t\t<h1>我是标题哎</h1>\n" +
+            "\t\t<h1>我是标题哎</h1>\n" +
+            "\t\t<h1>我是标题哎</h1>\n" +
+            "\t\t<h1 style=\"color:red\">我是红色标题哎</h1>\n" +
+            "\t</body>\n" +
+            "</html>";
 
 }