正在显示
44 个修改的文件
包含
4830 行增加
和
0 行删除
.idea/compiler.xml
0 → 100644
| 1 | +<?xml version="1.0" encoding="UTF-8"?> | ||
| 2 | +<project version="4"> | ||
| 3 | + <component name="CompilerConfiguration"> | ||
| 4 | + <annotationProcessing> | ||
| 5 | + <profile name="Maven default annotation processors profile" enabled="true"> | ||
| 6 | + <sourceOutputDir name="target/generated-sources/annotations" /> | ||
| 7 | + <sourceTestOutputDir name="target/generated-test-sources/test-annotations" /> | ||
| 8 | + <outputRelativeToContentRoot value="true" /> | ||
| 9 | + <module name="ruoyi-framework" /> | ||
| 10 | + <module name="ruoyi-generator" /> | ||
| 11 | + <module name="ruoyi-common" /> | ||
| 12 | + <module name="lh-mqtt-service" /> | ||
| 13 | + <module name="ruoyi-system" /> | ||
| 14 | + <module name="lh-admin" /> | ||
| 15 | + </profile> | ||
| 16 | + </annotationProcessing> | ||
| 17 | + </component> | ||
| 18 | +</project> |
.idea/encodings.xml
0 → 100644
| 1 | +<?xml version="1.0" encoding="UTF-8"?> | ||
| 2 | +<project version="4"> | ||
| 3 | + <component name="Encoding"> | ||
| 4 | + <file url="file://$PROJECT_DIR$" charset="UTF-8" /> | ||
| 5 | + <file url="file://$PROJECT_DIR$/lh-admin" charset="UTF-8" /> | ||
| 6 | + <file url="file://$PROJECT_DIR$/lh-mqtt-service" charset="UTF-8" /> | ||
| 7 | + <file url="file://$PROJECT_DIR$/ruoyi-common" charset="UTF-8" /> | ||
| 8 | + <file url="file://$PROJECT_DIR$/ruoyi-framework" charset="UTF-8" /> | ||
| 9 | + <file url="file://$PROJECT_DIR$/ruoyi-generator" charset="UTF-8" /> | ||
| 10 | + <file url="file://$PROJECT_DIR$/ruoyi-system" charset="UTF-8" /> | ||
| 11 | + </component> | ||
| 12 | +</project> |
.idea/kotlinc.xml
0 → 100644
.idea/misc.xml
0 → 100644
| 1 | +<?xml version="1.0" encoding="UTF-8"?> | ||
| 2 | +<project version="4"> | ||
| 3 | + <component name="ExternalStorageConfigurationManager" enabled="true" /> | ||
| 4 | + <component name="MavenProjectsManager"> | ||
| 5 | + <option name="originalFiles"> | ||
| 6 | + <list> | ||
| 7 | + <option value="$PROJECT_DIR$/pom.xml" /> | ||
| 8 | + </list> | ||
| 9 | + </option> | ||
| 10 | + </component> | ||
| 11 | + <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8" project-jdk-type="JavaSDK"> | ||
| 12 | + <output url="file://$PROJECT_DIR$/out" /> | ||
| 13 | + </component> | ||
| 14 | +</project> |
.idea/uiDesigner.xml
0 → 100644
| 1 | +<?xml version="1.0" encoding="UTF-8"?> | ||
| 2 | +<project version="4"> | ||
| 3 | + <component name="Palette2"> | ||
| 4 | + <group name="Swing"> | ||
| 5 | + <item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.png" removable="false" auto-create-binding="false" can-attach-label="false"> | ||
| 6 | + <default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" /> | ||
| 7 | + </item> | ||
| 8 | + <item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.png" removable="false" auto-create-binding="false" can-attach-label="false"> | ||
| 9 | + <default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" /> | ||
| 10 | + </item> | ||
| 11 | + <item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.png" removable="false" auto-create-binding="false" can-attach-label="false"> | ||
| 12 | + <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" /> | ||
| 13 | + </item> | ||
| 14 | + <item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.png" removable="false" auto-create-binding="false" can-attach-label="true"> | ||
| 15 | + <default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" /> | ||
| 16 | + </item> | ||
| 17 | + <item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.png" removable="false" auto-create-binding="true" can-attach-label="false"> | ||
| 18 | + <default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" /> | ||
| 19 | + <initial-values> | ||
| 20 | + <property name="text" value="Button" /> | ||
| 21 | + </initial-values> | ||
| 22 | + </item> | ||
| 23 | + <item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.png" removable="false" auto-create-binding="true" can-attach-label="false"> | ||
| 24 | + <default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" /> | ||
| 25 | + <initial-values> | ||
| 26 | + <property name="text" value="RadioButton" /> | ||
| 27 | + </initial-values> | ||
| 28 | + </item> | ||
| 29 | + <item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.png" removable="false" auto-create-binding="true" can-attach-label="false"> | ||
| 30 | + <default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" /> | ||
| 31 | + <initial-values> | ||
| 32 | + <property name="text" value="CheckBox" /> | ||
| 33 | + </initial-values> | ||
| 34 | + </item> | ||
| 35 | + <item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.png" removable="false" auto-create-binding="false" can-attach-label="false"> | ||
| 36 | + <default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" /> | ||
| 37 | + <initial-values> | ||
| 38 | + <property name="text" value="Label" /> | ||
| 39 | + </initial-values> | ||
| 40 | + </item> | ||
| 41 | + <item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.png" removable="false" auto-create-binding="true" can-attach-label="true"> | ||
| 42 | + <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1"> | ||
| 43 | + <preferred-size width="150" height="-1" /> | ||
| 44 | + </default-constraints> | ||
| 45 | + </item> | ||
| 46 | + <item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.png" removable="false" auto-create-binding="true" can-attach-label="true"> | ||
| 47 | + <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1"> | ||
| 48 | + <preferred-size width="150" height="-1" /> | ||
| 49 | + </default-constraints> | ||
| 50 | + </item> | ||
| 51 | + <item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.png" removable="false" auto-create-binding="true" can-attach-label="true"> | ||
| 52 | + <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1"> | ||
| 53 | + <preferred-size width="150" height="-1" /> | ||
| 54 | + </default-constraints> | ||
| 55 | + </item> | ||
| 56 | + <item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.png" removable="false" auto-create-binding="true" can-attach-label="true"> | ||
| 57 | + <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3"> | ||
| 58 | + <preferred-size width="150" height="50" /> | ||
| 59 | + </default-constraints> | ||
| 60 | + </item> | ||
| 61 | + <item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.png" removable="false" auto-create-binding="true" can-attach-label="true"> | ||
| 62 | + <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3"> | ||
| 63 | + <preferred-size width="150" height="50" /> | ||
| 64 | + </default-constraints> | ||
| 65 | + </item> | ||
| 66 | + <item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.png" removable="false" auto-create-binding="true" can-attach-label="true"> | ||
| 67 | + <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3"> | ||
| 68 | + <preferred-size width="150" height="50" /> | ||
| 69 | + </default-constraints> | ||
| 70 | + </item> | ||
| 71 | + <item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.png" removable="false" auto-create-binding="true" can-attach-label="true"> | ||
| 72 | + <default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" /> | ||
| 73 | + </item> | ||
| 74 | + <item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.png" removable="false" auto-create-binding="true" can-attach-label="false"> | ||
| 75 | + <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3"> | ||
| 76 | + <preferred-size width="150" height="50" /> | ||
| 77 | + </default-constraints> | ||
| 78 | + </item> | ||
| 79 | + <item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.png" removable="false" auto-create-binding="true" can-attach-label="false"> | ||
| 80 | + <default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3"> | ||
| 81 | + <preferred-size width="150" height="50" /> | ||
| 82 | + </default-constraints> | ||
| 83 | + </item> | ||
| 84 | + <item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.png" removable="false" auto-create-binding="true" can-attach-label="false"> | ||
| 85 | + <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3"> | ||
| 86 | + <preferred-size width="150" height="50" /> | ||
| 87 | + </default-constraints> | ||
| 88 | + </item> | ||
| 89 | + <item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.png" removable="false" auto-create-binding="true" can-attach-label="false"> | ||
| 90 | + <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3"> | ||
| 91 | + <preferred-size width="200" height="200" /> | ||
| 92 | + </default-constraints> | ||
| 93 | + </item> | ||
| 94 | + <item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.png" removable="false" auto-create-binding="false" can-attach-label="false"> | ||
| 95 | + <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3"> | ||
| 96 | + <preferred-size width="200" height="200" /> | ||
| 97 | + </default-constraints> | ||
| 98 | + </item> | ||
| 99 | + <item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.png" removable="false" auto-create-binding="true" can-attach-label="true"> | ||
| 100 | + <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" /> | ||
| 101 | + </item> | ||
| 102 | + <item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.png" removable="false" auto-create-binding="true" can-attach-label="false"> | ||
| 103 | + <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" /> | ||
| 104 | + </item> | ||
| 105 | + <item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.png" removable="false" auto-create-binding="false" can-attach-label="false"> | ||
| 106 | + <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" /> | ||
| 107 | + </item> | ||
| 108 | + <item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.png" removable="false" auto-create-binding="true" can-attach-label="false"> | ||
| 109 | + <default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" /> | ||
| 110 | + </item> | ||
| 111 | + <item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.png" removable="false" auto-create-binding="false" can-attach-label="false"> | ||
| 112 | + <default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1"> | ||
| 113 | + <preferred-size width="-1" height="20" /> | ||
| 114 | + </default-constraints> | ||
| 115 | + </item> | ||
| 116 | + <item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.png" removable="false" auto-create-binding="false" can-attach-label="false"> | ||
| 117 | + <default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" /> | ||
| 118 | + </item> | ||
| 119 | + <item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.png" removable="false" auto-create-binding="true" can-attach-label="false"> | ||
| 120 | + <default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" /> | ||
| 121 | + </item> | ||
| 122 | + </group> | ||
| 123 | + </component> | ||
| 124 | +</project> |
.idea/vcs.xml
0 → 100644
.idea/workspace.xml
0 → 100644
| 1 | +<?xml version="1.0" encoding="UTF-8"?> | ||
| 2 | +<project version="4"> | ||
| 3 | + <component name="ChangeListManager"> | ||
| 4 | + <list default="true" id="3171133d-910b-4101-8a15-1b79715636c9" name="Default Changelist" comment=""> | ||
| 5 | + <change afterPath="$PROJECT_DIR$/.idea/compiler.xml" afterDir="false" /> | ||
| 6 | + <change afterPath="$PROJECT_DIR$/.idea/encodings.xml" afterDir="false" /> | ||
| 7 | + <change afterPath="$PROJECT_DIR$/.idea/kotlinc.xml" afterDir="false" /> | ||
| 8 | + <change afterPath="$PROJECT_DIR$/.idea/misc.xml" afterDir="false" /> | ||
| 9 | + <change afterPath="$PROJECT_DIR$/.idea/uiDesigner.xml" afterDir="false" /> | ||
| 10 | + <change afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" /> | ||
| 11 | + <change afterPath="$PROJECT_DIR$/Luhui.iml" afterDir="false" /> | ||
| 12 | + <change afterPath="$PROJECT_DIR$/configs/dbcpconfig.properties" afterDir="false" /> | ||
| 13 | + <change afterPath="$PROJECT_DIR$/lh-admin/lh-admin.iml" afterDir="false" /> | ||
| 14 | + <change afterPath="$PROJECT_DIR$/lh-admin/pom.xml" afterDir="false" /> | ||
| 15 | + <change afterPath="$PROJECT_DIR$/lh-admin/src/main/java/com/zhonglai/luhui/admin/AdminApplication.java" afterDir="false" /> | ||
| 16 | + <change afterPath="$PROJECT_DIR$/lh-admin/src/main/java/com/zhonglai/luhui/admin/config/SwaggerConfig.java" afterDir="false" /> | ||
| 17 | + <change afterPath="$PROJECT_DIR$/lh-admin/src/main/java/com/zhonglai/luhui/admin/controller/common/CaptchaController.java" afterDir="false" /> | ||
| 18 | + <change afterPath="$PROJECT_DIR$/lh-admin/src/main/java/com/zhonglai/luhui/admin/controller/common/CommonController.java" afterDir="false" /> | ||
| 19 | + <change afterPath="$PROJECT_DIR$/lh-admin/src/main/java/com/zhonglai/luhui/admin/controller/iot/IotDeviceController.java" afterDir="false" /> | ||
| 20 | + <change afterPath="$PROJECT_DIR$/lh-admin/src/main/java/com/zhonglai/luhui/admin/controller/iot/IotPermissionController.java" afterDir="false" /> | ||
| 21 | + <change afterPath="$PROJECT_DIR$/lh-admin/src/main/java/com/zhonglai/luhui/admin/controller/iot/IotRoleController.java" afterDir="false" /> | ||
| 22 | + <change afterPath="$PROJECT_DIR$/lh-admin/src/main/java/com/zhonglai/luhui/admin/controller/iot/IotTerminalController.java" afterDir="false" /> | ||
| 23 | + <change afterPath="$PROJECT_DIR$/lh-admin/src/main/java/com/zhonglai/luhui/admin/controller/iot/IotThingsModelController.java" afterDir="false" /> | ||
| 24 | + <change afterPath="$PROJECT_DIR$/lh-admin/src/main/java/com/zhonglai/luhui/admin/controller/iot/IotUserController.java" afterDir="false" /> | ||
| 25 | + <change afterPath="$PROJECT_DIR$/lh-admin/src/main/java/com/zhonglai/luhui/admin/controller/monitor/CacheController.java" afterDir="false" /> | ||
| 26 | + <change afterPath="$PROJECT_DIR$/lh-admin/src/main/java/com/zhonglai/luhui/admin/controller/monitor/ServerController.java" afterDir="false" /> | ||
| 27 | + <change afterPath="$PROJECT_DIR$/lh-admin/src/main/java/com/zhonglai/luhui/admin/controller/monitor/SysLogininforController.java" afterDir="false" /> | ||
| 28 | + <change afterPath="$PROJECT_DIR$/lh-admin/src/main/java/com/zhonglai/luhui/admin/controller/monitor/SysOperlogController.java" afterDir="false" /> | ||
| 29 | + <change afterPath="$PROJECT_DIR$/lh-admin/src/main/java/com/zhonglai/luhui/admin/controller/monitor/SysUserOnlineController.java" afterDir="false" /> | ||
| 30 | + <change afterPath="$PROJECT_DIR$/lh-admin/src/main/java/com/zhonglai/luhui/admin/controller/system/SysConfigController.java" afterDir="false" /> | ||
| 31 | + <change afterPath="$PROJECT_DIR$/lh-admin/src/main/java/com/zhonglai/luhui/admin/controller/system/SysDeptController.java" afterDir="false" /> | ||
| 32 | + <change afterPath="$PROJECT_DIR$/lh-admin/src/main/java/com/zhonglai/luhui/admin/controller/system/SysDictDataController.java" afterDir="false" /> | ||
| 33 | + <change afterPath="$PROJECT_DIR$/lh-admin/src/main/java/com/zhonglai/luhui/admin/controller/system/SysDictTypeController.java" afterDir="false" /> | ||
| 34 | + <change afterPath="$PROJECT_DIR$/lh-admin/src/main/java/com/zhonglai/luhui/admin/controller/system/SysIndexController.java" afterDir="false" /> | ||
| 35 | + <change afterPath="$PROJECT_DIR$/lh-admin/src/main/java/com/zhonglai/luhui/admin/controller/system/SysLoginController.java" afterDir="false" /> | ||
| 36 | + <change afterPath="$PROJECT_DIR$/lh-admin/src/main/java/com/zhonglai/luhui/admin/controller/system/SysMenuController.java" afterDir="false" /> | ||
| 37 | + <change afterPath="$PROJECT_DIR$/lh-admin/src/main/java/com/zhonglai/luhui/admin/controller/system/SysNoticeController.java" afterDir="false" /> | ||
| 38 | + <change afterPath="$PROJECT_DIR$/lh-admin/src/main/java/com/zhonglai/luhui/admin/controller/system/SysPostController.java" afterDir="false" /> | ||
| 39 | + <change afterPath="$PROJECT_DIR$/lh-admin/src/main/java/com/zhonglai/luhui/admin/controller/system/SysProfileController.java" afterDir="false" /> | ||
| 40 | + <change afterPath="$PROJECT_DIR$/lh-admin/src/main/java/com/zhonglai/luhui/admin/controller/system/SysRegisterController.java" afterDir="false" /> | ||
| 41 | + <change afterPath="$PROJECT_DIR$/lh-admin/src/main/java/com/zhonglai/luhui/admin/controller/system/SysRoleController.java" afterDir="false" /> | ||
| 42 | + <change afterPath="$PROJECT_DIR$/lh-admin/src/main/java/com/zhonglai/luhui/admin/controller/system/SysUserController.java" afterDir="false" /> | ||
| 43 | + <change afterPath="$PROJECT_DIR$/lh-admin/src/main/resources/META-INF/spring-devtools.properties" afterDir="false" /> | ||
| 44 | + <change afterPath="$PROJECT_DIR$/lh-admin/src/main/resources/application-druid.yml" afterDir="false" /> | ||
| 45 | + <change afterPath="$PROJECT_DIR$/lh-admin/src/main/resources/application.yml" afterDir="false" /> | ||
| 46 | + <change afterPath="$PROJECT_DIR$/lh-admin/src/main/resources/banner.txt" afterDir="false" /> | ||
| 47 | + <change afterPath="$PROJECT_DIR$/lh-admin/src/main/resources/i18n/messages.properties" afterDir="false" /> | ||
| 48 | + <change afterPath="$PROJECT_DIR$/lh-admin/src/main/resources/logback.xml" afterDir="false" /> | ||
| 49 | + <change afterPath="$PROJECT_DIR$/lh-admin/src/main/resources/mybatis/mybatis-config.xml" afterDir="false" /> | ||
| 50 | + <change afterPath="$PROJECT_DIR$/lh-admin/src/main/resources/package.xml" afterDir="false" /> | ||
| 51 | + <change afterPath="$PROJECT_DIR$/lh-mqtt-service/lh-mqtt-service.iml" afterDir="false" /> | ||
| 52 | + <change afterPath="$PROJECT_DIR$/lh-mqtt-service/pom.xml" afterDir="false" /> | ||
| 53 | + <change afterPath="$PROJECT_DIR$/lh-mqtt-service/src/main/java/com/zhonglai/luhui/mqtt/MqttApplication.java" afterDir="false" /> | ||
| 54 | + <change afterPath="$PROJECT_DIR$/lh-mqtt-service/src/main/java/com/zhonglai/luhui/mqtt/agreement/PutReqAgreement.java" afterDir="false" /> | ||
| 55 | + <change afterPath="$PROJECT_DIR$/lh-mqtt-service/src/main/java/com/zhonglai/luhui/mqtt/config/SwaggerConfig.java" afterDir="false" /> | ||
| 56 | + <change afterPath="$PROJECT_DIR$/lh-mqtt-service/src/main/java/com/zhonglai/luhui/mqtt/controller/DeviceController.java" afterDir="false" /> | ||
| 57 | + <change afterPath="$PROJECT_DIR$/lh-mqtt-service/src/main/java/com/zhonglai/luhui/mqtt/dto/PutDto.java" afterDir="false" /> | ||
| 58 | + <change afterPath="$PROJECT_DIR$/lh-mqtt-service/src/main/java/com/zhonglai/luhui/mqtt/dto/PutReqDto.java" afterDir="false" /> | ||
| 59 | + <change afterPath="$PROJECT_DIR$/lh-mqtt-service/src/main/java/com/zhonglai/luhui/mqtt/service/CacheServiceImpl.java" afterDir="false" /> | ||
| 60 | + <change afterPath="$PROJECT_DIR$/lh-mqtt-service/src/main/java/com/zhonglai/luhui/mqtt/service/DataPersistenceServiceImpl.java" afterDir="false" /> | ||
| 61 | + <change afterPath="$PROJECT_DIR$/lh-mqtt-service/src/main/java/com/zhonglai/luhui/mqtt/service/MqttCallback.java" afterDir="false" /> | ||
| 62 | + <change afterPath="$PROJECT_DIR$/lh-mqtt-service/src/main/java/com/zhonglai/luhui/mqtt/service/TopicsServiceImpl.java" afterDir="false" /> | ||
| 63 | + <change afterPath="$PROJECT_DIR$/lh-mqtt-service/src/main/resources/application.yml" afterDir="false" /> | ||
| 64 | + <change afterPath="$PROJECT_DIR$/lh-mqtt-service/src/main/resources/log4j.properties" afterDir="false" /> | ||
| 65 | + <change afterPath="$PROJECT_DIR$/lh-mqtt-service/src/main/resources/package.xml" afterDir="false" /> | ||
| 66 | + <change afterPath="$PROJECT_DIR$/logs/output.log" afterDir="false" /> | ||
| 67 | + <change afterPath="$PROJECT_DIR$/logs/sys-error.2022-08-25.log" afterDir="false" /> | ||
| 68 | + <change afterPath="$PROJECT_DIR$/logs/sys-error.2022-08-26.log" afterDir="false" /> | ||
| 69 | + <change afterPath="$PROJECT_DIR$/logs/sys-error.log" afterDir="false" /> | ||
| 70 | + <change afterPath="$PROJECT_DIR$/logs/sys-info.2022-08-25.log" afterDir="false" /> | ||
| 71 | + <change afterPath="$PROJECT_DIR$/logs/sys-info.2022-08-26.log" afterDir="false" /> | ||
| 72 | + <change afterPath="$PROJECT_DIR$/logs/sys-info.log" afterDir="false" /> | ||
| 73 | + <change afterPath="$PROJECT_DIR$/logs/sys-user.2022-08-25.log" afterDir="false" /> | ||
| 74 | + <change afterPath="$PROJECT_DIR$/logs/sys-user.2022-08-26.log" afterDir="false" /> | ||
| 75 | + <change afterPath="$PROJECT_DIR$/logs/sys-user.log" afterDir="false" /> | ||
| 76 | + <change afterPath="$PROJECT_DIR$/pom.xml" afterDir="false" /> | ||
| 77 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/pom.xml" afterDir="false" /> | ||
| 78 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/ruoyi-common.iml" afterDir="false" /> | ||
| 79 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/annotation/DataScope.java" afterDir="false" /> | ||
| 80 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/annotation/DataSource.java" afterDir="false" /> | ||
| 81 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/annotation/Excel.java" afterDir="false" /> | ||
| 82 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/annotation/Excels.java" afterDir="false" /> | ||
| 83 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/annotation/Log.java" afterDir="false" /> | ||
| 84 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/annotation/RateLimiter.java" afterDir="false" /> | ||
| 85 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/annotation/RepeatSubmit.java" afterDir="false" /> | ||
| 86 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/config/RuoYiConfig.java" afterDir="false" /> | ||
| 87 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java" afterDir="false" /> | ||
| 88 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/constant/GenConstants.java" afterDir="false" /> | ||
| 89 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/constant/HttpStatus.java" afterDir="false" /> | ||
| 90 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/constant/ScheduleConstants.java" afterDir="false" /> | ||
| 91 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/constant/UserConstants.java" afterDir="false" /> | ||
| 92 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/core/controller/BaseController.java" afterDir="false" /> | ||
| 93 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/AjaxResult.java" afterDir="false" /> | ||
| 94 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/BaseEntity.java" afterDir="false" /> | ||
| 95 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/TreeEntity.java" afterDir="false" /> | ||
| 96 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/TreeSelect.java" afterDir="false" /> | ||
| 97 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDept.java" afterDir="false" /> | ||
| 98 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDictData.java" afterDir="false" /> | ||
| 99 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDictType.java" afterDir="false" /> | ||
| 100 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysMenu.java" afterDir="false" /> | ||
| 101 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysRole.java" afterDir="false" /> | ||
| 102 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java" afterDir="false" /> | ||
| 103 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginBody.java" afterDir="false" /> | ||
| 104 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginUser.java" afterDir="false" /> | ||
| 105 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/RegisterBody.java" afterDir="false" /> | ||
| 106 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/core/page/PageDomain.java" afterDir="false" /> | ||
| 107 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/core/page/TableDataInfo.java" afterDir="false" /> | ||
| 108 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/core/page/TableSupport.java" afterDir="false" /> | ||
| 109 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/core/redis/RedisCache.java" afterDir="false" /> | ||
| 110 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/core/text/CharsetKit.java" afterDir="false" /> | ||
| 111 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/core/text/Convert.java" afterDir="false" /> | ||
| 112 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/core/text/StrFormatter.java" afterDir="false" /> | ||
| 113 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/enums/BusinessStatus.java" afterDir="false" /> | ||
| 114 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/enums/BusinessType.java" afterDir="false" /> | ||
| 115 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/enums/DataSourceType.java" afterDir="false" /> | ||
| 116 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/enums/HttpMethod.java" afterDir="false" /> | ||
| 117 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/enums/LimitType.java" afterDir="false" /> | ||
| 118 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/enums/OperatorType.java" afterDir="false" /> | ||
| 119 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/enums/UserStatus.java" afterDir="false" /> | ||
| 120 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/exception/DemoModeException.java" afterDir="false" /> | ||
| 121 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/exception/GlobalException.java" afterDir="false" /> | ||
| 122 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/exception/ServiceException.java" afterDir="false" /> | ||
| 123 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/exception/UtilException.java" afterDir="false" /> | ||
| 124 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/exception/base/BaseException.java" afterDir="false" /> | ||
| 125 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/exception/file/FileException.java" afterDir="false" /> | ||
| 126 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/exception/file/FileNameLengthLimitExceededException.java" afterDir="false" /> | ||
| 127 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/exception/file/FileSizeLimitExceededException.java" afterDir="false" /> | ||
| 128 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/exception/file/InvalidExtensionException.java" afterDir="false" /> | ||
| 129 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/exception/job/TaskException.java" afterDir="false" /> | ||
| 130 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/exception/user/CaptchaException.java" afterDir="false" /> | ||
| 131 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/exception/user/CaptchaExpireException.java" afterDir="false" /> | ||
| 132 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/exception/user/UserException.java" afterDir="false" /> | ||
| 133 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/exception/user/UserPasswordNotMatchException.java" afterDir="false" /> | ||
| 134 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/filter/RepeatableFilter.java" afterDir="false" /> | ||
| 135 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/filter/RepeatedlyRequestWrapper.java" afterDir="false" /> | ||
| 136 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/filter/XssFilter.java" afterDir="false" /> | ||
| 137 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/filter/XssHttpServletRequestWrapper.java" afterDir="false" /> | ||
| 138 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/utils/Arith.java" afterDir="false" /> | ||
| 139 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java" afterDir="false" /> | ||
| 140 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/utils/DictUtils.java" afterDir="false" /> | ||
| 141 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/utils/ExceptionUtil.java" afterDir="false" /> | ||
| 142 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/utils/LogUtils.java" afterDir="false" /> | ||
| 143 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/utils/MessageUtils.java" afterDir="false" /> | ||
| 144 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/utils/PageUtils.java" afterDir="false" /> | ||
| 145 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/utils/SecurityUtils.java" afterDir="false" /> | ||
| 146 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/utils/ServletUtils.java" afterDir="false" /> | ||
| 147 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/utils/StringUtils.java" afterDir="false" /> | ||
| 148 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/utils/Threads.java" afterDir="false" /> | ||
| 149 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/utils/bean/BeanUtils.java" afterDir="false" /> | ||
| 150 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/utils/bean/BeanValidators.java" afterDir="false" /> | ||
| 151 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileTypeUtils.java" afterDir="false" /> | ||
| 152 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUploadUtils.java" afterDir="false" /> | ||
| 153 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUtils.java" afterDir="false" /> | ||
| 154 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/ImageUtils.java" afterDir="false" /> | ||
| 155 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/MimeTypeUtils.java" afterDir="false" /> | ||
| 156 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/utils/googleauthenticator/GoogleAuthenticatorUtils.java" afterDir="false" /> | ||
| 157 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/utils/googleauthenticator/QRCodeUtils.java" afterDir="false" /> | ||
| 158 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/utils/googleauthenticator/TOTP.java" afterDir="false" /> | ||
| 159 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/utils/html/EscapeUtil.java" afterDir="false" /> | ||
| 160 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/utils/html/HTMLFilter.java" afterDir="false" /> | ||
| 161 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/utils/http/HttpHelper.java" afterDir="false" /> | ||
| 162 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/utils/http/HttpUtils.java" afterDir="false" /> | ||
| 163 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/utils/http/OkHttpUtils.java" afterDir="false" /> | ||
| 164 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/utils/ip/AddressUtils.java" afterDir="false" /> | ||
| 165 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/utils/ip/IpUtils.java" afterDir="false" /> | ||
| 166 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelHandlerAdapter.java" afterDir="false" /> | ||
| 167 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java" afterDir="false" /> | ||
| 168 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/utils/reflect/ReflectUtils.java" afterDir="false" /> | ||
| 169 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/utils/sign/Base64.java" afterDir="false" /> | ||
| 170 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/utils/sign/Md5Utils.java" afterDir="false" /> | ||
| 171 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/utils/spring/SpringUtils.java" afterDir="false" /> | ||
| 172 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/utils/sql/SqlUtil.java" afterDir="false" /> | ||
| 173 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/utils/uuid/IdUtils.java" afterDir="false" /> | ||
| 174 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/utils/uuid/Seq.java" afterDir="false" /> | ||
| 175 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/utils/uuid/UUID.java" afterDir="false" /> | ||
| 176 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/xss/Xss.java" afterDir="false" /> | ||
| 177 | + <change afterPath="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/xss/XssValidator.java" afterDir="false" /> | ||
| 178 | + <change afterPath="$PROJECT_DIR$/ruoyi-framework/pom.xml" afterDir="false" /> | ||
| 179 | + <change afterPath="$PROJECT_DIR$/ruoyi-framework/ruoyi-framework.iml" afterDir="false" /> | ||
| 180 | + <change afterPath="$PROJECT_DIR$/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/DataScopeAspect.java" afterDir="false" /> | ||
| 181 | + <change afterPath="$PROJECT_DIR$/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/DataSourceAspect.java" afterDir="false" /> | ||
| 182 | + <change afterPath="$PROJECT_DIR$/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/LogAspect.java" afterDir="false" /> | ||
| 183 | + <change afterPath="$PROJECT_DIR$/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/RateLimiterAspect.java" afterDir="false" /> | ||
| 184 | + <change afterPath="$PROJECT_DIR$/ruoyi-framework/src/main/java/com/ruoyi/framework/config/ApplicationConfig.java" afterDir="false" /> | ||
| 185 | + <change afterPath="$PROJECT_DIR$/ruoyi-framework/src/main/java/com/ruoyi/framework/config/CaptchaConfig.java" afterDir="false" /> | ||
| 186 | + <change afterPath="$PROJECT_DIR$/ruoyi-framework/src/main/java/com/ruoyi/framework/config/DruidConfig.java" afterDir="false" /> | ||
| 187 | + <change afterPath="$PROJECT_DIR$/ruoyi-framework/src/main/java/com/ruoyi/framework/config/FastJson2JsonRedisSerializer.java" afterDir="false" /> | ||
| 188 | + <change afterPath="$PROJECT_DIR$/ruoyi-framework/src/main/java/com/ruoyi/framework/config/FilterConfig.java" afterDir="false" /> | ||
| 189 | + <change afterPath="$PROJECT_DIR$/ruoyi-framework/src/main/java/com/ruoyi/framework/config/KaptchaTextCreator.java" afterDir="false" /> | ||
| 190 | + <change afterPath="$PROJECT_DIR$/ruoyi-framework/src/main/java/com/ruoyi/framework/config/MyBatisConfig.java" afterDir="false" /> | ||
| 191 | + <change afterPath="$PROJECT_DIR$/ruoyi-framework/src/main/java/com/ruoyi/framework/config/RedisConfig.java" afterDir="false" /> | ||
| 192 | + <change afterPath="$PROJECT_DIR$/ruoyi-framework/src/main/java/com/ruoyi/framework/config/ResourcesConfig.java" afterDir="false" /> | ||
| 193 | + <change afterPath="$PROJECT_DIR$/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java" afterDir="false" /> | ||
| 194 | + <change afterPath="$PROJECT_DIR$/ruoyi-framework/src/main/java/com/ruoyi/framework/config/ServerConfig.java" afterDir="false" /> | ||
| 195 | + <change afterPath="$PROJECT_DIR$/ruoyi-framework/src/main/java/com/ruoyi/framework/config/ThreadPoolConfig.java" afterDir="false" /> | ||
| 196 | + <change afterPath="$PROJECT_DIR$/ruoyi-framework/src/main/java/com/ruoyi/framework/config/properties/DruidProperties.java" afterDir="false" /> | ||
| 197 | + <change afterPath="$PROJECT_DIR$/ruoyi-framework/src/main/java/com/ruoyi/framework/datasource/DynamicDataSource.java" afterDir="false" /> | ||
| 198 | + <change afterPath="$PROJECT_DIR$/ruoyi-framework/src/main/java/com/ruoyi/framework/datasource/DynamicDataSourceContextHolder.java" afterDir="false" /> | ||
| 199 | + <change afterPath="$PROJECT_DIR$/ruoyi-framework/src/main/java/com/ruoyi/framework/interceptor/RepeatSubmitInterceptor.java" afterDir="false" /> | ||
| 200 | + <change afterPath="$PROJECT_DIR$/ruoyi-framework/src/main/java/com/ruoyi/framework/interceptor/impl/SameUrlDataInterceptor.java" afterDir="false" /> | ||
| 201 | + <change afterPath="$PROJECT_DIR$/ruoyi-framework/src/main/java/com/ruoyi/framework/manager/AsyncManager.java" afterDir="false" /> | ||
| 202 | + <change afterPath="$PROJECT_DIR$/ruoyi-framework/src/main/java/com/ruoyi/framework/manager/ShutdownManager.java" afterDir="false" /> | ||
| 203 | + <change afterPath="$PROJECT_DIR$/ruoyi-framework/src/main/java/com/ruoyi/framework/manager/factory/AsyncFactory.java" afterDir="false" /> | ||
| 204 | + <change afterPath="$PROJECT_DIR$/ruoyi-framework/src/main/java/com/ruoyi/framework/security/filter/JwtAuthenticationTokenFilter.java" afterDir="false" /> | ||
| 205 | + <change afterPath="$PROJECT_DIR$/ruoyi-framework/src/main/java/com/ruoyi/framework/security/handle/AuthenticationEntryPointImpl.java" afterDir="false" /> | ||
| 206 | + <change afterPath="$PROJECT_DIR$/ruoyi-framework/src/main/java/com/ruoyi/framework/security/handle/LogoutSuccessHandlerImpl.java" afterDir="false" /> | ||
| 207 | + <change afterPath="$PROJECT_DIR$/ruoyi-framework/src/main/java/com/ruoyi/framework/web/domain/Server.java" afterDir="false" /> | ||
| 208 | + <change afterPath="$PROJECT_DIR$/ruoyi-framework/src/main/java/com/ruoyi/framework/web/domain/server/Cpu.java" afterDir="false" /> | ||
| 209 | + <change afterPath="$PROJECT_DIR$/ruoyi-framework/src/main/java/com/ruoyi/framework/web/domain/server/Jvm.java" afterDir="false" /> | ||
| 210 | + <change afterPath="$PROJECT_DIR$/ruoyi-framework/src/main/java/com/ruoyi/framework/web/domain/server/Mem.java" afterDir="false" /> | ||
| 211 | + <change afterPath="$PROJECT_DIR$/ruoyi-framework/src/main/java/com/ruoyi/framework/web/domain/server/Sys.java" afterDir="false" /> | ||
| 212 | + <change afterPath="$PROJECT_DIR$/ruoyi-framework/src/main/java/com/ruoyi/framework/web/domain/server/SysFile.java" afterDir="false" /> | ||
| 213 | + <change afterPath="$PROJECT_DIR$/ruoyi-framework/src/main/java/com/ruoyi/framework/web/exception/GlobalExceptionHandler.java" afterDir="false" /> | ||
| 214 | + <change afterPath="$PROJECT_DIR$/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/PermissionService.java" afterDir="false" /> | ||
| 215 | + <change afterPath="$PROJECT_DIR$/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java" afterDir="false" /> | ||
| 216 | + <change afterPath="$PROJECT_DIR$/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysPermissionService.java" afterDir="false" /> | ||
| 217 | + <change afterPath="$PROJECT_DIR$/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysRegisterService.java" afterDir="false" /> | ||
| 218 | + <change afterPath="$PROJECT_DIR$/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/TokenService.java" afterDir="false" /> | ||
| 219 | + <change afterPath="$PROJECT_DIR$/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/UserDetailsServiceImpl.java" afterDir="false" /> | ||
| 220 | + <change afterPath="$PROJECT_DIR$/ruoyi-generator/pom.xml" afterDir="false" /> | ||
| 221 | + <change afterPath="$PROJECT_DIR$/ruoyi-generator/ruoyi-generator.iml" afterDir="false" /> | ||
| 222 | + <change afterPath="$PROJECT_DIR$/ruoyi-generator/src/main/java/com/ruoyi/generator/config/GenConfig.java" afterDir="false" /> | ||
| 223 | + <change afterPath="$PROJECT_DIR$/ruoyi-generator/src/main/java/com/ruoyi/generator/controller/GenController.java" afterDir="false" /> | ||
| 224 | + <change afterPath="$PROJECT_DIR$/ruoyi-generator/src/main/java/com/ruoyi/generator/domain/GenTable.java" afterDir="false" /> | ||
| 225 | + <change afterPath="$PROJECT_DIR$/ruoyi-generator/src/main/java/com/ruoyi/generator/domain/GenTableColumn.java" afterDir="false" /> | ||
| 226 | + <change afterPath="$PROJECT_DIR$/ruoyi-generator/src/main/java/com/ruoyi/generator/domain/TableVules.java" afterDir="false" /> | ||
| 227 | + <change afterPath="$PROJECT_DIR$/ruoyi-generator/src/main/java/com/ruoyi/generator/mapper/GenTableColumnMapper.java" afterDir="false" /> | ||
| 228 | + <change afterPath="$PROJECT_DIR$/ruoyi-generator/src/main/java/com/ruoyi/generator/mapper/GenTableMapMapper.java" afterDir="false" /> | ||
| 229 | + <change afterPath="$PROJECT_DIR$/ruoyi-generator/src/main/java/com/ruoyi/generator/mapper/GenTableMapper.java" afterDir="false" /> | ||
| 230 | + <change afterPath="$PROJECT_DIR$/ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableColumnServiceImpl.java" afterDir="false" /> | ||
| 231 | + <change afterPath="$PROJECT_DIR$/ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableServiceImpl.java" afterDir="false" /> | ||
| 232 | + <change afterPath="$PROJECT_DIR$/ruoyi-generator/src/main/java/com/ruoyi/generator/service/IGenTableColumnService.java" afterDir="false" /> | ||
| 233 | + <change afterPath="$PROJECT_DIR$/ruoyi-generator/src/main/java/com/ruoyi/generator/service/IGenTableService.java" afterDir="false" /> | ||
| 234 | + <change afterPath="$PROJECT_DIR$/ruoyi-generator/src/main/java/com/ruoyi/generator/util/GenUtils.java" afterDir="false" /> | ||
| 235 | + <change afterPath="$PROJECT_DIR$/ruoyi-generator/src/main/java/com/ruoyi/generator/util/SQL.java" afterDir="false" /> | ||
| 236 | + <change afterPath="$PROJECT_DIR$/ruoyi-generator/src/main/java/com/ruoyi/generator/util/VelocityInitializer.java" afterDir="false" /> | ||
| 237 | + <change afterPath="$PROJECT_DIR$/ruoyi-generator/src/main/java/com/ruoyi/generator/util/VelocityUtils.java" afterDir="false" /> | ||
| 238 | + <change afterPath="$PROJECT_DIR$/ruoyi-generator/src/main/resources/generator.yml" afterDir="false" /> | ||
| 239 | + <change afterPath="$PROJECT_DIR$/ruoyi-generator/src/main/resources/mapper/generator/GenTableColumnMapper.xml" afterDir="false" /> | ||
| 240 | + <change afterPath="$PROJECT_DIR$/ruoyi-generator/src/main/resources/mapper/generator/GenTableMapper.xml" afterDir="false" /> | ||
| 241 | + <change afterPath="$PROJECT_DIR$/ruoyi-generator/src/main/resources/vm/java/controller.java.vm" afterDir="false" /> | ||
| 242 | + <change afterPath="$PROJECT_DIR$/ruoyi-generator/src/main/resources/vm/java/domain.java.vm" afterDir="false" /> | ||
| 243 | + <change afterPath="$PROJECT_DIR$/ruoyi-generator/src/main/resources/vm/java/mapper.java.vm" afterDir="false" /> | ||
| 244 | + <change afterPath="$PROJECT_DIR$/ruoyi-generator/src/main/resources/vm/java/service.java.vm" afterDir="false" /> | ||
| 245 | + <change afterPath="$PROJECT_DIR$/ruoyi-generator/src/main/resources/vm/java/serviceImpl.java.vm" afterDir="false" /> | ||
| 246 | + <change afterPath="$PROJECT_DIR$/ruoyi-generator/src/main/resources/vm/java/sub-domain.java.vm" afterDir="false" /> | ||
| 247 | + <change afterPath="$PROJECT_DIR$/ruoyi-generator/src/main/resources/vm/js/api.js.vm" afterDir="false" /> | ||
| 248 | + <change afterPath="$PROJECT_DIR$/ruoyi-generator/src/main/resources/vm/sql/sql.vm" afterDir="false" /> | ||
| 249 | + <change afterPath="$PROJECT_DIR$/ruoyi-generator/src/main/resources/vm/vue/index-tree.vue.vm" afterDir="false" /> | ||
| 250 | + <change afterPath="$PROJECT_DIR$/ruoyi-generator/src/main/resources/vm/vue/index.vue.vm" afterDir="false" /> | ||
| 251 | + <change afterPath="$PROJECT_DIR$/ruoyi-generator/src/main/resources/vm/vue/v3/index-tree.vue.vm" afterDir="false" /> | ||
| 252 | + <change afterPath="$PROJECT_DIR$/ruoyi-generator/src/main/resources/vm/vue/v3/index.vue.vm" afterDir="false" /> | ||
| 253 | + <change afterPath="$PROJECT_DIR$/ruoyi-generator/src/main/resources/vm/vue/v3/readme.txt" afterDir="false" /> | ||
| 254 | + <change afterPath="$PROJECT_DIR$/ruoyi-generator/src/main/resources/vm/xml/mapper.xml.vm" afterDir="false" /> | ||
| 255 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/pom.xml" afterDir="false" /> | ||
| 256 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/ruoyi-system.iml" afterDir="false" /> | ||
| 257 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/domain/IotDevice.java" afterDir="false" /> | ||
| 258 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/domain/IotPermission.java" afterDir="false" /> | ||
| 259 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/domain/IotRole.java" afterDir="false" /> | ||
| 260 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/domain/IotTerminal.java" afterDir="false" /> | ||
| 261 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/domain/IotThingsModel.java" afterDir="false" /> | ||
| 262 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/domain/IotUser.java" afterDir="false" /> | ||
| 263 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysConfig.java" afterDir="false" /> | ||
| 264 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysLogininfor.java" afterDir="false" /> | ||
| 265 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysNotice.java" afterDir="false" /> | ||
| 266 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysOperLog.java" afterDir="false" /> | ||
| 267 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysPost.java" afterDir="false" /> | ||
| 268 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysRoleDept.java" afterDir="false" /> | ||
| 269 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysRoleMenu.java" afterDir="false" /> | ||
| 270 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserOnline.java" afterDir="false" /> | ||
| 271 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserPost.java" afterDir="false" /> | ||
| 272 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserRole.java" afterDir="false" /> | ||
| 273 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MetaVo.java" afterDir="false" /> | ||
| 274 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/RouterVo.java" afterDir="false" /> | ||
| 275 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/dto/Message.java" afterDir="false" /> | ||
| 276 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/dto/MessageCode.java" afterDir="false" /> | ||
| 277 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/dto/MessageCodeType.java" afterDir="false" /> | ||
| 278 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/dto/PageBean.java" afterDir="false" /> | ||
| 279 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/mapper/IotDeviceMapper.java" afterDir="false" /> | ||
| 280 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/mapper/IotPermissionMapper.java" afterDir="false" /> | ||
| 281 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/mapper/IotRoleMapper.java" afterDir="false" /> | ||
| 282 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/mapper/IotTerminalMapper.java" afterDir="false" /> | ||
| 283 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/mapper/IotThingsModelMapper.java" afterDir="false" /> | ||
| 284 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/mapper/IotUserMapper.java" afterDir="false" /> | ||
| 285 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/mapper/MapMapper.java" afterDir="false" /> | ||
| 286 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysConfigMapper.java" afterDir="false" /> | ||
| 287 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java" afterDir="false" /> | ||
| 288 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDictDataMapper.java" afterDir="false" /> | ||
| 289 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDictTypeMapper.java" afterDir="false" /> | ||
| 290 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysLogininforMapper.java" afterDir="false" /> | ||
| 291 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysMenuMapper.java" afterDir="false" /> | ||
| 292 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysNoticeMapper.java" afterDir="false" /> | ||
| 293 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysOperLogMapper.java" afterDir="false" /> | ||
| 294 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysPostMapper.java" afterDir="false" /> | ||
| 295 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleDeptMapper.java" afterDir="false" /> | ||
| 296 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMapper.java" afterDir="false" /> | ||
| 297 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMenuMapper.java" afterDir="false" /> | ||
| 298 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java" afterDir="false" /> | ||
| 299 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserPostMapper.java" afterDir="false" /> | ||
| 300 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserRoleMapper.java" afterDir="false" /> | ||
| 301 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/service/IIotDeviceService.java" afterDir="false" /> | ||
| 302 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/service/IIotPermissionService.java" afterDir="false" /> | ||
| 303 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/service/IIotRoleService.java" afterDir="false" /> | ||
| 304 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/service/IIotTerminalService.java" afterDir="false" /> | ||
| 305 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/service/IIotThingsModelService.java" afterDir="false" /> | ||
| 306 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/service/IIotUserService.java" afterDir="false" /> | ||
| 307 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysConfigService.java" afterDir="false" /> | ||
| 308 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDeptService.java" afterDir="false" /> | ||
| 309 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictDataService.java" afterDir="false" /> | ||
| 310 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictTypeService.java" afterDir="false" /> | ||
| 311 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysLogininforService.java" afterDir="false" /> | ||
| 312 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysMenuService.java" afterDir="false" /> | ||
| 313 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysNoticeService.java" afterDir="false" /> | ||
| 314 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysOperLogService.java" afterDir="false" /> | ||
| 315 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysPostService.java" afterDir="false" /> | ||
| 316 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysRoleService.java" afterDir="false" /> | ||
| 317 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserOnlineService.java" afterDir="false" /> | ||
| 318 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java" afterDir="false" /> | ||
| 319 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/service/MapService.java" afterDir="false" /> | ||
| 320 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/IotDeviceServiceImpl.java" afterDir="false" /> | ||
| 321 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/IotPermissionServiceImpl.java" afterDir="false" /> | ||
| 322 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/IotRoleServiceImpl.java" afterDir="false" /> | ||
| 323 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/IotTerminalServiceImpl.java" afterDir="false" /> | ||
| 324 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/IotThingsModelServiceImpl.java" afterDir="false" /> | ||
| 325 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/IotUserServiceImpl.java" afterDir="false" /> | ||
| 326 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/MapServiceImpl.java" afterDir="false" /> | ||
| 327 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java" afterDir="false" /> | ||
| 328 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java" afterDir="false" /> | ||
| 329 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictDataServiceImpl.java" afterDir="false" /> | ||
| 330 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictTypeServiceImpl.java" afterDir="false" /> | ||
| 331 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysLogininforServiceImpl.java" afterDir="false" /> | ||
| 332 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java" afterDir="false" /> | ||
| 333 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysNoticeServiceImpl.java" afterDir="false" /> | ||
| 334 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOperLogServiceImpl.java" afterDir="false" /> | ||
| 335 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysPostServiceImpl.java" afterDir="false" /> | ||
| 336 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java" afterDir="false" /> | ||
| 337 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserOnlineServiceImpl.java" afterDir="false" /> | ||
| 338 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java" afterDir="false" /> | ||
| 339 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/resources/mapper/iot/IotDeviceMapper.xml" afterDir="false" /> | ||
| 340 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/resources/mapper/iot/IotPermissionMapper.xml" afterDir="false" /> | ||
| 341 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/resources/mapper/iot/IotRoleMapper.xml" afterDir="false" /> | ||
| 342 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/resources/mapper/iot/IotTerminalMapper.xml" afterDir="false" /> | ||
| 343 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/resources/mapper/iot/IotThingsModelMapper.xml" afterDir="false" /> | ||
| 344 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/resources/mapper/iot/IotUserMapper.xml" afterDir="false" /> | ||
| 345 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/resources/mapper/system/SysConfigMapper.xml" afterDir="false" /> | ||
| 346 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml" afterDir="false" /> | ||
| 347 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/resources/mapper/system/SysDictDataMapper.xml" afterDir="false" /> | ||
| 348 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/resources/mapper/system/SysDictTypeMapper.xml" afterDir="false" /> | ||
| 349 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/resources/mapper/system/SysLogininforMapper.xml" afterDir="false" /> | ||
| 350 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml" afterDir="false" /> | ||
| 351 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/resources/mapper/system/SysNoticeMapper.xml" afterDir="false" /> | ||
| 352 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/resources/mapper/system/SysOperLogMapper.xml" afterDir="false" /> | ||
| 353 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/resources/mapper/system/SysPostMapper.xml" afterDir="false" /> | ||
| 354 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/resources/mapper/system/SysRoleDeptMapper.xml" afterDir="false" /> | ||
| 355 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml" afterDir="false" /> | ||
| 356 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/resources/mapper/system/SysRoleMenuMapper.xml" afterDir="false" /> | ||
| 357 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml" afterDir="false" /> | ||
| 358 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/resources/mapper/system/SysUserPostMapper.xml" afterDir="false" /> | ||
| 359 | + <change afterPath="$PROJECT_DIR$/ruoyi-system/src/main/resources/mapper/system/SysUserRoleMapper.xml" afterDir="false" /> | ||
| 360 | + </list> | ||
| 361 | + <ignored path="$PROJECT_DIR$/out/" /> | ||
| 362 | + <ignored path="$PROJECT_DIR$/target/" /> | ||
| 363 | + <ignored path="$PROJECT_DIR$/ruoyi-common/target/" /> | ||
| 364 | + <ignored path="$PROJECT_DIR$/ruoyi-framework/target/" /> | ||
| 365 | + <ignored path="$PROJECT_DIR$/ruoyi-generator/target/" /> | ||
| 366 | + <ignored path="$PROJECT_DIR$/ruoyi-system/target/" /> | ||
| 367 | + <ignored path="$PROJECT_DIR$/lh-admin/target/" /> | ||
| 368 | + <ignored path="$PROJECT_DIR$/lh-mqtt-service/target/" /> | ||
| 369 | + <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" /> | ||
| 370 | + <option name="SHOW_DIALOG" value="false" /> | ||
| 371 | + <option name="HIGHLIGHT_CONFLICTS" value="true" /> | ||
| 372 | + <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" /> | ||
| 373 | + <option name="LAST_RESOLUTION" value="IGNORE" /> | ||
| 374 | + </component> | ||
| 375 | + <component name="DefaultGradleProjectSettings"> | ||
| 376 | + <option name="isMigrated" value="true" /> | ||
| 377 | + </component> | ||
| 378 | + <component name="FileEditorManager"> | ||
| 379 | + <leaf> | ||
| 380 | + <file pinned="false" current-in-tab="false"> | ||
| 381 | + <entry file="file://$PROJECT_DIR$/lh-mqtt-service/src/main/java/com/zhonglai/luhui/mqtt/agreement/PutReqAgreement.java"> | ||
| 382 | + <provider selected="true" editor-type-id="text-editor"> | ||
| 383 | + <state relative-caret-position="232"> | ||
| 384 | + <caret line="13" column="21" selection-start-line="13" selection-start-column="21" selection-end-line="13" selection-end-column="21" /> | ||
| 385 | + <folding> | ||
| 386 | + <element signature="imports" expanded="true" /> | ||
| 387 | + </folding> | ||
| 388 | + </state> | ||
| 389 | + </provider> | ||
| 390 | + </entry> | ||
| 391 | + </file> | ||
| 392 | + <file pinned="false" current-in-tab="false"> | ||
| 393 | + <entry file="file://$PROJECT_DIR$/lh-mqtt-service/src/main/java/com/zhonglai/luhui/mqtt/service/CacheServiceImpl.java"> | ||
| 394 | + <provider selected="true" editor-type-id="text-editor"> | ||
| 395 | + <state relative-caret-position="324"> | ||
| 396 | + <caret line="12" column="27" selection-start-line="12" selection-start-column="18" selection-end-line="12" selection-end-column="27" /> | ||
| 397 | + <folding> | ||
| 398 | + <element signature="imports" expanded="true" /> | ||
| 399 | + </folding> | ||
| 400 | + </state> | ||
| 401 | + </provider> | ||
| 402 | + </entry> | ||
| 403 | + </file> | ||
| 404 | + <file pinned="false" current-in-tab="true"> | ||
| 405 | + <entry file="file://$PROJECT_DIR$/lh-mqtt-service/src/main/java/com/zhonglai/luhui/mqtt/service/MqttCallback.java"> | ||
| 406 | + <provider selected="true" editor-type-id="text-editor"> | ||
| 407 | + <state relative-caret-position="25"> | ||
| 408 | + <caret line="54" column="35" selection-start-line="54" selection-start-column="8" selection-end-line="54" selection-end-column="35" /> | ||
| 409 | + </state> | ||
| 410 | + </provider> | ||
| 411 | + </entry> | ||
| 412 | + </file> | ||
| 413 | + <file pinned="false" current-in-tab="false"> | ||
| 414 | + <entry file="file://$PROJECT_DIR$/lh-mqtt-service/src/main/java/com/zhonglai/luhui/mqtt/service/DataPersistenceServiceImpl.java"> | ||
| 415 | + <provider selected="true" editor-type-id="text-editor"> | ||
| 416 | + <state relative-caret-position="475"> | ||
| 417 | + <caret line="25" column="29" selection-start-line="25" selection-start-column="29" selection-end-line="25" selection-end-column="29" /> | ||
| 418 | + <folding> | ||
| 419 | + <element signature="e#744#745#0" expanded="true" /> | ||
| 420 | + <element signature="e#780#781#0" expanded="true" /> | ||
| 421 | + </folding> | ||
| 422 | + </state> | ||
| 423 | + </provider> | ||
| 424 | + </entry> | ||
| 425 | + </file> | ||
| 426 | + </leaf> | ||
| 427 | + </component> | ||
| 428 | + <component name="FileTemplateManagerImpl"> | ||
| 429 | + <option name="RECENT_TEMPLATES"> | ||
| 430 | + <list> | ||
| 431 | + <option value="Class" /> | ||
| 432 | + </list> | ||
| 433 | + </option> | ||
| 434 | + </component> | ||
| 435 | + <component name="FindInProjectRecents"> | ||
| 436 | + <findStrings> | ||
| 437 | + <find>com.zhonglai.waibao.juheliaotian</find> | ||
| 438 | + <find>Fload</find> | ||
| 439 | + <find>认证失败,无法访问系统资源</find> | ||
| 440 | + <find>spring-boot-starters</find> | ||
| 441 | + <find>org.springframework.boot</find> | ||
| 442 | + <find>2.5</find> | ||
| 443 | + <find>@Value(</find> | ||
| 444 | + <find>insert</find> | ||
| 445 | + </findStrings> | ||
| 446 | + <replaceStrings> | ||
| 447 | + <replace>com.zhonglai.luhui</replace> | ||
| 448 | + </replaceStrings> | ||
| 449 | + </component> | ||
| 450 | + <component name="Git.Settings"> | ||
| 451 | + <option name="ROOT_SYNC" value="DONT_SYNC" /> | ||
| 452 | + <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" /> | ||
| 453 | + </component> | ||
| 454 | + <component name="IdeDocumentHistory"> | ||
| 455 | + <option name="CHANGED_PATHS"> | ||
| 456 | + <list> | ||
| 457 | + <option value="$PROJECT_DIR$/pom.xml" /> | ||
| 458 | + <option value="$PROJECT_DIR$/ruoyi-generator/pom.xml" /> | ||
| 459 | + <option value="$PROJECT_DIR$/ruoyi-framework/pom.xml" /> | ||
| 460 | + <option value="$PROJECT_DIR$/ruoyi-common/pom.xml" /> | ||
| 461 | + <option value="$PROJECT_DIR$/lh-admin/src/main/java/com/zhonglai/luhui/admin/AdminApplication.java" /> | ||
| 462 | + <option value="$PROJECT_DIR$/lh-admin/src/main/java/com/zhonglai/luhui/admin/config/SwaggerConfig.java" /> | ||
| 463 | + <option value="$PROJECT_DIR$/lh-admin/src/main/java/com/zhonglai/luhui/admin/controller/user/UserInfoController.java" /> | ||
| 464 | + <option value="$PROJECT_DIR$/ruoyi-framework/src/main/java/com/ruoyi/framework/config/DruidConfig.java" /> | ||
| 465 | + <option value="$PROJECT_DIR$/lh-admin/src/main/resources/application-druid.yml" /> | ||
| 466 | + <option value="$PROJECT_DIR$/lh-admin/src/main/resources/application.yml" /> | ||
| 467 | + <option value="$PROJECT_DIR$/lh-admin/src/main/java/com/zhonglai/luhui/admin/controller/common/CommonController.java" /> | ||
| 468 | + <option value="$PROJECT_DIR$/lh-admin/src/main/java/com/zhonglai/luhui/admin/controller/monitor/SysLogininforController.java" /> | ||
| 469 | + <option value="$PROJECT_DIR$/lh-admin/src/main/java/com/zhonglai/luhui/admin/controller/tool/TestController.java" /> | ||
| 470 | + <option value="$PROJECT_DIR$/ruoyi-system/pom.xml" /> | ||
| 471 | + <option value="$PROJECT_DIR$/lh-admin/pom.xml" /> | ||
| 472 | + <option value="$PROJECT_DIR$/ruoyi-generator/src/main/resources/vm/java/controller.java.vm" /> | ||
| 473 | + <option value="$PROJECT_DIR$/ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableServiceImpl.java" /> | ||
| 474 | + <option value="$PROJECT_DIR$/lh-admin/src/main/java/com/zhonglai/luhui/admin/controller/IotDeviceController.java" /> | ||
| 475 | + <option value="$PROJECT_DIR$/lh-admin/src/main/java/com/zhonglai/luhui/admin/controller/iot/IotDeviceController.java" /> | ||
| 476 | + <option value="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/domain/IotDevice.java" /> | ||
| 477 | + <option value="$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/domain/IotThingsModel.java" /> | ||
| 478 | + <option value="$PROJECT_DIR$/lh-mqtt-service/src/main/java/com/zhonglai/luhui/mqtt/service/TerminalService.java" /> | ||
| 479 | + <option value="$PROJECT_DIR$/lh-mqtt-service/src/main/java/com/zhonglai/luhui/mqtt/config/SwaggerConfig.java" /> | ||
| 480 | + <option value="$PROJECT_DIR$/lh-mqtt-service/src/main/java/com/zhonglai/luhui/mqtt/service/CacheServiceImpl.java" /> | ||
| 481 | + <option value="$PROJECT_DIR$/lh-mqtt-service/src/main/java/com/zhonglai/luhui/mqtt/dto/PutDto.java" /> | ||
| 482 | + <option value="$PROJECT_DIR$/lh-mqtt-service/src/main/java/com/zhonglai/luhui/mqtt/service/TopicsServiceImpl.java" /> | ||
| 483 | + <option value="$PROJECT_DIR$/configs/dbcpconfig.properties" /> | ||
| 484 | + <option value="$PROJECT_DIR$/lh-mqtt-service/src/main/java/com/zhonglai/luhui/mqtt/config/Test.java" /> | ||
| 485 | + <option value="$PROJECT_DIR$/lh-mqtt-service/src/main/java/com/zhonglai/luhui/mqtt/MqttApplication.java" /> | ||
| 486 | + <option value="$PROJECT_DIR$/lh-mqtt-service/src/main/resources/application.yml" /> | ||
| 487 | + <option value="$PROJECT_DIR$/lh-mqtt-service/pom.xml" /> | ||
| 488 | + <option value="$PROJECT_DIR$/ruoyi-system/src/main/resources/mapper/iot/IotRoleMapper.xml" /> | ||
| 489 | + <option value="$PROJECT_DIR$/lh-mqtt-service/src/main/java/com/zhonglai/luhui/mqtt/controller/DeviceController.java" /> | ||
| 490 | + <option value="$PROJECT_DIR$/lh-mqtt-service/src/main/java/com/zhonglai/luhui/mqtt/service/DataPersistenceServiceImpl.java" /> | ||
| 491 | + <option value="$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java" /> | ||
| 492 | + <option value="$PROJECT_DIR$/lh-admin/src/main/java/com/zhonglai/luhui/admin/controller/iot/IotRoleController.java" /> | ||
| 493 | + <option value="$PROJECT_DIR$/lh-mqtt-service/src/main/java/com/zhonglai/luhui/mqtt/dto/PutReqDto.java" /> | ||
| 494 | + <option value="$PROJECT_DIR$/lh-mqtt-service/src/main/java/com/zhonglai/luhui/mqtt/agreement/PutReqAgreement.java" /> | ||
| 495 | + <option value="$PROJECT_DIR$/lh-mqtt-service/src/main/java/com/zhonglai/luhui/mqtt/service/MqttCallback.java" /> | ||
| 496 | + </list> | ||
| 497 | + </option> | ||
| 498 | + </component> | ||
| 499 | + <component name="MavenImportPreferences"> | ||
| 500 | + <option name="generalSettings"> | ||
| 501 | + <MavenGeneralSettings> | ||
| 502 | + <option name="mavenHome" value="E:/apache-maven-3.2.1" /> | ||
| 503 | + <option name="userSettingsFile" value="E:\apache-maven-3.2.1\conf\settings.xml" /> | ||
| 504 | + </MavenGeneralSettings> | ||
| 505 | + </option> | ||
| 506 | + <option name="importingSettings"> | ||
| 507 | + <MavenImportingSettings> | ||
| 508 | + <option name="jdkForImporter" value="1.8" /> | ||
| 509 | + <option name="vmOptionsForImporter" value="-Xmx768m" /> | ||
| 510 | + </MavenImportingSettings> | ||
| 511 | + </option> | ||
| 512 | + </component> | ||
| 513 | + <component name="MavenProjectNavigator"> | ||
| 514 | + <treeState> | ||
| 515 | + <expand> | ||
| 516 | + <path> | ||
| 517 | + <item name="" type="16c1761:MavenProjectsStructure$RootNode" /> | ||
| 518 | + <item name="lh-mqtt-service" type="9519ce18:MavenProjectsStructure$ProjectNode" /> | ||
| 519 | + </path> | ||
| 520 | + <path> | ||
| 521 | + <item name="" type="16c1761:MavenProjectsStructure$RootNode" /> | ||
| 522 | + <item name="lh-mqtt-service" type="9519ce18:MavenProjectsStructure$ProjectNode" /> | ||
| 523 | + <item name="Dependencies" type="f4be9f2a:MavenProjectsStructure$DependenciesNode" /> | ||
| 524 | + </path> | ||
| 525 | + <path> | ||
| 526 | + <item name="" type="16c1761:MavenProjectsStructure$RootNode" /> | ||
| 527 | + <item name="ruoyi-framework" type="9519ce18:MavenProjectsStructure$ProjectNode" /> | ||
| 528 | + </path> | ||
| 529 | + <path> | ||
| 530 | + <item name="" type="16c1761:MavenProjectsStructure$RootNode" /> | ||
| 531 | + <item name="ruoyi-framework" type="9519ce18:MavenProjectsStructure$ProjectNode" /> | ||
| 532 | + <item name="Dependencies" type="f4be9f2a:MavenProjectsStructure$DependenciesNode" /> | ||
| 533 | + </path> | ||
| 534 | + <path> | ||
| 535 | + <item name="" type="16c1761:MavenProjectsStructure$RootNode" /> | ||
| 536 | + <item name="ruoyi-system" type="9519ce18:MavenProjectsStructure$ProjectNode" /> | ||
| 537 | + </path> | ||
| 538 | + <path> | ||
| 539 | + <item name="" type="16c1761:MavenProjectsStructure$RootNode" /> | ||
| 540 | + <item name="ruoyi-system" type="9519ce18:MavenProjectsStructure$ProjectNode" /> | ||
| 541 | + <item name="Dependencies" type="f4be9f2a:MavenProjectsStructure$DependenciesNode" /> | ||
| 542 | + </path> | ||
| 543 | + <path> | ||
| 544 | + <item name="" type="16c1761:MavenProjectsStructure$RootNode" /> | ||
| 545 | + <item name="ruoyi-system" type="9519ce18:MavenProjectsStructure$ProjectNode" /> | ||
| 546 | + <item name="Dependencies" type="f4be9f2a:MavenProjectsStructure$DependenciesNode" /> | ||
| 547 | + <item name="tk.mybatis:mapper-spring-boot-starter:4.2.1" type="c0821a7e:MavenProjectsStructure$DependencyNode" /> | ||
| 548 | + </path> | ||
| 549 | + </expand> | ||
| 550 | + <select /> | ||
| 551 | + </treeState> | ||
| 552 | + </component> | ||
| 553 | + <component name="MavenRunner"> | ||
| 554 | + <option name="jreName" value="1.8" /> | ||
| 555 | + </component> | ||
| 556 | + <component name="ProjectFrameBounds" extendedState="6"> | ||
| 557 | + <option name="x" value="-8" /> | ||
| 558 | + <option name="y" value="-8" /> | ||
| 559 | + <option name="width" value="1936" /> | ||
| 560 | + <option name="height" value="1056" /> | ||
| 561 | + </component> | ||
| 562 | + <component name="ProjectLevelVcsManager" settingsEditedManually="true" /> | ||
| 563 | + <component name="ProjectView"> | ||
| 564 | + <navigator proportions="" version="1"> | ||
| 565 | + <foldersAlwaysOnTop value="true" /> | ||
| 566 | + </navigator> | ||
| 567 | + <panes> | ||
| 568 | + <pane id="ProjectPane"> | ||
| 569 | + <subPane> | ||
| 570 | + <expand> | ||
| 571 | + <path> | ||
| 572 | + <item name="Luhui" type="b2602c69:ProjectViewProjectNode" /> | ||
| 573 | + <item name="Luhui" type="462c0819:PsiDirectoryNode" /> | ||
| 574 | + </path> | ||
| 575 | + </expand> | ||
| 576 | + <select /> | ||
| 577 | + </subPane> | ||
| 578 | + </pane> | ||
| 579 | + <pane id="PackagesPane" /> | ||
| 580 | + <pane id="Scope" /> | ||
| 581 | + </panes> | ||
| 582 | + </component> | ||
| 583 | + <component name="PropertiesComponent"> | ||
| 584 | + <property name="ExpandSpringBootJavaOptionsPanel" value="true" /> | ||
| 585 | + <property name="RequestMappingsPanelOrder0" value="0" /> | ||
| 586 | + <property name="RequestMappingsPanelOrder1" value="1" /> | ||
| 587 | + <property name="RequestMappingsPanelWidth0" value="75" /> | ||
| 588 | + <property name="RequestMappingsPanelWidth1" value="75" /> | ||
| 589 | + <property name="SHARE_PROJECT_CONFIGURATION_FILES" value="true" /> | ||
| 590 | + <property name="WebServerToolWindowFactoryState" value="false" /> | ||
| 591 | + <property name="aspect.path.notification.shown" value="true" /> | ||
| 592 | + <property name="last_opened_file_path" value="$PROJECT_DIR$" /> | ||
| 593 | + <property name="nodejs_interpreter_path.stuck_in_default_project" value="undefined stuck path" /> | ||
| 594 | + <property name="nodejs_npm_path_reset_for_default_project" value="true" /> | ||
| 595 | + <property name="project.structure.last.edited" value="Artifacts" /> | ||
| 596 | + <property name="project.structure.proportion" value="0.0" /> | ||
| 597 | + <property name="project.structure.side.proportion" value="0.2" /> | ||
| 598 | + <property name="settings.editor.selected.configurable" value="reference.settings.project.maven.importing" /> | ||
| 599 | + </component> | ||
| 600 | + <component name="RecentsManager"> | ||
| 601 | + <key name="CopyClassDialog.RECENTS_KEY"> | ||
| 602 | + <recent name="com.zhonglai.luhui.mqtt.service" /> | ||
| 603 | + <recent name="com.zhonglai.luhui.admin.config" /> | ||
| 604 | + </key> | ||
| 605 | + <key name="CopyFile.RECENT_KEYS"> | ||
| 606 | + <recent name="E:\work\idea\Luhui" /> | ||
| 607 | + <recent name="E:\work\idea\Luhui\lh-mqtt-service\src\main\resources" /> | ||
| 608 | + <recent name="E:\work\idea\Luhui\lh-mqtt-service\src\main\java\com\zhonglai\luhui\mqtt" /> | ||
| 609 | + <recent name="E:\work\idea\Luhui\lh-mqtt-service\src\main\java\com\zhonglai\luhui\mqtt\service" /> | ||
| 610 | + <recent name="E:\work\idea\Luhui\ruoyi-system\src\main\java\com\ruoyi\system\domain" /> | ||
| 611 | + </key> | ||
| 612 | + </component> | ||
| 613 | + <component name="RunDashboard"> | ||
| 614 | + <option name="ruleStates"> | ||
| 615 | + <list> | ||
| 616 | + <RuleState> | ||
| 617 | + <option name="name" value="ConfigurationTypeDashboardGroupingRule" /> | ||
| 618 | + </RuleState> | ||
| 619 | + <RuleState> | ||
| 620 | + <option name="name" value="StatusDashboardGroupingRule" /> | ||
| 621 | + </RuleState> | ||
| 622 | + </list> | ||
| 623 | + </option> | ||
| 624 | + </component> | ||
| 625 | + <component name="RunManager" selected="Spring Boot.AdminApplication"> | ||
| 626 | + <configuration name="AdminApplication" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot" temporary="true" nameIsGenerated="true"> | ||
| 627 | + <module name="lh-admin" /> | ||
| 628 | + <extension name="coverage"> | ||
| 629 | + <pattern> | ||
| 630 | + <option name="PATTERN" value="com.zhonglai.luhui.admin.*" /> | ||
| 631 | + <option name="ENABLED" value="true" /> | ||
| 632 | + </pattern> | ||
| 633 | + </extension> | ||
| 634 | + <option name="SPRING_BOOT_MAIN_CLASS" value="com.zhonglai.luhui.admin.AdminApplication" /> | ||
| 635 | + <method v="2"> | ||
| 636 | + <option name="Make" enabled="true" /> | ||
| 637 | + </method> | ||
| 638 | + </configuration> | ||
| 639 | + <configuration name="MqttApplication" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot" temporary="true" nameIsGenerated="true"> | ||
| 640 | + <module name="lh-mqtt-service" /> | ||
| 641 | + <extension name="coverage"> | ||
| 642 | + <pattern> | ||
| 643 | + <option name="PATTERN" value="com.zhonglai.luhui.mqtt.*" /> | ||
| 644 | + <option name="ENABLED" value="true" /> | ||
| 645 | + </pattern> | ||
| 646 | + </extension> | ||
| 647 | + <option name="SPRING_BOOT_MAIN_CLASS" value="com.zhonglai.luhui.mqtt.MqttApplication" /> | ||
| 648 | + <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="true" /> | ||
| 649 | + <option name="ALTERNATIVE_JRE_PATH" value="1.8" /> | ||
| 650 | + <method v="2"> | ||
| 651 | + <option name="Make" enabled="true" /> | ||
| 652 | + </method> | ||
| 653 | + </configuration> | ||
| 654 | + <list> | ||
| 655 | + <item itemvalue="Spring Boot.AdminApplication" /> | ||
| 656 | + <item itemvalue="Spring Boot.MqttApplication" /> | ||
| 657 | + </list> | ||
| 658 | + <recent_temporary> | ||
| 659 | + <list> | ||
| 660 | + <item itemvalue="Spring Boot.AdminApplication" /> | ||
| 661 | + <item itemvalue="Spring Boot.MqttApplication" /> | ||
| 662 | + </list> | ||
| 663 | + </recent_temporary> | ||
| 664 | + </component> | ||
| 665 | + <component name="SvnConfiguration"> | ||
| 666 | + <configuration /> | ||
| 667 | + </component> | ||
| 668 | + <component name="TaskManager"> | ||
| 669 | + <task active="true" id="Default" summary="Default task"> | ||
| 670 | + <changelist id="3171133d-910b-4101-8a15-1b79715636c9" name="Default Changelist" comment="" /> | ||
| 671 | + <created>1661421005408</created> | ||
| 672 | + <option name="number" value="Default" /> | ||
| 673 | + <option name="presentableId" value="Default" /> | ||
| 674 | + <updated>1661421005408</updated> | ||
| 675 | + <workItem from="1661421008180" duration="17071000" /> | ||
| 676 | + <workItem from="1661566076743" duration="6275000" /> | ||
| 677 | + <workItem from="1661581266132" duration="11802000" /> | ||
| 678 | + <workItem from="1661743504280" duration="13188000" /> | ||
| 679 | + </task> | ||
| 680 | + <servers /> | ||
| 681 | + </component> | ||
| 682 | + <component name="TimeTrackingManager"> | ||
| 683 | + <option name="totallyTimeSpent" value="48336000" /> | ||
| 684 | + </component> | ||
| 685 | + <component name="TodoView"> | ||
| 686 | + <todo-panel id="selected-file"> | ||
| 687 | + <is-autoscroll-to-source value="true" /> | ||
| 688 | + </todo-panel> | ||
| 689 | + <todo-panel id="all"> | ||
| 690 | + <are-packages-shown value="true" /> | ||
| 691 | + <is-autoscroll-to-source value="true" /> | ||
| 692 | + </todo-panel> | ||
| 693 | + </component> | ||
| 694 | + <component name="ToolWindowManager"> | ||
| 695 | + <frame x="-8" y="-8" width="1936" height="1056" extended-state="6" /> | ||
| 696 | + <editor active="true" /> | ||
| 697 | + <layout> | ||
| 698 | + <window_info id="Designer" order="0" /> | ||
| 699 | + <window_info id="UI Designer" order="1" /> | ||
| 700 | + <window_info id="Favorites" order="2" side_tool="true" /> | ||
| 701 | + <window_info id="Web" order="3" side_tool="true" /> | ||
| 702 | + <window_info active="true" content_ui="combo" id="Project" order="4" visible="true" weight="0.19849785" /> | ||
| 703 | + <window_info id="Structure" order="5" side_tool="true" weight="0.25" /> | ||
| 704 | + <window_info anchor="bottom" id="Event Log" order="0" sideWeight="0.50160944" side_tool="true" visible="true" weight="0.4" /> | ||
| 705 | + <window_info anchor="bottom" id="Version Control" order="1" /> | ||
| 706 | + <window_info anchor="bottom" id="Database Changes" order="2" /> | ||
| 707 | + <window_info anchor="bottom" id="Spring" order="3" weight="0.14620535" /> | ||
| 708 | + <window_info anchor="bottom" id="Messages" order="4" sideWeight="0.49839056" weight="0.34486607" /> | ||
| 709 | + <window_info anchor="bottom" id="Terminal" order="5" sideWeight="0.49946353" weight="0.2924107" /> | ||
| 710 | + <window_info anchor="bottom" id="Message" order="6" /> | ||
| 711 | + <window_info anchor="bottom" id="Docker" order="7" show_stripe_button="false" /> | ||
| 712 | + <window_info anchor="bottom" id="Find" order="8" sideWeight="0.49946353" weight="0.32924107" /> | ||
| 713 | + <window_info anchor="bottom" id="Java Enterprise" order="9" weight="0.32924107" /> | ||
| 714 | + <window_info anchor="bottom" id="Run" order="10" sideWeight="0.49839056" visible="true" weight="0.4" /> | ||
| 715 | + <window_info anchor="bottom" id="Debug" order="11" sideWeight="0.7473176" weight="0.63616073" /> | ||
| 716 | + <window_info anchor="bottom" id="Cvs" order="12" weight="0.25" /> | ||
| 717 | + <window_info anchor="bottom" id="Inspection" order="13" weight="0.4" /> | ||
| 718 | + <window_info anchor="bottom" id="TODO" order="14" weight="0.32924107" /> | ||
| 719 | + <window_info anchor="right" id="Bean Validation" order="0" /> | ||
| 720 | + <window_info anchor="right" id="Database" order="1" /> | ||
| 721 | + <window_info anchor="right" id="Palette	" order="2" /> | ||
| 722 | + <window_info anchor="right" id="Maven" order="3" visible="true" weight="0.13197425" /> | ||
| 723 | + <window_info anchor="right" id="Palette" order="4" /> | ||
| 724 | + <window_info anchor="right" id="Commander" internal_type="SLIDING" order="5" type="SLIDING" weight="0.4" /> | ||
| 725 | + <window_info anchor="right" id="Ant Build" order="6" weight="0.25" /> | ||
| 726 | + <window_info anchor="right" content_ui="combo" id="Hierarchy" order="7" weight="0.25" /> | ||
| 727 | + </layout> | ||
| 728 | + </component> | ||
| 729 | + <component name="TypeScriptGeneratedFilesManager"> | ||
| 730 | + <option name="version" value="1" /> | ||
| 731 | + </component> | ||
| 732 | + <component name="XDebuggerManager"> | ||
| 733 | + <breakpoint-manager> | ||
| 734 | + <breakpoints> | ||
| 735 | + <line-breakpoint enabled="true" type="java-line"> | ||
| 736 | + <url>jar://$MAVEN_REPOSITORY$/com/luhui/lyl/device/service/ly-device-mqtt-comm/1.0-SNAPSHOT/ly-device-mqtt-comm-1.0-SNAPSHOT.jar!/com/luhui/ly/device/mqtt/comm/factory/Topic.class</url> | ||
| 737 | + <line>71</line> | ||
| 738 | + <properties /> | ||
| 739 | + <option name="timeStamp" value="20" /> | ||
| 740 | + </line-breakpoint> | ||
| 741 | + </breakpoints> | ||
| 742 | + </breakpoint-manager> | ||
| 743 | + </component> | ||
| 744 | + <component name="debuggerHistoryManager"> | ||
| 745 | + <expressions id="evaluateExpression"> | ||
| 746 | + <expression> | ||
| 747 | + <expression-string>Hex.encodeHexString(putDto.getData().getBytes())</expression-string> | ||
| 748 | + <language-id>JAVA</language-id> | ||
| 749 | + <custom-info>org.apache.commons.codec.binary.Hex</custom-info> | ||
| 750 | + <evaluation-mode>EXPRESSION</evaluation-mode> | ||
| 751 | + </expression> | ||
| 752 | + <expression> | ||
| 753 | + <expression-string>putDto.getData()</expression-string> | ||
| 754 | + <language-id>JAVA</language-id> | ||
| 755 | + <evaluation-mode>EXPRESSION</evaluation-mode> | ||
| 756 | + </expression> | ||
| 757 | + <expression> | ||
| 758 | + <expression-string>cf.equals("messageid")</expression-string> | ||
| 759 | + <language-id>JAVA</language-id> | ||
| 760 | + <evaluation-mode>EXPRESSION</evaluation-mode> | ||
| 761 | + </expression> | ||
| 762 | + <expression> | ||
| 763 | + <expression-string>SysParameter.topicconfig</expression-string> | ||
| 764 | + <language-id>JAVA</language-id> | ||
| 765 | + <evaluation-mode>EXPRESSION</evaluation-mode> | ||
| 766 | + </expression> | ||
| 767 | + <expression> | ||
| 768 | + <expression-string>SysParameter.topicconfig.split("/")</expression-string> | ||
| 769 | + <language-id>JAVA</language-id> | ||
| 770 | + <evaluation-mode>EXPRESSION</evaluation-mode> | ||
| 771 | + </expression> | ||
| 772 | + <expression> | ||
| 773 | + <expression-string>topicconfig</expression-string> | ||
| 774 | + <language-id>JAVA</language-id> | ||
| 775 | + <evaluation-mode>EXPRESSION</evaluation-mode> | ||
| 776 | + </expression> | ||
| 777 | + <expression> | ||
| 778 | + <expression-string>topic.getTopicType()</expression-string> | ||
| 779 | + <language-id>JAVA</language-id> | ||
| 780 | + <evaluation-mode>EXPRESSION</evaluation-mode> | ||
| 781 | + </expression> | ||
| 782 | + <expression> | ||
| 783 | + <expression-string>businessAgreement.toData(data)</expression-string> | ||
| 784 | + <language-id>JAVA</language-id> | ||
| 785 | + <evaluation-mode>EXPRESSION</evaluation-mode> | ||
| 786 | + </expression> | ||
| 787 | + <expression> | ||
| 788 | + <expression-string>redisCache.keys("login_tokens*")</expression-string> | ||
| 789 | + <language-id>JAVA</language-id> | ||
| 790 | + <evaluation-mode>EXPRESSION</evaluation-mode> | ||
| 791 | + </expression> | ||
| 792 | + </expressions> | ||
| 793 | + </component> | ||
| 794 | + <component name="editorHistoryManager"> | ||
| 795 | + <entry file="file://$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java"> | ||
| 796 | + <provider selected="true" editor-type-id="text-editor"> | ||
| 797 | + <state relative-caret-position="278"> | ||
| 798 | + <caret line="332" column="36" selection-start-line="332" selection-start-column="26" selection-end-line="332" selection-end-column="36" /> | ||
| 799 | + <folding> | ||
| 800 | + <element signature="e#7777#7778#0" expanded="true" /> | ||
| 801 | + <element signature="e#7827#7828#0" expanded="true" /> | ||
| 802 | + </folding> | ||
| 803 | + </state> | ||
| 804 | + </provider> | ||
| 805 | + </entry> | ||
| 806 | + <entry file="file://$PROJECT_DIR$/lh-admin/src/main/java/com/zhonglai/luhui/admin/controller/system/SysLoginController.java"> | ||
| 807 | + <provider selected="true" editor-type-id="text-editor"> | ||
| 808 | + <state relative-caret-position="260"> | ||
| 809 | + <caret line="47" column="39" selection-start-line="47" selection-start-column="39" selection-end-line="47" selection-end-column="39" /> | ||
| 810 | + </state> | ||
| 811 | + </provider> | ||
| 812 | + </entry> | ||
| 813 | + <entry file="file://$PROJECT_DIR$/ruoyi-framework/src/main/java/com/ruoyi/framework/security/handle/AuthenticationEntryPointImpl.java"> | ||
| 814 | + <provider selected="true" editor-type-id="text-editor"> | ||
| 815 | + <state relative-caret-position="270"> | ||
| 816 | + <caret line="22" column="36" selection-start-line="22" selection-start-column="36" selection-end-line="22" selection-end-column="36" /> | ||
| 817 | + </state> | ||
| 818 | + </provider> | ||
| 819 | + </entry> | ||
| 820 | + <entry file="file://$PROJECT_DIR$/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java"> | ||
| 821 | + <provider selected="true" editor-type-id="text-editor"> | ||
| 822 | + <state relative-caret-position="278"> | ||
| 823 | + <caret line="95" selection-start-line="95" selection-end-line="95" /> | ||
| 824 | + </state> | ||
| 825 | + </provider> | ||
| 826 | + </entry> | ||
| 827 | + <entry file="file://$PROJECT_DIR$/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/TokenService.java"> | ||
| 828 | + <provider selected="true" editor-type-id="text-editor"> | ||
| 829 | + <state relative-caret-position="130"> | ||
| 830 | + <caret line="156" column="5" lean-forward="true" selection-start-line="156" selection-start-column="5" selection-end-line="156" selection-end-column="5" /> | ||
| 831 | + </state> | ||
| 832 | + </provider> | ||
| 833 | + </entry> | ||
| 834 | + <entry file="file://$PROJECT_DIR$/ruoyi-framework/src/main/java/com/ruoyi/framework/security/filter/JwtAuthenticationTokenFilter.java"> | ||
| 835 | + <provider selected="true" editor-type-id="text-editor"> | ||
| 836 | + <state relative-caret-position="122"> | ||
| 837 | + <caret line="42" column="14" selection-start-line="42" selection-start-column="14" selection-end-line="42" selection-end-column="14" /> | ||
| 838 | + </state> | ||
| 839 | + </provider> | ||
| 840 | + </entry> | ||
| 841 | + <entry file="file://$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/IotRoleServiceImpl.java"> | ||
| 842 | + <provider selected="true" editor-type-id="text-editor"> | ||
| 843 | + <state relative-caret-position="122"> | ||
| 844 | + <caret line="42" column="28" selection-start-line="42" selection-start-column="15" selection-end-line="42" selection-end-column="28" /> | ||
| 845 | + <folding> | ||
| 846 | + <element signature="e#878#879#0" expanded="true" /> | ||
| 847 | + <element signature="e#941#942#0" expanded="true" /> | ||
| 848 | + </folding> | ||
| 849 | + </state> | ||
| 850 | + </provider> | ||
| 851 | + </entry> | ||
| 852 | + <entry file="file://$PROJECT_DIR$/lh-mqtt-service/src/main/java/com/zhonglai/luhui/mqtt/service/TerminalService.java" /> | ||
| 853 | + <entry file="file://$PROJECT_DIR$/lh-admin/pom.xml"> | ||
| 854 | + <provider selected="true" editor-type-id="text-editor"> | ||
| 855 | + <state relative-caret-position="-108"> | ||
| 856 | + <caret line="14" column="37" selection-start-line="14" selection-start-column="37" selection-end-line="14" selection-end-column="37" /> | ||
| 857 | + </state> | ||
| 858 | + </provider> | ||
| 859 | + </entry> | ||
| 860 | + <entry file="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-autoconfigure/2.5.14/spring-boot-autoconfigure-2.5.14.jar!/org/springframework/boot/autoconfigure/jdbc/DataSourceAutoConfiguration.class"> | ||
| 861 | + <provider selected="true" editor-type-id="text-editor"> | ||
| 862 | + <state relative-caret-position="167"> | ||
| 863 | + <caret line="48" column="13" selection-start-line="48" selection-start-column="13" selection-end-line="48" selection-end-column="13" /> | ||
| 864 | + </state> | ||
| 865 | + </provider> | ||
| 866 | + </entry> | ||
| 867 | + <entry file="file://$MAVEN_REPOSITORY$/com/luhui/lyl/device/service/ly-device-mqtt-comm/1.0-SNAPSHOT/ly-device-mqtt-comm-1.0-SNAPSHOT.pom"> | ||
| 868 | + <provider selected="true" editor-type-id="text-editor"> | ||
| 869 | + <state relative-caret-position="-218"> | ||
| 870 | + <caret line="15" column="12" selection-start-line="15" selection-start-column="12" selection-end-line="15" selection-end-column="12" /> | ||
| 871 | + </state> | ||
| 872 | + </provider> | ||
| 873 | + </entry> | ||
| 874 | + <entry file="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot/2.5.14/spring-boot-2.5.14.jar!/org/springframework/boot/web/servlet/context/ServletWebServerApplicationContext.class"> | ||
| 875 | + <provider selected="true" editor-type-id="text-editor"> | ||
| 876 | + <state relative-caret-position="1161"> | ||
| 877 | + <caret line="82" selection-start-line="82" selection-end-line="82" /> | ||
| 878 | + </state> | ||
| 879 | + </provider> | ||
| 880 | + </entry> | ||
| 881 | + <entry file="file://$PROJECT_DIR$/pom.xml"> | ||
| 882 | + <provider selected="true" editor-type-id="text-editor"> | ||
| 883 | + <state relative-caret-position="70"> | ||
| 884 | + <caret line="53" column="12" selection-start-line="53" selection-start-column="12" selection-end-line="60" selection-end-column="25" /> | ||
| 885 | + </state> | ||
| 886 | + </provider> | ||
| 887 | + </entry> | ||
| 888 | + <entry file="file://$PROJECT_DIR$/lh-admin/src/main/resources/application-druid.yml"> | ||
| 889 | + <provider selected="true" editor-type-id="text-editor"> | ||
| 890 | + <state relative-caret-position="216"> | ||
| 891 | + <caret line="8" column="96" selection-start-line="8" selection-start-column="85" selection-end-line="8" selection-end-column="96" /> | ||
| 892 | + </state> | ||
| 893 | + </provider> | ||
| 894 | + </entry> | ||
| 895 | + <entry file="file://$PROJECT_DIR$/lh-admin/src/main/resources/application.yml"> | ||
| 896 | + <provider selected="true" editor-type-id="text-editor"> | ||
| 897 | + <state relative-caret-position="-3101" /> | ||
| 898 | + </provider> | ||
| 899 | + </entry> | ||
| 900 | + <entry file="file://$PROJECT_DIR$/configs/dbcpconfig.properties"> | ||
| 901 | + <provider selected="true" editor-type-id="text-editor"> | ||
| 902 | + <state relative-caret-position="378"> | ||
| 903 | + <caret line="14" column="50" selection-start-line="14" selection-start-column="50" selection-end-line="14" selection-end-column="50" /> | ||
| 904 | + </state> | ||
| 905 | + </provider> | ||
| 906 | + </entry> | ||
| 907 | + <entry file="jar://$MAVEN_REPOSITORY$/com/luhui/lyl/device/service/ly-device-mqtt-comm/1.0-SNAPSHOT/ly-device-mqtt-comm-1.0-SNAPSHOT.jar!/com/luhui/ly/device/mqtt/comm/service/ClienNoticeService.class"> | ||
| 908 | + <provider selected="true" editor-type-id="text-editor"> | ||
| 909 | + <state relative-caret-position="-1198"> | ||
| 910 | + <caret line="30" column="14" selection-start-line="30" selection-start-column="14" selection-end-line="30" selection-end-column="14" /> | ||
| 911 | + </state> | ||
| 912 | + </provider> | ||
| 913 | + </entry> | ||
| 914 | + <entry file="jar://$MAVEN_REPOSITORY$/com/luhui/lyl/device/service/ly-device-mqtt-comm/1.0-SNAPSHOT/ly-device-mqtt-comm-1.0-SNAPSHOT.jar!/com/luhui/ly/device/mqtt/comm/service/TerminalService.class"> | ||
| 915 | + <provider selected="true" editor-type-id="text-editor"> | ||
| 916 | + <state relative-caret-position="-862"> | ||
| 917 | + <caret line="36" column="25" selection-start-line="36" selection-start-column="19" selection-end-line="36" selection-end-column="25" /> | ||
| 918 | + </state> | ||
| 919 | + </provider> | ||
| 920 | + </entry> | ||
| 921 | + <entry file="jar://$MAVEN_REPOSITORY$/org/springframework/spring-beans/5.3.20/spring-beans-5.3.20.jar!/org/springframework/beans/factory/annotation/AutowiredAnnotationBeanPostProcessor.class"> | ||
| 922 | + <provider selected="true" editor-type-id="text-editor"> | ||
| 923 | + <state relative-caret-position="336"> | ||
| 924 | + <caret line="602" column="38" selection-start-line="602" selection-start-column="38" selection-end-line="602" selection-end-column="38" /> | ||
| 925 | + </state> | ||
| 926 | + </provider> | ||
| 927 | + </entry> | ||
| 928 | + <entry file="jar://$MAVEN_REPOSITORY$/com/luhui/lyl/device/service/ly-device-mqtt-comm/1.0-SNAPSHOT/ly-device-mqtt-comm-1.0-SNAPSHOT.jar!/com/luhui/ly/device/mqtt/comm/factory/BusinessAgreement.class"> | ||
| 929 | + <provider selected="true" editor-type-id="text-editor"> | ||
| 930 | + <state relative-caret-position="243"> | ||
| 931 | + <caret line="12" column="6" selection-start-line="12" selection-start-column="6" selection-end-line="12" selection-end-column="6" /> | ||
| 932 | + </state> | ||
| 933 | + </provider> | ||
| 934 | + </entry> | ||
| 935 | + <entry file="jar://$MAVEN_REPOSITORY$/org/eclipse/paho/org.eclipse.paho.client.mqttv3/1.2.5/org.eclipse.paho.client.mqttv3-1.2.5.jar!/org/eclipse/paho/client/mqttv3/internal/CommsCallback.class"> | ||
| 936 | + <provider selected="true" editor-type-id="text-editor"> | ||
| 937 | + <state relative-caret-position="2361"> | ||
| 938 | + <caret line="186" selection-start-line="186" selection-end-line="186" /> | ||
| 939 | + </state> | ||
| 940 | + </provider> | ||
| 941 | + </entry> | ||
| 942 | + <entry file="jar://$MAVEN_REPOSITORY$/org/eclipse/paho/org.eclipse.paho.client.mqttv3/1.2.5/org.eclipse.paho.client.mqttv3-1.2.5.jar!/org/eclipse/paho/client/mqttv3/MqttCallback.class"> | ||
| 943 | + <provider selected="true" editor-type-id="text-editor"> | ||
| 944 | + <state> | ||
| 945 | + <folding> | ||
| 946 | + <element signature="e#0#349#0" expanded="true" /> | ||
| 947 | + </folding> | ||
| 948 | + </state> | ||
| 949 | + </provider> | ||
| 950 | + </entry> | ||
| 951 | + <entry file="jar://$MAVEN_REPOSITORY$/com/luhui/lyl/device/service/ly-device-mqtt-comm/1.0-SNAPSHOT/ly-device-mqtt-comm-1.0-SNAPSHOT.jar!/com/luhui/ly/device/mqtt/comm/config/SysParameter.class"> | ||
| 952 | + <provider selected="true" editor-type-id="text-editor"> | ||
| 953 | + <state relative-caret-position="251"> | ||
| 954 | + <caret line="37" column="1" lean-forward="true" selection-start-line="37" selection-start-column="1" selection-end-line="37" selection-end-column="1" /> | ||
| 955 | + <folding> | ||
| 956 | + <element signature="e#1154#1155#0" expanded="true" /> | ||
| 957 | + <element signature="e#1204#1205#0" expanded="true" /> | ||
| 958 | + </folding> | ||
| 959 | + </state> | ||
| 960 | + </provider> | ||
| 961 | + </entry> | ||
| 962 | + <entry file="file://$PROJECT_DIR$/lh-mqtt-service/src/main/java/com/zhonglai/luhui/mqtt/config/Test.java" /> | ||
| 963 | + <entry file="jar://$MAVEN_REPOSITORY$/com/luhui/lyl/device/service/ly-device-mqtt-comm/1.0-SNAPSHOT/ly-device-mqtt-comm-1.0-SNAPSHOT.jar!/com/luhui/ly/device/mqtt/comm/factory/Topic.class"> | ||
| 964 | + <provider selected="true" editor-type-id="text-editor"> | ||
| 965 | + <state relative-caret-position="-388"> | ||
| 966 | + <caret line="28" column="24" lean-forward="true" selection-start-line="28" selection-start-column="24" selection-end-line="28" selection-end-column="24" /> | ||
| 967 | + </state> | ||
| 968 | + </provider> | ||
| 969 | + </entry> | ||
| 970 | + <entry file="file://$PROJECT_DIR$/lh-mqtt-service/pom.xml"> | ||
| 971 | + <provider selected="true" editor-type-id="text-editor"> | ||
| 972 | + <state relative-caret-position="194"> | ||
| 973 | + <caret line="17" column="13" selection-start-line="17" selection-start-column="13" selection-end-line="17" selection-end-column="13" /> | ||
| 974 | + </state> | ||
| 975 | + </provider> | ||
| 976 | + </entry> | ||
| 977 | + <entry file="file://$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/mapper/IotRoleMapper.java"> | ||
| 978 | + <provider selected="true" editor-type-id="text-editor"> | ||
| 979 | + <state relative-caret-position="426"> | ||
| 980 | + <caret line="20" selection-start-line="20" selection-end-line="20" /> | ||
| 981 | + </state> | ||
| 982 | + </provider> | ||
| 983 | + </entry> | ||
| 984 | + <entry file="file://$PROJECT_DIR$/ruoyi-system/src/main/resources/mapper/iot/IotRoleMapper.xml"> | ||
| 985 | + <provider selected="true" editor-type-id="text-editor"> | ||
| 986 | + <state relative-caret-position="251"> | ||
| 987 | + <caret line="40" column="27" selection-start-line="40" selection-start-column="27" selection-end-line="40" selection-end-column="27" /> | ||
| 988 | + </state> | ||
| 989 | + </provider> | ||
| 990 | + </entry> | ||
| 991 | + <entry file="file://$PROJECT_DIR$/lh-mqtt-service/src/main/resources/application.yml"> | ||
| 992 | + <provider selected="true" editor-type-id="text-editor"> | ||
| 993 | + <state relative-caret-position="96"> | ||
| 994 | + <caret line="46" column="2" selection-start-line="46" selection-start-column="2" selection-end-line="46" selection-end-column="29" /> | ||
| 995 | + </state> | ||
| 996 | + </provider> | ||
| 997 | + </entry> | ||
| 998 | + <entry file="file://$PROJECT_DIR$/lh-admin/src/main/java/com/zhonglai/luhui/admin/AdminApplication.java"> | ||
| 999 | + <provider selected="true" editor-type-id="text-editor"> | ||
| 1000 | + <state relative-caret-position="288"> | ||
| 1001 | + <caret line="22" lean-forward="true" selection-start-line="22" selection-end-line="22" /> | ||
| 1002 | + </state> | ||
| 1003 | + </provider> | ||
| 1004 | + </entry> | ||
| 1005 | + <entry file="file://$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/utils/StringUtils.java"> | ||
| 1006 | + <provider selected="true" editor-type-id="text-editor"> | ||
| 1007 | + <state relative-caret-position="-12187"> | ||
| 1008 | + <caret line="22" column="15" lean-forward="true" selection-start-line="22" selection-start-column="15" selection-end-line="22" selection-end-column="15" /> | ||
| 1009 | + </state> | ||
| 1010 | + </provider> | ||
| 1011 | + </entry> | ||
| 1012 | + <entry file="file://$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/utils/ServletUtils.java"> | ||
| 1013 | + <provider selected="true" editor-type-id="text-editor"> | ||
| 1014 | + <state relative-caret-position="201"> | ||
| 1015 | + <caret line="17" column="13" selection-start-line="17" selection-start-column="13" selection-end-line="17" selection-end-column="13" /> | ||
| 1016 | + </state> | ||
| 1017 | + </provider> | ||
| 1018 | + </entry> | ||
| 1019 | + <entry file="file://$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/utils/SecurityUtils.java"> | ||
| 1020 | + <provider selected="true" editor-type-id="text-editor"> | ||
| 1021 | + <state relative-caret-position="201"> | ||
| 1022 | + <caret line="14" column="13" selection-start-line="14" selection-start-column="13" selection-end-line="14" selection-end-column="13" /> | ||
| 1023 | + </state> | ||
| 1024 | + </provider> | ||
| 1025 | + </entry> | ||
| 1026 | + <entry file="file://$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java"> | ||
| 1027 | + <provider selected="true" editor-type-id="text-editor"> | ||
| 1028 | + <state relative-caret-position="476"> | ||
| 1029 | + <caret line="187" column="5" selection-start-line="187" selection-start-column="5" selection-end-line="187" selection-end-column="5" /> | ||
| 1030 | + </state> | ||
| 1031 | + </provider> | ||
| 1032 | + </entry> | ||
| 1033 | + <entry file="file://$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/utils/PageUtils.java"> | ||
| 1034 | + <provider selected="true" editor-type-id="text-editor"> | ||
| 1035 | + <state relative-caret-position="201"> | ||
| 1036 | + <caret line="12" column="13" selection-start-line="12" selection-start-column="13" selection-end-line="12" selection-end-column="13" /> | ||
| 1037 | + </state> | ||
| 1038 | + </provider> | ||
| 1039 | + </entry> | ||
| 1040 | + <entry file="file://$PROJECT_DIR$/ruoyi-system/src/main/java/com/ruoyi/system/domain/IotRole.java"> | ||
| 1041 | + <provider selected="true" editor-type-id="text-editor"> | ||
| 1042 | + <state relative-caret-position="120"> | ||
| 1043 | + <caret line="16" column="13" selection-start-line="16" selection-start-column="13" selection-end-line="16" selection-end-column="13" /> | ||
| 1044 | + </state> | ||
| 1045 | + </provider> | ||
| 1046 | + </entry> | ||
| 1047 | + <entry file="file://$PROJECT_DIR$/lh-admin/src/main/java/com/zhonglai/luhui/admin/controller/iot/IotRoleController.java"> | ||
| 1048 | + <provider selected="true" editor-type-id="text-editor"> | ||
| 1049 | + <state relative-caret-position="108"> | ||
| 1050 | + <caret line="90" column="5" lean-forward="true" selection-start-line="90" selection-start-column="5" selection-end-line="90" selection-end-column="5" /> | ||
| 1051 | + <folding> | ||
| 1052 | + <element signature="e#3193#3194#0" expanded="true" /> | ||
| 1053 | + <element signature="e#3261#3262#0" expanded="true" /> | ||
| 1054 | + </folding> | ||
| 1055 | + </state> | ||
| 1056 | + </provider> | ||
| 1057 | + </entry> | ||
| 1058 | + <entry file="file://$PROJECT_DIR$/lh-admin/src/main/java/com/zhonglai/luhui/admin/controller/iot/IotDeviceController.java"> | ||
| 1059 | + <provider selected="true" editor-type-id="text-editor"> | ||
| 1060 | + <state relative-caret-position="2430"> | ||
| 1061 | + <caret line="112" column="5" lean-forward="true" selection-start-line="112" selection-start-column="5" selection-end-line="112" selection-end-column="5" /> | ||
| 1062 | + </state> | ||
| 1063 | + </provider> | ||
| 1064 | + </entry> | ||
| 1065 | + <entry file="file://$PROJECT_DIR$/lh-admin/src/main/java/com/zhonglai/luhui/admin/controller/iot/IotPermissionController.java"> | ||
| 1066 | + <provider selected="true" editor-type-id="text-editor"> | ||
| 1067 | + <state relative-caret-position="201"> | ||
| 1068 | + <caret line="35" column="13" selection-start-line="35" selection-start-column="13" selection-end-line="35" selection-end-column="13" /> | ||
| 1069 | + </state> | ||
| 1070 | + </provider> | ||
| 1071 | + </entry> | ||
| 1072 | + <entry file="file://$PROJECT_DIR$/lh-mqtt-service/src/main/java/com/zhonglai/luhui/mqtt/config/SwaggerConfig.java"> | ||
| 1073 | + <provider selected="true" editor-type-id="text-editor"> | ||
| 1074 | + <state relative-caret-position="270"> | ||
| 1075 | + <caret line="20" column="52" selection-start-line="20" selection-start-column="52" selection-end-line="20" selection-end-column="52" /> | ||
| 1076 | + </state> | ||
| 1077 | + </provider> | ||
| 1078 | + </entry> | ||
| 1079 | + <entry file="file://$PROJECT_DIR$/lh-mqtt-service/src/main/java/com/zhonglai/luhui/mqtt/dto/PutDto.java"> | ||
| 1080 | + <provider selected="true" editor-type-id="text-editor"> | ||
| 1081 | + <state relative-caret-position="270"> | ||
| 1082 | + <caret line="10" column="1" lean-forward="true" selection-start-line="10" selection-start-column="1" selection-end-line="10" selection-end-column="1" /> | ||
| 1083 | + </state> | ||
| 1084 | + </provider> | ||
| 1085 | + </entry> | ||
| 1086 | + <entry file="jar://$MAVEN_REPOSITORY$/com/luhui/lyl/device/service/ly-device-mqtt-comm/1.0-SNAPSHOT/ly-device-mqtt-comm-1.0-SNAPSHOT.jar!/com/luhui/ly/device/mqtt/comm/service/TopicsService.class"> | ||
| 1087 | + <provider selected="true" editor-type-id="text-editor"> | ||
| 1088 | + <state relative-caret-position="108"> | ||
| 1089 | + <caret line="7" column="17" selection-start-line="7" selection-start-column="17" selection-end-line="7" selection-end-column="17" /> | ||
| 1090 | + </state> | ||
| 1091 | + </provider> | ||
| 1092 | + </entry> | ||
| 1093 | + <entry file="file://$PROJECT_DIR$/lh-mqtt-service/src/main/java/com/zhonglai/luhui/mqtt/service/TopicsServiceImpl.java"> | ||
| 1094 | + <provider selected="true" editor-type-id="text-editor"> | ||
| 1095 | + <state> | ||
| 1096 | + <caret column="5" selection-start-column="5" selection-end-column="5" /> | ||
| 1097 | + <folding> | ||
| 1098 | + <element signature="e#305#306#0" expanded="true" /> | ||
| 1099 | + <element signature="e#350#351#0" expanded="true" /> | ||
| 1100 | + <element signature="e#433#434#0" expanded="true" /> | ||
| 1101 | + <element signature="e#478#479#0" expanded="true" /> | ||
| 1102 | + </folding> | ||
| 1103 | + </state> | ||
| 1104 | + </provider> | ||
| 1105 | + </entry> | ||
| 1106 | + <entry file="file://$PROJECT_DIR$/lh-mqtt-service/src/main/java/com/zhonglai/luhui/mqtt/controller/DeviceController.java"> | ||
| 1107 | + <provider selected="true" editor-type-id="text-editor"> | ||
| 1108 | + <state relative-caret-position="108"> | ||
| 1109 | + <caret line="25" column="46" selection-start-line="25" selection-start-column="46" selection-end-line="25" selection-end-column="46" /> | ||
| 1110 | + <folding> | ||
| 1111 | + <element signature="imports" expanded="true" /> | ||
| 1112 | + </folding> | ||
| 1113 | + </state> | ||
| 1114 | + </provider> | ||
| 1115 | + </entry> | ||
| 1116 | + <entry file="file://$PROJECT_DIR$/lh-mqtt-service/src/main/java/com/zhonglai/luhui/mqtt/MqttApplication.java"> | ||
| 1117 | + <provider selected="true" editor-type-id="text-editor"> | ||
| 1118 | + <state relative-caret-position="361"> | ||
| 1119 | + <caret line="14" column="42" selection-start-line="14" selection-start-column="42" selection-end-line="14" selection-end-column="42" /> | ||
| 1120 | + <folding> | ||
| 1121 | + <element signature="imports" expanded="true" /> | ||
| 1122 | + </folding> | ||
| 1123 | + </state> | ||
| 1124 | + </provider> | ||
| 1125 | + </entry> | ||
| 1126 | + <entry file="jar://$MAVEN_REPOSITORY$/com/luhui/lyl/device/service/ly-device-mqtt-comm/1.0-SNAPSHOT/ly-device-mqtt-comm-1.0-SNAPSHOT.jar!/com/luhui/ly/device/mqtt/comm/service/MqttCallback.class"> | ||
| 1127 | + <provider selected="true" editor-type-id="text-editor"> | ||
| 1128 | + <state relative-caret-position="174"> | ||
| 1129 | + <caret line="56" column="86" selection-start-line="56" selection-start-column="80" selection-end-line="56" selection-end-column="86" /> | ||
| 1130 | + </state> | ||
| 1131 | + </provider> | ||
| 1132 | + </entry> | ||
| 1133 | + <entry file="file://$PROJECT_DIR$/lh-mqtt-service/src/main/java/com/zhonglai/luhui/mqtt/dto/PutReqDto.java"> | ||
| 1134 | + <provider selected="true" editor-type-id="text-editor"> | ||
| 1135 | + <state relative-caret-position="513"> | ||
| 1136 | + <caret line="35" column="21" selection-start-line="35" selection-start-column="21" selection-end-line="35" selection-end-column="21" /> | ||
| 1137 | + </state> | ||
| 1138 | + </provider> | ||
| 1139 | + </entry> | ||
| 1140 | + <entry file="file://$PROJECT_DIR$/lh-mqtt-service/src/main/java/com/zhonglai/luhui/mqtt/agreement/PutReqAgreement.java"> | ||
| 1141 | + <provider selected="true" editor-type-id="text-editor"> | ||
| 1142 | + <state relative-caret-position="232"> | ||
| 1143 | + <caret line="13" column="21" selection-start-line="13" selection-start-column="21" selection-end-line="13" selection-end-column="21" /> | ||
| 1144 | + <folding> | ||
| 1145 | + <element signature="imports" expanded="true" /> | ||
| 1146 | + </folding> | ||
| 1147 | + </state> | ||
| 1148 | + </provider> | ||
| 1149 | + </entry> | ||
| 1150 | + <entry file="file://$PROJECT_DIR$/lh-mqtt-service/src/main/java/com/zhonglai/luhui/mqtt/service/DataPersistenceServiceImpl.java"> | ||
| 1151 | + <provider selected="true" editor-type-id="text-editor"> | ||
| 1152 | + <state relative-caret-position="475"> | ||
| 1153 | + <caret line="25" column="29" selection-start-line="25" selection-start-column="29" selection-end-line="25" selection-end-column="29" /> | ||
| 1154 | + <folding> | ||
| 1155 | + <element signature="e#744#745#0" expanded="true" /> | ||
| 1156 | + <element signature="e#780#781#0" expanded="true" /> | ||
| 1157 | + </folding> | ||
| 1158 | + </state> | ||
| 1159 | + </provider> | ||
| 1160 | + </entry> | ||
| 1161 | + <entry file="file://$PROJECT_DIR$/lh-mqtt-service/src/main/java/com/zhonglai/luhui/mqtt/service/CacheServiceImpl.java"> | ||
| 1162 | + <provider selected="true" editor-type-id="text-editor"> | ||
| 1163 | + <state relative-caret-position="324"> | ||
| 1164 | + <caret line="12" column="27" selection-start-line="12" selection-start-column="18" selection-end-line="12" selection-end-column="27" /> | ||
| 1165 | + <folding> | ||
| 1166 | + <element signature="imports" expanded="true" /> | ||
| 1167 | + </folding> | ||
| 1168 | + </state> | ||
| 1169 | + </provider> | ||
| 1170 | + </entry> | ||
| 1171 | + <entry file="file://$PROJECT_DIR$/lh-mqtt-service/src/main/java/com/zhonglai/luhui/mqtt/service/MqttCallback.java"> | ||
| 1172 | + <provider selected="true" editor-type-id="text-editor"> | ||
| 1173 | + <state relative-caret-position="25"> | ||
| 1174 | + <caret line="54" column="35" selection-start-line="54" selection-start-column="8" selection-end-line="54" selection-end-column="35" /> | ||
| 1175 | + </state> | ||
| 1176 | + </provider> | ||
| 1177 | + </entry> | ||
| 1178 | + </component> | ||
| 1179 | + <component name="masterDetails"> | ||
| 1180 | + <states> | ||
| 1181 | + <state key="ArquillianSettingsConfigurable.UI"> | ||
| 1182 | + <settings> | ||
| 1183 | + <splitter-proportions> | ||
| 1184 | + <option name="proportions"> | ||
| 1185 | + <list> | ||
| 1186 | + <option value="0.2" /> | ||
| 1187 | + </list> | ||
| 1188 | + </option> | ||
| 1189 | + </splitter-proportions> | ||
| 1190 | + </settings> | ||
| 1191 | + </state> | ||
| 1192 | + <state key="ArtifactsStructureConfigurable.UI"> | ||
| 1193 | + <settings> | ||
| 1194 | + <artifact-editor /> | ||
| 1195 | + <splitter-proportions> | ||
| 1196 | + <option name="proportions"> | ||
| 1197 | + <list> | ||
| 1198 | + <option value="0.2" /> | ||
| 1199 | + </list> | ||
| 1200 | + </option> | ||
| 1201 | + </splitter-proportions> | ||
| 1202 | + </settings> | ||
| 1203 | + </state> | ||
| 1204 | + <state key="FacetStructureConfigurable.UI"> | ||
| 1205 | + <settings> | ||
| 1206 | + <last-edited>Spring</last-edited> | ||
| 1207 | + <splitter-proportions> | ||
| 1208 | + <option name="proportions"> | ||
| 1209 | + <list> | ||
| 1210 | + <option value="0.2" /> | ||
| 1211 | + </list> | ||
| 1212 | + </option> | ||
| 1213 | + </splitter-proportions> | ||
| 1214 | + </settings> | ||
| 1215 | + </state> | ||
| 1216 | + <state key="GlobalLibrariesConfigurable.UI"> | ||
| 1217 | + <settings> | ||
| 1218 | + <splitter-proportions> | ||
| 1219 | + <option name="proportions"> | ||
| 1220 | + <list> | ||
| 1221 | + <option value="0.2" /> | ||
| 1222 | + </list> | ||
| 1223 | + </option> | ||
| 1224 | + </splitter-proportions> | ||
| 1225 | + </settings> | ||
| 1226 | + </state> | ||
| 1227 | + <state key="JdkListConfigurable.UI"> | ||
| 1228 | + <settings> | ||
| 1229 | + <last-edited>1.8</last-edited> | ||
| 1230 | + <splitter-proportions> | ||
| 1231 | + <option name="proportions"> | ||
| 1232 | + <list> | ||
| 1233 | + <option value="0.2" /> | ||
| 1234 | + </list> | ||
| 1235 | + </option> | ||
| 1236 | + </splitter-proportions> | ||
| 1237 | + </settings> | ||
| 1238 | + </state> | ||
| 1239 | + <state key="ModuleStructureConfigurable.UI"> | ||
| 1240 | + <settings> | ||
| 1241 | + <last-edited>lh-mqtt-service</last-edited> | ||
| 1242 | + <splitter-proportions> | ||
| 1243 | + <option name="proportions"> | ||
| 1244 | + <list> | ||
| 1245 | + <option value="0.2" /> | ||
| 1246 | + <option value="0.6" /> | ||
| 1247 | + </list> | ||
| 1248 | + </option> | ||
| 1249 | + </splitter-proportions> | ||
| 1250 | + </settings> | ||
| 1251 | + </state> | ||
| 1252 | + <state key="ProjectJDKs.UI"> | ||
| 1253 | + <settings> | ||
| 1254 | + <last-edited>1.8</last-edited> | ||
| 1255 | + <splitter-proportions> | ||
| 1256 | + <option name="proportions"> | ||
| 1257 | + <list> | ||
| 1258 | + <option value="0.2" /> | ||
| 1259 | + </list> | ||
| 1260 | + </option> | ||
| 1261 | + </splitter-proportions> | ||
| 1262 | + </settings> | ||
| 1263 | + </state> | ||
| 1264 | + <state key="ProjectLibrariesConfigurable.UI"> | ||
| 1265 | + <settings> | ||
| 1266 | + <last-edited>Maven: ch.qos.logback:logback-classic:1.2.11</last-edited> | ||
| 1267 | + <splitter-proportions> | ||
| 1268 | + <option name="proportions"> | ||
| 1269 | + <list> | ||
| 1270 | + <option value="0.2" /> | ||
| 1271 | + </list> | ||
| 1272 | + </option> | ||
| 1273 | + </splitter-proportions> | ||
| 1274 | + </settings> | ||
| 1275 | + </state> | ||
| 1276 | + </states> | ||
| 1277 | + </component> | ||
| 1278 | + <component name="mavenExecuteGoalHistory"> | ||
| 1279 | + <option value="$PROJECT_DIR$" /> | ||
| 1280 | + <option value="clean" /> | ||
| 1281 | + <option value="install" /> | ||
| 1282 | + </component> | ||
| 1283 | +</project> |
Luhui.iml
0 → 100644
configs/dbcpconfig.properties
0 → 100644
| 1 | +driverClassName=com.mysql.jdbc.Driver | ||
| 2 | +url=jdbc:mysql://rm-wz9740un21f09iokuao.mysql.rds.aliyuncs.com:3306/mqtt_broker?useUnicode=true&characterEncoding=utf8&autoReconnect=true | ||
| 3 | +username=luhui | ||
| 4 | +password=Luhui586 | ||
| 5 | +#\u6700\u5927\u8FDE\u63A5\u6570\u91CF | ||
| 6 | +maxActive=100 | ||
| 7 | +#\u6700\u5927\u7A7A\u95F2\u8FDE\u63A5 | ||
| 8 | +maxIdle=-1 | ||
| 9 | +#\u6700\u5C0F\u7A7A\u95F2\u8FDE\u63A5 | ||
| 10 | +minIdle=10 | ||
| 11 | +#\u8D85\u65F6\u7B49\u5F85\u65F6\u95F4\u4EE5\u6BEB\u79D2\u4E3A\u5355\u4F4D 60000\u6BEB\u79D2/1000\u7B49\u4E8E60\u79D2 | ||
| 12 | +maxWait=60000 | ||
| 13 | +#removeAbandoned: \u662F\u5426\u81EA\u52A8\u56DE\u6536\u8D85\u65F6\u8FDE\u63A5 | ||
| 14 | +removeAbandoned=true | ||
| 15 | +#removeAbandonedTimeout: \u8D85\u65F6\u65F6\u95F4(\u4EE5\u79D2\u6570\u4E3A\u5355\u4F4D) | ||
| 16 | +removeAbandonedTimeout=120 | ||
| 17 | +testOnBorrow=false | ||
| 18 | +logAbandoned=true |
lh-admin/lh-admin.iml
0 → 100644
lh-admin/pom.xml
0 → 100644
| 1 | +<?xml version="1.0" encoding="UTF-8"?> | ||
| 2 | +<project xmlns="http://maven.apache.org/POM/4.0.0" | ||
| 3 | + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||
| 4 | + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | ||
| 5 | + <parent> | ||
| 6 | + <artifactId>Luhui</artifactId> | ||
| 7 | + <groupId>com.zhonglai.luhui</groupId> | ||
| 8 | + <version>1.0-SNAPSHOT</version> | ||
| 9 | + </parent> | ||
| 10 | + <modelVersion>4.0.0</modelVersion> | ||
| 11 | + | ||
| 12 | + <artifactId>lh-admin</artifactId> | ||
| 13 | + | ||
| 14 | + <dependencies> | ||
| 15 | + <!-- spring-boot-devtools --> | ||
| 16 | + <dependency> | ||
| 17 | + <groupId>org.springframework.boot</groupId> | ||
| 18 | + <artifactId>spring-boot-devtools</artifactId> | ||
| 19 | + <optional>true</optional> <!-- 表示依赖不会传递 --> | ||
| 20 | + </dependency> | ||
| 21 | + | ||
| 22 | + <!-- Mysql驱动包 --> | ||
| 23 | + <dependency> | ||
| 24 | + <groupId>mysql</groupId> | ||
| 25 | + <artifactId>mysql-connector-java</artifactId> | ||
| 26 | + </dependency> | ||
| 27 | + | ||
| 28 | + <!-- 核心模块--> | ||
| 29 | + <dependency> | ||
| 30 | + <groupId>com.zhonglai.luhui</groupId> | ||
| 31 | + <artifactId>ruoyi-framework</artifactId> | ||
| 32 | + </dependency> | ||
| 33 | + <!-- 代码生成模块--> | ||
| 34 | + <dependency> | ||
| 35 | + <groupId>com.zhonglai.luhui</groupId> | ||
| 36 | + <artifactId>ruoyi-generator</artifactId> | ||
| 37 | + </dependency> | ||
| 38 | + | ||
| 39 | + <!-- 文档 --> | ||
| 40 | + <dependency > | ||
| 41 | + <groupId>io.springfox</groupId> | ||
| 42 | + <artifactId>springfox-swagger2</artifactId> | ||
| 43 | + <version>${swagger.version}</version> | ||
| 44 | + <exclusions> | ||
| 45 | + <exclusion> | ||
| 46 | + <groupId>io.swagger</groupId> | ||
| 47 | + <artifactId>swagger-models</artifactId> | ||
| 48 | + </exclusion> | ||
| 49 | + <exclusion> | ||
| 50 | + <groupId>com.google.guava</groupId> | ||
| 51 | + <artifactId>guava</artifactId> | ||
| 52 | + </exclusion> | ||
| 53 | + </exclusions> | ||
| 54 | + </dependency> | ||
| 55 | + <!--https://mvnrepository.com/artifact/io.swagger/swagger-models--> | ||
| 56 | + <dependency> | ||
| 57 | + <groupId>io.swagger</groupId> | ||
| 58 | + <artifactId>swagger-models</artifactId> | ||
| 59 | + <version>${swagger-models.version}</version> | ||
| 60 | + </dependency> | ||
| 61 | + <dependency> | ||
| 62 | + <groupId>io.springfox</groupId> | ||
| 63 | + <artifactId>springfox-swagger-ui</artifactId> | ||
| 64 | + <version>${swagger.version}</version> | ||
| 65 | + </dependency> | ||
| 66 | + <!--<!– https://mvnrepository.com/artifact/com.github.xiaoymin/swagger-bootstrap-ui –>--> | ||
| 67 | + <dependency> | ||
| 68 | + <groupId>com.github.xiaoymin</groupId> | ||
| 69 | + <artifactId>swagger-bootstrap-ui</artifactId> | ||
| 70 | + <version>${swagger-ui.version}</version> | ||
| 71 | + </dependency> | ||
| 72 | + | ||
| 73 | + <dependency> | ||
| 74 | + <groupId>org.aspectj</groupId> | ||
| 75 | + <artifactId>aspectjweaver</artifactId> | ||
| 76 | + </dependency> | ||
| 77 | + <dependency> | ||
| 78 | + <groupId>org.aspectj</groupId> | ||
| 79 | + <artifactId>aspectjrt</artifactId> | ||
| 80 | + </dependency> | ||
| 81 | + </dependencies> | ||
| 82 | + | ||
| 83 | + <build> | ||
| 84 | + <finalName>lh-admin</finalName> | ||
| 85 | + <plugins> | ||
| 86 | + <plugin> | ||
| 87 | + <groupId>org.apache.maven.plugins</groupId> | ||
| 88 | + <artifactId>maven-jar-plugin</artifactId> | ||
| 89 | + <version>2.4</version> | ||
| 90 | + <configuration> | ||
| 91 | + <archive> | ||
| 92 | + <!-- | ||
| 93 | + 生成的jar中,不要包含pom.xml和pom.properties这两个文件 | ||
| 94 | + --> | ||
| 95 | + <addMavenDescriptor>false</addMavenDescriptor> | ||
| 96 | + <manifest> | ||
| 97 | + <!-- | ||
| 98 | + 是否要把第三方jar放到manifest的classpath中 | ||
| 99 | + --> | ||
| 100 | + <addClasspath>true</addClasspath> | ||
| 101 | + | ||
| 102 | + <!-- | ||
| 103 | + 生成的manifest中classpath的前缀,因为要把第三方jar放到lib目录下,所以classpath的前缀是lib/ | ||
| 104 | + --> | ||
| 105 | + <classpathPrefix>lib/</classpathPrefix> | ||
| 106 | + <mainClass>com.zhonglai.luhui.admin.AdminApplication</mainClass> | ||
| 107 | + </manifest> | ||
| 108 | + </archive> | ||
| 109 | + </configuration> | ||
| 110 | + </plugin> | ||
| 111 | + | ||
| 112 | + <!-- The configuration of maven-assembly-plugin --> | ||
| 113 | + <plugin> | ||
| 114 | + <groupId>org.apache.maven.plugins</groupId> | ||
| 115 | + <artifactId>maven-assembly-plugin</artifactId> | ||
| 116 | + <version>2.4</version> | ||
| 117 | + <configuration> | ||
| 118 | + <descriptors> | ||
| 119 | + <descriptor>src/main/resources/package.xml</descriptor> | ||
| 120 | + </descriptors> | ||
| 121 | + </configuration> | ||
| 122 | + <executions> | ||
| 123 | + <execution> | ||
| 124 | + <id>make-assembly</id> | ||
| 125 | + <phase>package</phase> | ||
| 126 | + <goals> | ||
| 127 | + <goal>single</goal> | ||
| 128 | + </goals> | ||
| 129 | + </execution> | ||
| 130 | + </executions> | ||
| 131 | + </plugin> | ||
| 132 | + </plugins> | ||
| 133 | + </build> | ||
| 134 | +</project> |
| 1 | +package com.zhonglai.luhui.admin; | ||
| 2 | + | ||
| 3 | +import org.springframework.boot.SpringApplication; | ||
| 4 | +import org.springframework.boot.autoconfigure.SpringBootApplication; | ||
| 5 | +import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; | ||
| 6 | +import org.springframework.context.annotation.ComponentScan; | ||
| 7 | + | ||
| 8 | +@ComponentScan(basePackages = { | ||
| 9 | + "com.ruoyi.common", | ||
| 10 | + "com.ruoyi.system", | ||
| 11 | + "com.ruoyi.framework", | ||
| 12 | + "com.ruoyi.generator", | ||
| 13 | + "com.zhonglai.luhui.admin.config", | ||
| 14 | + "com.zhonglai.luhui.admin.controller", | ||
| 15 | +}) | ||
| 16 | +@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class }) | ||
| 17 | +public class AdminApplication { | ||
| 18 | + public static void main(String[] args) { | ||
| 19 | + SpringApplication.run(AdminApplication.class,args); | ||
| 20 | + System.out.println("启动成功"); | ||
| 21 | + } | ||
| 22 | +} |
| 1 | +package com.zhonglai.luhui.admin.config; | ||
| 2 | + | ||
| 3 | +import com.ruoyi.common.config.RuoYiConfig; | ||
| 4 | +import io.swagger.annotations.ApiOperation; | ||
| 5 | +import org.springframework.beans.factory.annotation.Autowired; | ||
| 6 | +import org.springframework.context.annotation.Bean; | ||
| 7 | +import org.springframework.context.annotation.Configuration; | ||
| 8 | +import springfox.documentation.builders.ApiInfoBuilder; | ||
| 9 | +import springfox.documentation.builders.PathSelectors; | ||
| 10 | +import springfox.documentation.builders.RequestHandlerSelectors; | ||
| 11 | +import springfox.documentation.service.ApiInfo; | ||
| 12 | +import springfox.documentation.service.Contact; | ||
| 13 | +import springfox.documentation.spi.DocumentationType; | ||
| 14 | +import springfox.documentation.spring.web.plugins.Docket; | ||
| 15 | +import springfox.documentation.swagger2.annotations.EnableSwagger2; | ||
| 16 | + | ||
| 17 | + | ||
| 18 | +@Configuration | ||
| 19 | +@EnableSwagger2 | ||
| 20 | +public class SwaggerConfig { | ||
| 21 | + /** 系统基础配置 */ | ||
| 22 | + @Autowired | ||
| 23 | + private RuoYiConfig ruoyiConfig; | ||
| 24 | + @Bean | ||
| 25 | + public Docket createRestApi() { | ||
| 26 | + return new Docket(DocumentationType.SWAGGER_2) | ||
| 27 | + .apiInfo(apiInfo()) | ||
| 28 | + .select() | ||
| 29 | + .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)) | ||
| 30 | + .paths(PathSelectors.any()) | ||
| 31 | + .build(); | ||
| 32 | + } | ||
| 33 | + | ||
| 34 | + /** | ||
| 35 | + * 添加摘要信息 | ||
| 36 | + */ | ||
| 37 | + private ApiInfo apiInfo() | ||
| 38 | + { | ||
| 39 | + // 用ApiInfoBuilder进行定制 | ||
| 40 | + return new ApiInfoBuilder() | ||
| 41 | + // 设置标题 | ||
| 42 | + .title("标题:后台管理员端") | ||
| 43 | + // 描述 | ||
| 44 | + .description("描述:用于通过mqtt发送指令控制PC端操作") | ||
| 45 | + // 作者信息 | ||
| 46 | + .contact(new Contact(ruoyiConfig.getName(), null, null)) | ||
| 47 | + // 版本 | ||
| 48 | + .version("版本号:" + ruoyiConfig.getVersion()) | ||
| 49 | + .build(); | ||
| 50 | + } | ||
| 51 | + | ||
| 52 | +} |
| 1 | +package com.zhonglai.luhui.admin.controller.common; | ||
| 2 | + | ||
| 3 | +import com.google.code.kaptcha.Producer; | ||
| 4 | +import com.ruoyi.common.config.RuoYiConfig; | ||
| 5 | +import com.ruoyi.common.constant.Constants; | ||
| 6 | +import com.ruoyi.common.core.domain.AjaxResult; | ||
| 7 | +import com.ruoyi.common.core.redis.RedisCache; | ||
| 8 | +import com.ruoyi.common.utils.sign.Base64; | ||
| 9 | +import com.ruoyi.common.utils.uuid.IdUtils; | ||
| 10 | +import com.ruoyi.system.service.ISysConfigService; | ||
| 11 | +import io.swagger.annotations.Api; | ||
| 12 | +import io.swagger.annotations.ApiOperation; | ||
| 13 | +import org.springframework.beans.factory.annotation.Autowired; | ||
| 14 | +import org.springframework.util.FastByteArrayOutputStream; | ||
| 15 | +import org.springframework.web.bind.annotation.GetMapping; | ||
| 16 | +import org.springframework.web.bind.annotation.RestController; | ||
| 17 | + | ||
| 18 | +import javax.annotation.Resource; | ||
| 19 | +import javax.imageio.ImageIO; | ||
| 20 | +import javax.servlet.http.HttpServletResponse; | ||
| 21 | +import java.awt.image.BufferedImage; | ||
| 22 | +import java.io.IOException; | ||
| 23 | +import java.util.concurrent.TimeUnit; | ||
| 24 | + | ||
| 25 | +/** | ||
| 26 | + * 验证码操作处理 | ||
| 27 | + * | ||
| 28 | + * @author ruoyi | ||
| 29 | + */ | ||
| 30 | +@Api(tags = "验证码操作处理") | ||
| 31 | +@RestController | ||
| 32 | +public class CaptchaController | ||
| 33 | +{ | ||
| 34 | + @Resource(name = "captchaProducer") | ||
| 35 | + private Producer captchaProducer; | ||
| 36 | + | ||
| 37 | + @Resource(name = "captchaProducerMath") | ||
| 38 | + private Producer captchaProducerMath; | ||
| 39 | + | ||
| 40 | + @Autowired | ||
| 41 | + private RedisCache redisCache; | ||
| 42 | + | ||
| 43 | + @Autowired | ||
| 44 | + private ISysConfigService configService; | ||
| 45 | + /** | ||
| 46 | + * 生成验证码 | ||
| 47 | + */ | ||
| 48 | + @ApiOperation("生成验证码") | ||
| 49 | + @GetMapping("/captchaImage") | ||
| 50 | + public AjaxResult getCode(HttpServletResponse response) throws IOException | ||
| 51 | + { | ||
| 52 | + AjaxResult ajax = AjaxResult.success(); | ||
| 53 | + boolean captchaOnOff = configService.selectCaptchaOnOff(); | ||
| 54 | + ajax.put("captchaOnOff", captchaOnOff); | ||
| 55 | + if (!captchaOnOff) | ||
| 56 | + { | ||
| 57 | + return ajax; | ||
| 58 | + } | ||
| 59 | + | ||
| 60 | + // 保存验证码信息 | ||
| 61 | + String uuid = IdUtils.simpleUUID(); | ||
| 62 | + String verifyKey = Constants.CAPTCHA_CODE_KEY + uuid; | ||
| 63 | + | ||
| 64 | + String capStr = null, code = null; | ||
| 65 | + BufferedImage image = null; | ||
| 66 | + | ||
| 67 | + // 生成验证码 | ||
| 68 | + String captchaType = RuoYiConfig.getCaptchaType(); | ||
| 69 | + if ("math".equals(captchaType)) | ||
| 70 | + { | ||
| 71 | + String capText = captchaProducerMath.createText(); | ||
| 72 | + capStr = capText.substring(0, capText.lastIndexOf("@")); | ||
| 73 | + code = capText.substring(capText.lastIndexOf("@") + 1); | ||
| 74 | + image = captchaProducerMath.createImage(capStr); | ||
| 75 | + } | ||
| 76 | + else if ("char".equals(captchaType)) | ||
| 77 | + { | ||
| 78 | + capStr = code = captchaProducer.createText(); | ||
| 79 | + image = captchaProducer.createImage(capStr); | ||
| 80 | + } | ||
| 81 | + | ||
| 82 | + redisCache.setCacheObject(verifyKey, code, Constants.CAPTCHA_EXPIRATION, TimeUnit.MINUTES); | ||
| 83 | + // 转换流信息写出 | ||
| 84 | + FastByteArrayOutputStream os = new FastByteArrayOutputStream(); | ||
| 85 | + try | ||
| 86 | + { | ||
| 87 | + ImageIO.write(image, "jpg", os); | ||
| 88 | + } | ||
| 89 | + catch (IOException e) | ||
| 90 | + { | ||
| 91 | + return AjaxResult.error(e.getMessage()); | ||
| 92 | + } | ||
| 93 | + | ||
| 94 | + ajax.put("uuid", uuid); | ||
| 95 | + ajax.put("img", Base64.encode(os.toByteArray())); | ||
| 96 | + return ajax; | ||
| 97 | + } | ||
| 98 | + | ||
| 99 | + /** | ||
| 100 | + * 获取内存信息 | ||
| 101 | + */ | ||
| 102 | + @ApiOperation("获取内存信息") | ||
| 103 | + @GetMapping("/getCacheObject") | ||
| 104 | + public AjaxResult getCacheObject(String key) | ||
| 105 | + { | ||
| 106 | + Object o = redisCache.getCacheObject(key); | ||
| 107 | + AjaxResult ajax = AjaxResult.success(); | ||
| 108 | + ajax.put("objectValue",o); | ||
| 109 | + return ajax; | ||
| 110 | + } | ||
| 111 | +} |
| 1 | +package com.zhonglai.luhui.admin.controller.common; | ||
| 2 | + | ||
| 3 | +import com.ruoyi.common.config.RuoYiConfig; | ||
| 4 | +import com.ruoyi.common.constant.Constants; | ||
| 5 | +import com.ruoyi.common.core.domain.AjaxResult; | ||
| 6 | +import com.ruoyi.common.utils.StringUtils; | ||
| 7 | +import com.ruoyi.common.utils.file.FileUploadUtils; | ||
| 8 | +import com.ruoyi.common.utils.file.FileUtils; | ||
| 9 | +import com.ruoyi.framework.config.ServerConfig; | ||
| 10 | +import io.swagger.annotations.Api; | ||
| 11 | +import io.swagger.annotations.ApiImplicitParam; | ||
| 12 | +import io.swagger.annotations.ApiImplicitParams; | ||
| 13 | +import io.swagger.annotations.ApiOperation; | ||
| 14 | +import org.slf4j.Logger; | ||
| 15 | +import org.slf4j.LoggerFactory; | ||
| 16 | +import org.springframework.beans.factory.annotation.Autowired; | ||
| 17 | +import org.springframework.http.MediaType; | ||
| 18 | +import org.springframework.web.bind.annotation.GetMapping; | ||
| 19 | +import org.springframework.web.bind.annotation.PostMapping; | ||
| 20 | +import org.springframework.web.bind.annotation.RequestMapping; | ||
| 21 | +import org.springframework.web.bind.annotation.RestController; | ||
| 22 | +import org.springframework.web.multipart.MultipartFile; | ||
| 23 | + | ||
| 24 | +import javax.servlet.http.HttpServletRequest; | ||
| 25 | +import javax.servlet.http.HttpServletResponse; | ||
| 26 | +import java.util.ArrayList; | ||
| 27 | +import java.util.List; | ||
| 28 | + | ||
| 29 | +/** | ||
| 30 | + * 通用请求处理 | ||
| 31 | + * | ||
| 32 | + * @author ruoyi | ||
| 33 | + */ | ||
| 34 | +@Api(tags = "通用请求处理") | ||
| 35 | +@RestController | ||
| 36 | +@RequestMapping("/common") | ||
| 37 | +public class CommonController | ||
| 38 | +{ | ||
| 39 | + private static final Logger log = LoggerFactory.getLogger(CommonController.class); | ||
| 40 | + | ||
| 41 | + @Autowired | ||
| 42 | + private ServerConfig serverConfig; | ||
| 43 | + | ||
| 44 | + private static final String FILE_DELIMETER = ","; | ||
| 45 | + | ||
| 46 | + /** | ||
| 47 | + * 通用下载请求 | ||
| 48 | + * | ||
| 49 | + * @param fileName 文件名称 | ||
| 50 | + * @param delete 是否删除 | ||
| 51 | + */ | ||
| 52 | + @ApiOperation("通用下载请求") | ||
| 53 | + @ApiImplicitParams({ | ||
| 54 | + @ApiImplicitParam(name = "fileName", value = "文件名称", required = true, dataType = "String", dataTypeClass = String.class), | ||
| 55 | + @ApiImplicitParam(name = "delete", value = "是否删除", required = true, dataType = "Boolean", dataTypeClass = Boolean.class) | ||
| 56 | + }) | ||
| 57 | + @GetMapping("/download") | ||
| 58 | + public void fileDownload(String fileName, Boolean delete, HttpServletResponse response, HttpServletRequest request) | ||
| 59 | + { | ||
| 60 | + try | ||
| 61 | + { | ||
| 62 | + if (!FileUtils.checkAllowDownload(fileName)) | ||
| 63 | + { | ||
| 64 | + throw new Exception(StringUtils.format("文件名称({})非法,不允许下载。 ", fileName)); | ||
| 65 | + } | ||
| 66 | + String realFileName = System.currentTimeMillis() + fileName.substring(fileName.indexOf("_") + 1); | ||
| 67 | + String filePath = RuoYiConfig.getDownloadPath() + fileName; | ||
| 68 | + | ||
| 69 | + response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); | ||
| 70 | + FileUtils.setAttachmentResponseHeader(response, realFileName); | ||
| 71 | + FileUtils.writeBytes(filePath, response.getOutputStream()); | ||
| 72 | + if (delete) | ||
| 73 | + { | ||
| 74 | + FileUtils.deleteFile(filePath); | ||
| 75 | + } | ||
| 76 | + } | ||
| 77 | + catch (Exception e) | ||
| 78 | + { | ||
| 79 | + log.error("下载文件失败", e); | ||
| 80 | + } | ||
| 81 | + } | ||
| 82 | + | ||
| 83 | + /** | ||
| 84 | + * 通用上传请求(单个) | ||
| 85 | + */ | ||
| 86 | + @ApiOperation("通用上传请求(单个)") | ||
| 87 | + @ApiImplicitParams({ | ||
| 88 | + @ApiImplicitParam(name = "file", value = "文件", required = true, dataType = "MultipartFile", dataTypeClass = MultipartFile.class) | ||
| 89 | + }) | ||
| 90 | + @PostMapping("/upload") | ||
| 91 | + public AjaxResult uploadFile(MultipartFile file) throws Exception | ||
| 92 | + { | ||
| 93 | + try | ||
| 94 | + { | ||
| 95 | + // 上传文件路径 | ||
| 96 | + String filePath = RuoYiConfig.getUploadPath(); | ||
| 97 | + // 上传并返回新文件名称 | ||
| 98 | + String fileName = FileUploadUtils.upload(filePath, file); | ||
| 99 | + String url = serverConfig.getUrl() + fileName; | ||
| 100 | + AjaxResult ajax = AjaxResult.success(); | ||
| 101 | + ajax.put("url", url); | ||
| 102 | + ajax.put("fileName", fileName); | ||
| 103 | + ajax.put("newFileName", FileUtils.getName(fileName)); | ||
| 104 | + ajax.put("originalFilename", file.getOriginalFilename()); | ||
| 105 | + return ajax; | ||
| 106 | + } | ||
| 107 | + catch (Exception e) | ||
| 108 | + { | ||
| 109 | + return AjaxResult.error(e.getMessage()); | ||
| 110 | + } | ||
| 111 | + } | ||
| 112 | + | ||
| 113 | + /** | ||
| 114 | + * 通用上传请求(多个) | ||
| 115 | + */ | ||
| 116 | + @ApiOperation("通用上传请求(多个)") | ||
| 117 | + @ApiImplicitParams({ | ||
| 118 | + @ApiImplicitParam(name = "files", value = "文件集合", required = true, dataType = "List<MultipartFile>", dataTypeClass = List.class) | ||
| 119 | + }) | ||
| 120 | + @PostMapping("/uploads") | ||
| 121 | + public AjaxResult uploadFiles(List<MultipartFile> files) throws Exception | ||
| 122 | + { | ||
| 123 | + try | ||
| 124 | + { | ||
| 125 | + // 上传文件路径 | ||
| 126 | + String filePath = RuoYiConfig.getUploadPath(); | ||
| 127 | + List<String> urls = new ArrayList<String>(); | ||
| 128 | + List<String> fileNames = new ArrayList<String>(); | ||
| 129 | + List<String> newFileNames = new ArrayList<String>(); | ||
| 130 | + List<String> originalFilenames = new ArrayList<String>(); | ||
| 131 | + for (MultipartFile file : files) | ||
| 132 | + { | ||
| 133 | + // 上传并返回新文件名称 | ||
| 134 | + String fileName = FileUploadUtils.upload(filePath, file); | ||
| 135 | + String url = serverConfig.getUrl() + fileName; | ||
| 136 | + urls.add(url); | ||
| 137 | + fileNames.add(fileName); | ||
| 138 | + newFileNames.add(FileUtils.getName(fileName)); | ||
| 139 | + originalFilenames.add(file.getOriginalFilename()); | ||
| 140 | + } | ||
| 141 | + AjaxResult ajax = AjaxResult.success(); | ||
| 142 | + ajax.put("urls", StringUtils.join(urls, FILE_DELIMETER)); | ||
| 143 | + ajax.put("fileNames", StringUtils.join(fileNames, FILE_DELIMETER)); | ||
| 144 | + ajax.put("newFileNames", StringUtils.join(newFileNames, FILE_DELIMETER)); | ||
| 145 | + ajax.put("originalFilenames", StringUtils.join(originalFilenames, FILE_DELIMETER)); | ||
| 146 | + return ajax; | ||
| 147 | + } | ||
| 148 | + catch (Exception e) | ||
| 149 | + { | ||
| 150 | + return AjaxResult.error(e.getMessage()); | ||
| 151 | + } | ||
| 152 | + } | ||
| 153 | + | ||
| 154 | + /** | ||
| 155 | + * 本地资源通用下载 | ||
| 156 | + */ | ||
| 157 | + @ApiOperation("本地资源通用下载") | ||
| 158 | + @ApiImplicitParams({ | ||
| 159 | + @ApiImplicitParam(name = "resource", value = "资源文件地址", required = true, dataType = "String", dataTypeClass = String.class) | ||
| 160 | + }) | ||
| 161 | + @GetMapping("/download/resource") | ||
| 162 | + public void resourceDownload(String resource, HttpServletRequest request, HttpServletResponse response) | ||
| 163 | + throws Exception | ||
| 164 | + { | ||
| 165 | + try | ||
| 166 | + { | ||
| 167 | + if (!FileUtils.checkAllowDownload(resource)) | ||
| 168 | + { | ||
| 169 | + throw new Exception(StringUtils.format("资源文件({})非法,不允许下载。 ", resource)); | ||
| 170 | + } | ||
| 171 | + // 本地资源路径 | ||
| 172 | + String localPath = RuoYiConfig.getProfile(); | ||
| 173 | + // 数据库资源地址 | ||
| 174 | + String downloadPath = localPath + StringUtils.substringAfter(resource, Constants.RESOURCE_PREFIX); | ||
| 175 | + // 下载名称 | ||
| 176 | + String downloadName = StringUtils.substringAfterLast(downloadPath, "/"); | ||
| 177 | + response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); | ||
| 178 | + FileUtils.setAttachmentResponseHeader(response, downloadName); | ||
| 179 | + FileUtils.writeBytes(downloadPath, response.getOutputStream()); | ||
| 180 | + } | ||
| 181 | + catch (Exception e) | ||
| 182 | + { | ||
| 183 | + log.error("下载文件失败", e); | ||
| 184 | + } | ||
| 185 | + } | ||
| 186 | +} |
| 1 | +package com.zhonglai.luhui.admin.controller.iot; | ||
| 2 | + | ||
| 3 | +import java.util.List; | ||
| 4 | +import javax.servlet.http.HttpServletResponse; | ||
| 5 | + | ||
| 6 | +import io.swagger.annotations.Api; | ||
| 7 | +import io.swagger.annotations.ApiOperation; | ||
| 8 | +import org.springframework.security.access.prepost.PreAuthorize; | ||
| 9 | +import org.springframework.beans.factory.annotation.Autowired; | ||
| 10 | +import org.springframework.web.bind.annotation.GetMapping; | ||
| 11 | +import org.springframework.web.bind.annotation.PostMapping; | ||
| 12 | +import org.springframework.web.bind.annotation.PutMapping; | ||
| 13 | +import org.springframework.web.bind.annotation.DeleteMapping; | ||
| 14 | +import org.springframework.web.bind.annotation.PathVariable; | ||
| 15 | +import org.springframework.web.bind.annotation.RequestBody; | ||
| 16 | +import org.springframework.web.bind.annotation.RequestMapping; | ||
| 17 | +import org.springframework.web.bind.annotation.RestController; | ||
| 18 | +import com.ruoyi.common.annotation.Log; | ||
| 19 | +import com.ruoyi.common.core.controller.BaseController; | ||
| 20 | +import com.ruoyi.common.core.domain.AjaxResult; | ||
| 21 | +import com.ruoyi.common.enums.BusinessType; | ||
| 22 | +import com.ruoyi.system.domain.IotDevice; | ||
| 23 | +import com.ruoyi.system.service.IIotDeviceService; | ||
| 24 | +import com.ruoyi.common.utils.poi.ExcelUtil; | ||
| 25 | +import com.ruoyi.common.core.page.TableDataInfo; | ||
| 26 | + | ||
| 27 | +/** | ||
| 28 | + * 主机/网关Controller | ||
| 29 | + * | ||
| 30 | + * @author 钟来 | ||
| 31 | + * @date 2022-08-26 | ||
| 32 | + */ | ||
| 33 | +@Api(tags = "主机/网关") | ||
| 34 | +@RestController | ||
| 35 | +@RequestMapping("/iot/IotDevice") | ||
| 36 | +public class IotDeviceController extends BaseController | ||
| 37 | +{ | ||
| 38 | + @Autowired | ||
| 39 | + private IIotDeviceService iotDeviceService; | ||
| 40 | + | ||
| 41 | + /** | ||
| 42 | + * 查询主机/网关列表 | ||
| 43 | + */ | ||
| 44 | + @ApiOperation("查询主机/网关列表") | ||
| 45 | + @PreAuthorize("@ss.hasPermi('iot:IotDevice:list')") | ||
| 46 | + @GetMapping("/list") | ||
| 47 | + public TableDataInfo list(IotDevice iotDevice) | ||
| 48 | + { | ||
| 49 | + startPage(); | ||
| 50 | + List<IotDevice> list = iotDeviceService.selectIotDeviceList(iotDevice); | ||
| 51 | + return getDataTable(list); | ||
| 52 | + } | ||
| 53 | + | ||
| 54 | + /** | ||
| 55 | + * 导出主机/网关列表 | ||
| 56 | + */ | ||
| 57 | + @ApiOperation("导出主机/网关列表") | ||
| 58 | + @PreAuthorize("@ss.hasPermi('iot:IotDevice:export')") | ||
| 59 | + @Log(title = "主机/网关", businessType = BusinessType.EXPORT) | ||
| 60 | + @PostMapping("/export") | ||
| 61 | + public void export(HttpServletResponse response, IotDevice iotDevice) | ||
| 62 | + { | ||
| 63 | + List<IotDevice> list = iotDeviceService.selectIotDeviceList(iotDevice); | ||
| 64 | + ExcelUtil<IotDevice> util = new ExcelUtil<IotDevice>(IotDevice.class); | ||
| 65 | + util.exportExcel(response, list, "主机/网关数据"); | ||
| 66 | + } | ||
| 67 | + | ||
| 68 | + /** | ||
| 69 | + * 获取主机/网关详细信息 | ||
| 70 | + */ | ||
| 71 | + @ApiOperation("获取主机/网关详细信息") | ||
| 72 | + @PreAuthorize("@ss.hasPermi('iot:IotDevice:query')") | ||
| 73 | + @GetMapping(value = "/{client_id}") | ||
| 74 | + public AjaxResult getInfo(@PathVariable("client_id") String client_id) | ||
| 75 | + { | ||
| 76 | + return AjaxResult.success(iotDeviceService.selectIotDeviceByClient_id(client_id)); | ||
| 77 | + } | ||
| 78 | + | ||
| 79 | + /** | ||
| 80 | + * 新增主机/网关 | ||
| 81 | + */ | ||
| 82 | + @ApiOperation("新增主机/网关") | ||
| 83 | + @PreAuthorize("@ss.hasPermi('iot:IotDevice:add')") | ||
| 84 | + @Log(title = "主机/网关", businessType = BusinessType.INSERT) | ||
| 85 | + @PostMapping | ||
| 86 | + public AjaxResult add(@RequestBody IotDevice iotDevice) | ||
| 87 | + { | ||
| 88 | + return toAjax(iotDeviceService.insertIotDevice(iotDevice)); | ||
| 89 | + } | ||
| 90 | + | ||
| 91 | + /** | ||
| 92 | + * 修改主机/网关 | ||
| 93 | + */ | ||
| 94 | + @ApiOperation("修改主机/网关") | ||
| 95 | + @PreAuthorize("@ss.hasPermi('iot:IotDevice:edit')") | ||
| 96 | + @Log(title = "主机/网关", businessType = BusinessType.UPDATE) | ||
| 97 | + @PutMapping | ||
| 98 | + public AjaxResult edit(@RequestBody IotDevice iotDevice) | ||
| 99 | + { | ||
| 100 | + return toAjax(iotDeviceService.updateIotDevice(iotDevice)); | ||
| 101 | + } | ||
| 102 | + | ||
| 103 | + /** | ||
| 104 | + * 删除主机/网关 | ||
| 105 | + */ | ||
| 106 | + @ApiOperation("删除主机/网关") | ||
| 107 | + @PreAuthorize("@ss.hasPermi('iot:IotDevice:remove')") | ||
| 108 | + @Log(title = "主机/网关", businessType = BusinessType.DELETE) | ||
| 109 | + @DeleteMapping("/{client_ids}") | ||
| 110 | + public AjaxResult remove(@PathVariable String[] client_ids) | ||
| 111 | + { | ||
| 112 | + return toAjax(iotDeviceService.deleteIotDeviceByClient_ids(client_ids)); | ||
| 113 | + } | ||
| 114 | +} |
lh-admin/src/main/java/com/zhonglai/luhui/admin/controller/iot/IotPermissionController.java
0 → 100644
| 1 | +package com.zhonglai.luhui.admin.controller.iot; | ||
| 2 | + | ||
| 3 | +import java.util.List; | ||
| 4 | +import javax.servlet.http.HttpServletResponse; | ||
| 5 | + | ||
| 6 | +import io.swagger.annotations.Api; | ||
| 7 | +import io.swagger.annotations.ApiOperation; | ||
| 8 | +import org.springframework.security.access.prepost.PreAuthorize; | ||
| 9 | +import org.springframework.beans.factory.annotation.Autowired; | ||
| 10 | +import org.springframework.web.bind.annotation.GetMapping; | ||
| 11 | +import org.springframework.web.bind.annotation.PostMapping; | ||
| 12 | +import org.springframework.web.bind.annotation.PutMapping; | ||
| 13 | +import org.springframework.web.bind.annotation.DeleteMapping; | ||
| 14 | +import org.springframework.web.bind.annotation.PathVariable; | ||
| 15 | +import org.springframework.web.bind.annotation.RequestBody; | ||
| 16 | +import org.springframework.web.bind.annotation.RequestMapping; | ||
| 17 | +import org.springframework.web.bind.annotation.RestController; | ||
| 18 | +import com.ruoyi.common.annotation.Log; | ||
| 19 | +import com.ruoyi.common.core.controller.BaseController; | ||
| 20 | +import com.ruoyi.common.core.domain.AjaxResult; | ||
| 21 | +import com.ruoyi.common.enums.BusinessType; | ||
| 22 | +import com.ruoyi.system.domain.IotPermission; | ||
| 23 | +import com.ruoyi.system.service.IIotPermissionService; | ||
| 24 | +import com.ruoyi.common.utils.poi.ExcelUtil; | ||
| 25 | +import com.ruoyi.common.core.page.TableDataInfo; | ||
| 26 | + | ||
| 27 | +/** | ||
| 28 | + * topic权限控制Controller | ||
| 29 | + * | ||
| 30 | + * @author 钟来 | ||
| 31 | + * @date 2022-08-26 | ||
| 32 | + */ | ||
| 33 | +@Api(tags = "topic权限控制") | ||
| 34 | +@RestController | ||
| 35 | +@RequestMapping("/iot/IotPermission") | ||
| 36 | +public class IotPermissionController extends BaseController | ||
| 37 | +{ | ||
| 38 | + @Autowired | ||
| 39 | + private IIotPermissionService iotPermissionService; | ||
| 40 | + | ||
| 41 | + /** | ||
| 42 | + * 查询topic权限控制列表 | ||
| 43 | + */ | ||
| 44 | + @ApiOperation("查询topic权限控制列表") | ||
| 45 | + @PreAuthorize("@ss.hasPermi('iot:IotPermission:list')") | ||
| 46 | + @GetMapping("/list") | ||
| 47 | + public TableDataInfo list(IotPermission iotPermission) | ||
| 48 | + { | ||
| 49 | + startPage(); | ||
| 50 | + List<IotPermission> list = iotPermissionService.selectIotPermissionList(iotPermission); | ||
| 51 | + return getDataTable(list); | ||
| 52 | + } | ||
| 53 | + | ||
| 54 | + /** | ||
| 55 | + * 导出topic权限控制列表 | ||
| 56 | + */ | ||
| 57 | + @ApiOperation("导出topic权限控制列表") | ||
| 58 | + @PreAuthorize("@ss.hasPermi('iot:IotPermission:export')") | ||
| 59 | + @Log(title = "topic权限控制", businessType = BusinessType.EXPORT) | ||
| 60 | + @PostMapping("/export") | ||
| 61 | + public void export(HttpServletResponse response, IotPermission iotPermission) | ||
| 62 | + { | ||
| 63 | + List<IotPermission> list = iotPermissionService.selectIotPermissionList(iotPermission); | ||
| 64 | + ExcelUtil<IotPermission> util = new ExcelUtil<IotPermission>(IotPermission.class); | ||
| 65 | + util.exportExcel(response, list, "topic权限控制数据"); | ||
| 66 | + } | ||
| 67 | + | ||
| 68 | + /** | ||
| 69 | + * 获取topic权限控制详细信息 | ||
| 70 | + */ | ||
| 71 | + @ApiOperation("获取topic权限控制详细信息") | ||
| 72 | + @PreAuthorize("@ss.hasPermi('iot:IotPermission:query')") | ||
| 73 | + @GetMapping(value = "/{id}") | ||
| 74 | + public AjaxResult getInfo(@PathVariable("id") Integer id) | ||
| 75 | + { | ||
| 76 | + return AjaxResult.success(iotPermissionService.selectIotPermissionById(id)); | ||
| 77 | + } | ||
| 78 | + | ||
| 79 | + /** | ||
| 80 | + * 新增topic权限控制 | ||
| 81 | + */ | ||
| 82 | + @ApiOperation("新增topic权限控制") | ||
| 83 | + @PreAuthorize("@ss.hasPermi('iot:IotPermission:add')") | ||
| 84 | + @Log(title = "topic权限控制", businessType = BusinessType.INSERT) | ||
| 85 | + @PostMapping | ||
| 86 | + public AjaxResult add(@RequestBody IotPermission iotPermission) | ||
| 87 | + { | ||
| 88 | + return toAjax(iotPermissionService.insertIotPermission(iotPermission)); | ||
| 89 | + } | ||
| 90 | + | ||
| 91 | + /** | ||
| 92 | + * 修改topic权限控制 | ||
| 93 | + */ | ||
| 94 | + @ApiOperation("修改topic权限控制") | ||
| 95 | + @PreAuthorize("@ss.hasPermi('iot:IotPermission:edit')") | ||
| 96 | + @Log(title = "topic权限控制", businessType = BusinessType.UPDATE) | ||
| 97 | + @PutMapping | ||
| 98 | + public AjaxResult edit(@RequestBody IotPermission iotPermission) | ||
| 99 | + { | ||
| 100 | + return toAjax(iotPermissionService.updateIotPermission(iotPermission)); | ||
| 101 | + } | ||
| 102 | + | ||
| 103 | + /** | ||
| 104 | + * 删除topic权限控制 | ||
| 105 | + */ | ||
| 106 | + @ApiOperation("删除topic权限控制") | ||
| 107 | + @PreAuthorize("@ss.hasPermi('iot:IotPermission:remove')") | ||
| 108 | + @Log(title = "topic权限控制", businessType = BusinessType.DELETE) | ||
| 109 | + @DeleteMapping("/{ids}") | ||
| 110 | + public AjaxResult remove(@PathVariable Integer[] ids) | ||
| 111 | + { | ||
| 112 | + return toAjax(iotPermissionService.deleteIotPermissionByIds(ids)); | ||
| 113 | + } | ||
| 114 | +} |
| 1 | +package com.zhonglai.luhui.admin.controller.iot; | ||
| 2 | + | ||
| 3 | +import java.util.List; | ||
| 4 | +import javax.servlet.http.HttpServletResponse; | ||
| 5 | + | ||
| 6 | +import com.ruoyi.common.utils.DateUtils; | ||
| 7 | +import io.swagger.annotations.Api; | ||
| 8 | +import io.swagger.annotations.ApiOperation; | ||
| 9 | +import org.springframework.security.access.prepost.PreAuthorize; | ||
| 10 | +import org.springframework.beans.factory.annotation.Autowired; | ||
| 11 | +import org.springframework.web.bind.annotation.GetMapping; | ||
| 12 | +import org.springframework.web.bind.annotation.PostMapping; | ||
| 13 | +import org.springframework.web.bind.annotation.PutMapping; | ||
| 14 | +import org.springframework.web.bind.annotation.DeleteMapping; | ||
| 15 | +import org.springframework.web.bind.annotation.PathVariable; | ||
| 16 | +import org.springframework.web.bind.annotation.RequestBody; | ||
| 17 | +import org.springframework.web.bind.annotation.RequestMapping; | ||
| 18 | +import org.springframework.web.bind.annotation.RestController; | ||
| 19 | +import com.ruoyi.common.annotation.Log; | ||
| 20 | +import com.ruoyi.common.core.controller.BaseController; | ||
| 21 | +import com.ruoyi.common.core.domain.AjaxResult; | ||
| 22 | +import com.ruoyi.common.enums.BusinessType; | ||
| 23 | +import com.ruoyi.system.domain.IotRole; | ||
| 24 | +import com.ruoyi.system.service.IIotRoleService; | ||
| 25 | +import com.ruoyi.common.utils.poi.ExcelUtil; | ||
| 26 | +import com.ruoyi.common.core.page.TableDataInfo; | ||
| 27 | + | ||
| 28 | +/** | ||
| 29 | + * 公司Controller | ||
| 30 | + * | ||
| 31 | + * @author 钟来 | ||
| 32 | + * @date 2022-08-26 | ||
| 33 | + */ | ||
| 34 | +@Api(tags = "公司") | ||
| 35 | +@RestController | ||
| 36 | +@RequestMapping("/iot/IotRole") | ||
| 37 | +public class IotRoleController extends BaseController | ||
| 38 | +{ | ||
| 39 | + @Autowired | ||
| 40 | + private IIotRoleService iotRoleService; | ||
| 41 | + | ||
| 42 | + /** | ||
| 43 | + * 查询公司列表 | ||
| 44 | + */ | ||
| 45 | + @ApiOperation("查询公司列表") | ||
| 46 | + @PreAuthorize("@ss.hasPermi('iot:IotRole:list')") | ||
| 47 | + @GetMapping("/list") | ||
| 48 | + public TableDataInfo list(IotRole iotRole) | ||
| 49 | + { | ||
| 50 | + startPage(); | ||
| 51 | + List<IotRole> list = iotRoleService.selectIotRoleList(iotRole); | ||
| 52 | + return getDataTable(list); | ||
| 53 | + } | ||
| 54 | + | ||
| 55 | + /** | ||
| 56 | + * 导出公司列表 | ||
| 57 | + */ | ||
| 58 | + @ApiOperation("导出公司列表") | ||
| 59 | + @PreAuthorize("@ss.hasPermi('iot:IotRole:export')") | ||
| 60 | + @Log(title = "公司", businessType = BusinessType.EXPORT) | ||
| 61 | + @PostMapping("/export") | ||
| 62 | + public void export(HttpServletResponse response, IotRole iotRole) | ||
| 63 | + { | ||
| 64 | + List<IotRole> list = iotRoleService.selectIotRoleList(iotRole); | ||
| 65 | + ExcelUtil<IotRole> util = new ExcelUtil<IotRole>(IotRole.class); | ||
| 66 | + util.exportExcel(response, list, "公司数据"); | ||
| 67 | + } | ||
| 68 | + | ||
| 69 | + /** | ||
| 70 | + * 获取公司详细信息 | ||
| 71 | + */ | ||
| 72 | + @ApiOperation("获取公司详细信息") | ||
| 73 | + @PreAuthorize("@ss.hasPermi('iot:IotRole:query')") | ||
| 74 | + @GetMapping(value = "/{id}") | ||
| 75 | + public AjaxResult getInfo(@PathVariable("id") Integer id) | ||
| 76 | + { | ||
| 77 | + return AjaxResult.success(iotRoleService.selectIotRoleById(id)); | ||
| 78 | + } | ||
| 79 | + | ||
| 80 | + /** | ||
| 81 | + * 新增公司 | ||
| 82 | + */ | ||
| 83 | + @ApiOperation("新增公司") | ||
| 84 | + @PreAuthorize("@ss.hasPermi('iot:IotRole:add')") | ||
| 85 | + @Log(title = "公司", businessType = BusinessType.INSERT) | ||
| 86 | + @PostMapping | ||
| 87 | + public AjaxResult add(@RequestBody IotRole iotRole) | ||
| 88 | + { | ||
| 89 | + iotRole.setCreate_time(DateUtils.getNowTimeMilly()); | ||
| 90 | + return toAjax(iotRoleService.insertIotRole(iotRole)); | ||
| 91 | + } | ||
| 92 | + | ||
| 93 | + /** | ||
| 94 | + * 修改公司 | ||
| 95 | + */ | ||
| 96 | + @ApiOperation("修改公司") | ||
| 97 | + @PreAuthorize("@ss.hasPermi('iot:IotRole:edit')") | ||
| 98 | + @Log(title = "公司", businessType = BusinessType.UPDATE) | ||
| 99 | + @PutMapping | ||
| 100 | + public AjaxResult edit(@RequestBody IotRole iotRole) | ||
| 101 | + { | ||
| 102 | + return toAjax(iotRoleService.updateIotRole(iotRole)); | ||
| 103 | + } | ||
| 104 | + | ||
| 105 | + /** | ||
| 106 | + * 删除公司 | ||
| 107 | + */ | ||
| 108 | + @ApiOperation("删除公司") | ||
| 109 | + @PreAuthorize("@ss.hasPermi('iot:IotRole:remove')") | ||
| 110 | + @Log(title = "公司", businessType = BusinessType.DELETE) | ||
| 111 | + @DeleteMapping("/{ids}") | ||
| 112 | + public AjaxResult remove(@PathVariable Integer[] ids) | ||
| 113 | + { | ||
| 114 | + return toAjax(iotRoleService.deleteIotRoleByIds(ids)); | ||
| 115 | + } | ||
| 116 | +} |
lh-admin/src/main/java/com/zhonglai/luhui/admin/controller/iot/IotTerminalController.java
0 → 100644
| 1 | +package com.zhonglai.luhui.admin.controller.iot; | ||
| 2 | + | ||
| 3 | +import java.util.List; | ||
| 4 | +import javax.servlet.http.HttpServletResponse; | ||
| 5 | + | ||
| 6 | +import io.swagger.annotations.Api; | ||
| 7 | +import io.swagger.annotations.ApiOperation; | ||
| 8 | +import org.springframework.security.access.prepost.PreAuthorize; | ||
| 9 | +import org.springframework.beans.factory.annotation.Autowired; | ||
| 10 | +import org.springframework.web.bind.annotation.GetMapping; | ||
| 11 | +import org.springframework.web.bind.annotation.PostMapping; | ||
| 12 | +import org.springframework.web.bind.annotation.PutMapping; | ||
| 13 | +import org.springframework.web.bind.annotation.DeleteMapping; | ||
| 14 | +import org.springframework.web.bind.annotation.PathVariable; | ||
| 15 | +import org.springframework.web.bind.annotation.RequestBody; | ||
| 16 | +import org.springframework.web.bind.annotation.RequestMapping; | ||
| 17 | +import org.springframework.web.bind.annotation.RestController; | ||
| 18 | +import com.ruoyi.common.annotation.Log; | ||
| 19 | +import com.ruoyi.common.core.controller.BaseController; | ||
| 20 | +import com.ruoyi.common.core.domain.AjaxResult; | ||
| 21 | +import com.ruoyi.common.enums.BusinessType; | ||
| 22 | +import com.ruoyi.system.domain.IotTerminal; | ||
| 23 | +import com.ruoyi.system.service.IIotTerminalService; | ||
| 24 | +import com.ruoyi.common.utils.poi.ExcelUtil; | ||
| 25 | +import com.ruoyi.common.core.page.TableDataInfo; | ||
| 26 | + | ||
| 27 | +/** | ||
| 28 | + * 终端Controller | ||
| 29 | + * | ||
| 30 | + * @author 钟来 | ||
| 31 | + * @date 2022-08-26 | ||
| 32 | + */ | ||
| 33 | +@Api(tags = "终端") | ||
| 34 | +@RestController | ||
| 35 | +@RequestMapping("/iot/IotTerminal") | ||
| 36 | +public class IotTerminalController extends BaseController | ||
| 37 | +{ | ||
| 38 | + @Autowired | ||
| 39 | + private IIotTerminalService iotTerminalService; | ||
| 40 | + | ||
| 41 | + /** | ||
| 42 | + * 查询终端列表 | ||
| 43 | + */ | ||
| 44 | + @ApiOperation("查询终端列表") | ||
| 45 | + @PreAuthorize("@ss.hasPermi('iot:IotTerminal:list')") | ||
| 46 | + @GetMapping("/list") | ||
| 47 | + public TableDataInfo list(IotTerminal iotTerminal) | ||
| 48 | + { | ||
| 49 | + startPage(); | ||
| 50 | + List<IotTerminal> list = iotTerminalService.selectIotTerminalList(iotTerminal); | ||
| 51 | + return getDataTable(list); | ||
| 52 | + } | ||
| 53 | + | ||
| 54 | + /** | ||
| 55 | + * 导出终端列表 | ||
| 56 | + */ | ||
| 57 | + @ApiOperation("导出终端列表") | ||
| 58 | + @PreAuthorize("@ss.hasPermi('iot:IotTerminal:export')") | ||
| 59 | + @Log(title = "终端", businessType = BusinessType.EXPORT) | ||
| 60 | + @PostMapping("/export") | ||
| 61 | + public void export(HttpServletResponse response, IotTerminal iotTerminal) | ||
| 62 | + { | ||
| 63 | + List<IotTerminal> list = iotTerminalService.selectIotTerminalList(iotTerminal); | ||
| 64 | + ExcelUtil<IotTerminal> util = new ExcelUtil<IotTerminal>(IotTerminal.class); | ||
| 65 | + util.exportExcel(response, list, "终端数据"); | ||
| 66 | + } | ||
| 67 | + | ||
| 68 | + /** | ||
| 69 | + * 获取终端详细信息 | ||
| 70 | + */ | ||
| 71 | + @ApiOperation("获取终端详细信息") | ||
| 72 | + @PreAuthorize("@ss.hasPermi('iot:IotTerminal:query')") | ||
| 73 | + @GetMapping(value = "/{id}") | ||
| 74 | + public AjaxResult getInfo(@PathVariable("id") String id) | ||
| 75 | + { | ||
| 76 | + return AjaxResult.success(iotTerminalService.selectIotTerminalById(id)); | ||
| 77 | + } | ||
| 78 | + | ||
| 79 | + /** | ||
| 80 | + * 新增终端 | ||
| 81 | + */ | ||
| 82 | + @ApiOperation("新增终端") | ||
| 83 | + @PreAuthorize("@ss.hasPermi('iot:IotTerminal:add')") | ||
| 84 | + @Log(title = "终端", businessType = BusinessType.INSERT) | ||
| 85 | + @PostMapping | ||
| 86 | + public AjaxResult add(@RequestBody IotTerminal iotTerminal) | ||
| 87 | + { | ||
| 88 | + return toAjax(iotTerminalService.insertIotTerminal(iotTerminal)); | ||
| 89 | + } | ||
| 90 | + | ||
| 91 | + /** | ||
| 92 | + * 修改终端 | ||
| 93 | + */ | ||
| 94 | + @ApiOperation("修改终端") | ||
| 95 | + @PreAuthorize("@ss.hasPermi('iot:IotTerminal:edit')") | ||
| 96 | + @Log(title = "终端", businessType = BusinessType.UPDATE) | ||
| 97 | + @PutMapping | ||
| 98 | + public AjaxResult edit(@RequestBody IotTerminal iotTerminal) | ||
| 99 | + { | ||
| 100 | + return toAjax(iotTerminalService.updateIotTerminal(iotTerminal)); | ||
| 101 | + } | ||
| 102 | + | ||
| 103 | + /** | ||
| 104 | + * 删除终端 | ||
| 105 | + */ | ||
| 106 | + @ApiOperation("删除终端") | ||
| 107 | + @PreAuthorize("@ss.hasPermi('iot:IotTerminal:remove')") | ||
| 108 | + @Log(title = "终端", businessType = BusinessType.DELETE) | ||
| 109 | + @DeleteMapping("/{ids}") | ||
| 110 | + public AjaxResult remove(@PathVariable String[] ids) | ||
| 111 | + { | ||
| 112 | + return toAjax(iotTerminalService.deleteIotTerminalByIds(ids)); | ||
| 113 | + } | ||
| 114 | +} |
lh-admin/src/main/java/com/zhonglai/luhui/admin/controller/iot/IotThingsModelController.java
0 → 100644
| 1 | +package com.zhonglai.luhui.admin.controller.iot; | ||
| 2 | + | ||
| 3 | +import java.util.List; | ||
| 4 | +import javax.servlet.http.HttpServletResponse; | ||
| 5 | + | ||
| 6 | +import io.swagger.annotations.Api; | ||
| 7 | +import io.swagger.annotations.ApiOperation; | ||
| 8 | +import org.springframework.security.access.prepost.PreAuthorize; | ||
| 9 | +import org.springframework.beans.factory.annotation.Autowired; | ||
| 10 | +import org.springframework.web.bind.annotation.GetMapping; | ||
| 11 | +import org.springframework.web.bind.annotation.PostMapping; | ||
| 12 | +import org.springframework.web.bind.annotation.PutMapping; | ||
| 13 | +import org.springframework.web.bind.annotation.DeleteMapping; | ||
| 14 | +import org.springframework.web.bind.annotation.PathVariable; | ||
| 15 | +import org.springframework.web.bind.annotation.RequestBody; | ||
| 16 | +import org.springframework.web.bind.annotation.RequestMapping; | ||
| 17 | +import org.springframework.web.bind.annotation.RestController; | ||
| 18 | +import com.ruoyi.common.annotation.Log; | ||
| 19 | +import com.ruoyi.common.core.controller.BaseController; | ||
| 20 | +import com.ruoyi.common.core.domain.AjaxResult; | ||
| 21 | +import com.ruoyi.common.enums.BusinessType; | ||
| 22 | +import com.ruoyi.system.domain.IotThingsModel; | ||
| 23 | +import com.ruoyi.system.service.IIotThingsModelService; | ||
| 24 | +import com.ruoyi.common.utils.poi.ExcelUtil; | ||
| 25 | +import com.ruoyi.common.core.page.TableDataInfo; | ||
| 26 | + | ||
| 27 | +/** | ||
| 28 | + * 物模型模板Controller | ||
| 29 | + * | ||
| 30 | + * @author 钟来 | ||
| 31 | + * @date 2022-08-26 | ||
| 32 | + */ | ||
| 33 | +@Api(tags = "物模型模板") | ||
| 34 | +@RestController | ||
| 35 | +@RequestMapping("/iot/IotThingsModel") | ||
| 36 | +public class IotThingsModelController extends BaseController | ||
| 37 | +{ | ||
| 38 | + @Autowired | ||
| 39 | + private IIotThingsModelService iotThingsModelService; | ||
| 40 | + | ||
| 41 | + /** | ||
| 42 | + * 查询物模型模板列表 | ||
| 43 | + */ | ||
| 44 | + @ApiOperation("查询物模型模板列表") | ||
| 45 | + @PreAuthorize("@ss.hasPermi('iot:IotThingsModel:list')") | ||
| 46 | + @GetMapping("/list") | ||
| 47 | + public TableDataInfo list(IotThingsModel iotThingsModel) | ||
| 48 | + { | ||
| 49 | + startPage(); | ||
| 50 | + List<IotThingsModel> list = iotThingsModelService.selectIotThingsModelList(iotThingsModel); | ||
| 51 | + return getDataTable(list); | ||
| 52 | + } | ||
| 53 | + | ||
| 54 | + /** | ||
| 55 | + * 导出物模型模板列表 | ||
| 56 | + */ | ||
| 57 | + @ApiOperation("导出物模型模板列表") | ||
| 58 | + @PreAuthorize("@ss.hasPermi('iot:IotThingsModel:export')") | ||
| 59 | + @Log(title = "物模型模板", businessType = BusinessType.EXPORT) | ||
| 60 | + @PostMapping("/export") | ||
| 61 | + public void export(HttpServletResponse response, IotThingsModel iotThingsModel) | ||
| 62 | + { | ||
| 63 | + List<IotThingsModel> list = iotThingsModelService.selectIotThingsModelList(iotThingsModel); | ||
| 64 | + ExcelUtil<IotThingsModel> util = new ExcelUtil<IotThingsModel>(IotThingsModel.class); | ||
| 65 | + util.exportExcel(response, list, "物模型模板数据"); | ||
| 66 | + } | ||
| 67 | + | ||
| 68 | + /** | ||
| 69 | + * 获取物模型模板详细信息 | ||
| 70 | + */ | ||
| 71 | + @ApiOperation("获取物模型模板详细信息") | ||
| 72 | + @PreAuthorize("@ss.hasPermi('iot:IotThingsModel:query')") | ||
| 73 | + @GetMapping(value = "/{model_id}") | ||
| 74 | + public AjaxResult getInfo(@PathVariable("model_id") Integer model_id) | ||
| 75 | + { | ||
| 76 | + return AjaxResult.success(iotThingsModelService.selectIotThingsModelByModel_id(model_id)); | ||
| 77 | + } | ||
| 78 | + | ||
| 79 | + /** | ||
| 80 | + * 新增物模型模板 | ||
| 81 | + */ | ||
| 82 | + @ApiOperation("新增物模型模板") | ||
| 83 | + @PreAuthorize("@ss.hasPermi('iot:IotThingsModel:add')") | ||
| 84 | + @Log(title = "物模型模板", businessType = BusinessType.INSERT) | ||
| 85 | + @PostMapping | ||
| 86 | + public AjaxResult add(@RequestBody IotThingsModel iotThingsModel) | ||
| 87 | + { | ||
| 88 | + return toAjax(iotThingsModelService.insertIotThingsModel(iotThingsModel)); | ||
| 89 | + } | ||
| 90 | + | ||
| 91 | + /** | ||
| 92 | + * 修改物模型模板 | ||
| 93 | + */ | ||
| 94 | + @ApiOperation("修改物模型模板") | ||
| 95 | + @PreAuthorize("@ss.hasPermi('iot:IotThingsModel:edit')") | ||
| 96 | + @Log(title = "物模型模板", businessType = BusinessType.UPDATE) | ||
| 97 | + @PutMapping | ||
| 98 | + public AjaxResult edit(@RequestBody IotThingsModel iotThingsModel) | ||
| 99 | + { | ||
| 100 | + return toAjax(iotThingsModelService.updateIotThingsModel(iotThingsModel)); | ||
| 101 | + } | ||
| 102 | + | ||
| 103 | + /** | ||
| 104 | + * 删除物模型模板 | ||
| 105 | + */ | ||
| 106 | + @ApiOperation("删除物模型模板") | ||
| 107 | + @PreAuthorize("@ss.hasPermi('iot:IotThingsModel:remove')") | ||
| 108 | + @Log(title = "物模型模板", businessType = BusinessType.DELETE) | ||
| 109 | + @DeleteMapping("/{model_ids}") | ||
| 110 | + public AjaxResult remove(@PathVariable Integer[] model_ids) | ||
| 111 | + { | ||
| 112 | + return toAjax(iotThingsModelService.deleteIotThingsModelByModel_ids(model_ids)); | ||
| 113 | + } | ||
| 114 | +} |
| 1 | +package com.zhonglai.luhui.admin.controller.iot; | ||
| 2 | + | ||
| 3 | +import java.util.List; | ||
| 4 | +import javax.servlet.http.HttpServletResponse; | ||
| 5 | + | ||
| 6 | +import io.swagger.annotations.Api; | ||
| 7 | +import io.swagger.annotations.ApiOperation; | ||
| 8 | +import org.springframework.security.access.prepost.PreAuthorize; | ||
| 9 | +import org.springframework.beans.factory.annotation.Autowired; | ||
| 10 | +import org.springframework.web.bind.annotation.GetMapping; | ||
| 11 | +import org.springframework.web.bind.annotation.PostMapping; | ||
| 12 | +import org.springframework.web.bind.annotation.PutMapping; | ||
| 13 | +import org.springframework.web.bind.annotation.DeleteMapping; | ||
| 14 | +import org.springframework.web.bind.annotation.PathVariable; | ||
| 15 | +import org.springframework.web.bind.annotation.RequestBody; | ||
| 16 | +import org.springframework.web.bind.annotation.RequestMapping; | ||
| 17 | +import org.springframework.web.bind.annotation.RestController; | ||
| 18 | +import com.ruoyi.common.annotation.Log; | ||
| 19 | +import com.ruoyi.common.core.controller.BaseController; | ||
| 20 | +import com.ruoyi.common.core.domain.AjaxResult; | ||
| 21 | +import com.ruoyi.common.enums.BusinessType; | ||
| 22 | +import com.ruoyi.system.domain.IotUser; | ||
| 23 | +import com.ruoyi.system.service.IIotUserService; | ||
| 24 | +import com.ruoyi.common.utils.poi.ExcelUtil; | ||
| 25 | +import com.ruoyi.common.core.page.TableDataInfo; | ||
| 26 | + | ||
| 27 | +/** | ||
| 28 | + * 产品Controller | ||
| 29 | + * | ||
| 30 | + * @author 钟来 | ||
| 31 | + * @date 2022-08-26 | ||
| 32 | + */ | ||
| 33 | +@Api(tags = "产品") | ||
| 34 | +@RestController | ||
| 35 | +@RequestMapping("/iot/IotUser") | ||
| 36 | +public class IotUserController extends BaseController | ||
| 37 | +{ | ||
| 38 | + @Autowired | ||
| 39 | + private IIotUserService iotUserService; | ||
| 40 | + | ||
| 41 | + /** | ||
| 42 | + * 查询产品列表 | ||
| 43 | + */ | ||
| 44 | + @ApiOperation("查询产品列表") | ||
| 45 | + @PreAuthorize("@ss.hasPermi('iot:IotUser:list')") | ||
| 46 | + @GetMapping("/list") | ||
| 47 | + public TableDataInfo list(IotUser iotUser) | ||
| 48 | + { | ||
| 49 | + startPage(); | ||
| 50 | + List<IotUser> list = iotUserService.selectIotUserList(iotUser); | ||
| 51 | + return getDataTable(list); | ||
| 52 | + } | ||
| 53 | + | ||
| 54 | + /** | ||
| 55 | + * 导出产品列表 | ||
| 56 | + */ | ||
| 57 | + @ApiOperation("导出产品列表") | ||
| 58 | + @PreAuthorize("@ss.hasPermi('iot:IotUser:export')") | ||
| 59 | + @Log(title = "产品", businessType = BusinessType.EXPORT) | ||
| 60 | + @PostMapping("/export") | ||
| 61 | + public void export(HttpServletResponse response, IotUser iotUser) | ||
| 62 | + { | ||
| 63 | + List<IotUser> list = iotUserService.selectIotUserList(iotUser); | ||
| 64 | + ExcelUtil<IotUser> util = new ExcelUtil<IotUser>(IotUser.class); | ||
| 65 | + util.exportExcel(response, list, "产品数据"); | ||
| 66 | + } | ||
| 67 | + | ||
| 68 | + /** | ||
| 69 | + * 获取产品详细信息 | ||
| 70 | + */ | ||
| 71 | + @ApiOperation("获取产品详细信息") | ||
| 72 | + @PreAuthorize("@ss.hasPermi('iot:IotUser:query')") | ||
| 73 | + @GetMapping(value = "/{id}") | ||
| 74 | + public AjaxResult getInfo(@PathVariable("id") Integer id) | ||
| 75 | + { | ||
| 76 | + return AjaxResult.success(iotUserService.selectIotUserById(id)); | ||
| 77 | + } | ||
| 78 | + | ||
| 79 | + /** | ||
| 80 | + * 新增产品 | ||
| 81 | + */ | ||
| 82 | + @ApiOperation("新增产品") | ||
| 83 | + @PreAuthorize("@ss.hasPermi('iot:IotUser:add')") | ||
| 84 | + @Log(title = "产品", businessType = BusinessType.INSERT) | ||
| 85 | + @PostMapping | ||
| 86 | + public AjaxResult add(@RequestBody IotUser iotUser) | ||
| 87 | + { | ||
| 88 | + return toAjax(iotUserService.insertIotUser(iotUser)); | ||
| 89 | + } | ||
| 90 | + | ||
| 91 | + /** | ||
| 92 | + * 修改产品 | ||
| 93 | + */ | ||
| 94 | + @ApiOperation("修改产品") | ||
| 95 | + @PreAuthorize("@ss.hasPermi('iot:IotUser:edit')") | ||
| 96 | + @Log(title = "产品", businessType = BusinessType.UPDATE) | ||
| 97 | + @PutMapping | ||
| 98 | + public AjaxResult edit(@RequestBody IotUser iotUser) | ||
| 99 | + { | ||
| 100 | + return toAjax(iotUserService.updateIotUser(iotUser)); | ||
| 101 | + } | ||
| 102 | + | ||
| 103 | + /** | ||
| 104 | + * 删除产品 | ||
| 105 | + */ | ||
| 106 | + @ApiOperation("删除产品") | ||
| 107 | + @PreAuthorize("@ss.hasPermi('iot:IotUser:remove')") | ||
| 108 | + @Log(title = "产品", businessType = BusinessType.DELETE) | ||
| 109 | + @DeleteMapping("/{ids}") | ||
| 110 | + public AjaxResult remove(@PathVariable Integer[] ids) | ||
| 111 | + { | ||
| 112 | + return toAjax(iotUserService.deleteIotUserByIds(ids)); | ||
| 113 | + } | ||
| 114 | +} |
| 1 | +package com.zhonglai.luhui.admin.controller.monitor; | ||
| 2 | + | ||
| 3 | +import com.ruoyi.common.core.domain.AjaxResult; | ||
| 4 | +import com.ruoyi.common.utils.StringUtils; | ||
| 5 | +import io.swagger.annotations.Api; | ||
| 6 | +import io.swagger.annotations.ApiOperation; | ||
| 7 | +import org.springframework.beans.factory.annotation.Autowired; | ||
| 8 | +import org.springframework.data.redis.core.RedisCallback; | ||
| 9 | +import org.springframework.data.redis.core.RedisTemplate; | ||
| 10 | +import org.springframework.security.access.prepost.PreAuthorize; | ||
| 11 | +import org.springframework.web.bind.annotation.GetMapping; | ||
| 12 | +import org.springframework.web.bind.annotation.RequestMapping; | ||
| 13 | +import org.springframework.web.bind.annotation.RestController; | ||
| 14 | + | ||
| 15 | +import java.util.*; | ||
| 16 | + | ||
| 17 | +/** | ||
| 18 | + * 缓存监控 | ||
| 19 | + * | ||
| 20 | + * @author ruoyi | ||
| 21 | + */ | ||
| 22 | +@Api(tags = "缓存监控") | ||
| 23 | +@RestController | ||
| 24 | +@RequestMapping("/monitor/cache") | ||
| 25 | +public class CacheController | ||
| 26 | +{ | ||
| 27 | + @Autowired | ||
| 28 | + private RedisTemplate<String, String> redisTemplate; | ||
| 29 | + | ||
| 30 | + @ApiOperation("获取详情") | ||
| 31 | + @PreAuthorize("@ss.hasPermi('monitor:cache:list')") | ||
| 32 | + @GetMapping() | ||
| 33 | + public AjaxResult getInfo() throws Exception | ||
| 34 | + { | ||
| 35 | + Properties info = (Properties) redisTemplate.execute((RedisCallback<Object>) connection -> connection.info()); | ||
| 36 | + Properties commandStats = (Properties) redisTemplate.execute((RedisCallback<Object>) connection -> connection.info("commandstats")); | ||
| 37 | + Object dbSize = redisTemplate.execute((RedisCallback<Object>) connection -> connection.dbSize()); | ||
| 38 | + | ||
| 39 | + Map<String, Object> result = new HashMap<>(3); | ||
| 40 | + result.put("info", info); | ||
| 41 | + result.put("dbSize", dbSize); | ||
| 42 | + | ||
| 43 | + List<Map<String, String>> pieList = new ArrayList<>(); | ||
| 44 | + commandStats.stringPropertyNames().forEach(key -> { | ||
| 45 | + Map<String, String> data = new HashMap<>(2); | ||
| 46 | + String property = commandStats.getProperty(key); | ||
| 47 | + data.put("name", StringUtils.removeStart(key, "cmdstat_")); | ||
| 48 | + data.put("value", StringUtils.substringBetween(property, "calls=", ",usec")); | ||
| 49 | + pieList.add(data); | ||
| 50 | + }); | ||
| 51 | + result.put("commandStats", pieList); | ||
| 52 | + return AjaxResult.success(result); | ||
| 53 | + } | ||
| 54 | +} |
| 1 | +package com.zhonglai.luhui.admin.controller.monitor; | ||
| 2 | + | ||
| 3 | +import com.ruoyi.common.core.domain.AjaxResult; | ||
| 4 | +import com.ruoyi.framework.web.domain.Server; | ||
| 5 | +import io.swagger.annotations.Api; | ||
| 6 | +import io.swagger.annotations.ApiOperation; | ||
| 7 | +import org.springframework.security.access.prepost.PreAuthorize; | ||
| 8 | +import org.springframework.web.bind.annotation.GetMapping; | ||
| 9 | +import org.springframework.web.bind.annotation.RequestMapping; | ||
| 10 | +import org.springframework.web.bind.annotation.RestController; | ||
| 11 | + | ||
| 12 | +/** | ||
| 13 | + * 服务器监控 | ||
| 14 | + * | ||
| 15 | + * @author ruoyi | ||
| 16 | + */ | ||
| 17 | +@Api(tags = "服务器监控") | ||
| 18 | +@RestController | ||
| 19 | +@RequestMapping("/monitor/server") | ||
| 20 | +public class ServerController | ||
| 21 | +{ | ||
| 22 | + @ApiOperation("获取详情") | ||
| 23 | + @PreAuthorize("@ss.hasPermi('monitor:server:list')") | ||
| 24 | + @GetMapping() | ||
| 25 | + public AjaxResult getInfo() throws Exception | ||
| 26 | + { | ||
| 27 | + Server server = new Server(); | ||
| 28 | + server.copyTo(); | ||
| 29 | + return AjaxResult.success(server); | ||
| 30 | + } | ||
| 31 | +} |
lh-admin/src/main/java/com/zhonglai/luhui/admin/controller/monitor/SysLogininforController.java
0 → 100644
| 1 | +package com.zhonglai.luhui.admin.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.core.page.TableDataInfo;import com.ruoyi.common.enums.BusinessType;import com.ruoyi.common.utils.poi.ExcelUtil;import com.ruoyi.system.domain.SysLogininfor;import com.ruoyi.system.service.ISysLogininforService;import io.swagger.annotations.Api;import io.swagger.annotations.ApiImplicitParam;import io.swagger.annotations.ApiOperation;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; /** * 系统访问记录 * * @author ruoyi */@Api(tags = "系统访问记录")@RestController@RequestMapping("/monitor/logininfor")public class SysLogininforController extends BaseController{ @Autowired private ISysLogininforService logininforService; @ApiOperation("列表") @PreAuthorize("@ss.hasPermi('monitor:logininfor:list')") @GetMapping("/list") public TableDataInfo list(SysLogininfor logininfor) { startPage(); List<SysLogininfor> list = logininforService.selectLogininforList(logininfor); return getDataTable(list); } @ApiOperation("导入") @Log(title = "登录日志", businessType = BusinessType.EXPORT) @PreAuthorize("@ss.hasPermi('monitor:logininfor: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, "登录日志"); } @ApiOperation("删除") @ApiImplicitParam(name = "infoIds", value = "id集合", dataType = "Long[]", dataTypeClass = Long[].class) @PreAuthorize("@ss.hasPermi('monitor:logininfor:remove')") @Log(title = "登录日志", businessType = BusinessType.DELETE) @DeleteMapping("/{infoIds}") public AjaxResult remove(@PathVariable Long[] infoIds) { return toAjax(logininforService.deleteLogininforByIds(infoIds)); } @ApiOperation("清除") @PreAuthorize("@ss.hasPermi('monitor:logininfor:remove')") @Log(title = "登录日志", businessType = BusinessType.CLEAN) @DeleteMapping("/clean") public AjaxResult clean() { logininforService.cleanLogininfor(); return AjaxResult.success(); }} |
lh-admin/src/main/java/com/zhonglai/luhui/admin/controller/monitor/SysOperlogController.java
0 → 100644
| 1 | +package com.zhonglai.luhui.admin.controller.monitor; | ||
| 2 | + | ||
| 3 | +import com.ruoyi.common.annotation.Log; | ||
| 4 | +import com.ruoyi.common.core.controller.BaseController; | ||
| 5 | +import com.ruoyi.common.core.domain.AjaxResult; | ||
| 6 | +import com.ruoyi.common.core.page.TableDataInfo; | ||
| 7 | +import com.ruoyi.common.enums.BusinessType; | ||
| 8 | +import com.ruoyi.common.utils.poi.ExcelUtil; | ||
| 9 | +import com.ruoyi.system.domain.SysOperLog; | ||
| 10 | +import com.ruoyi.system.service.ISysOperLogService; | ||
| 11 | +import io.swagger.annotations.Api; | ||
| 12 | +import io.swagger.annotations.ApiImplicitParam; | ||
| 13 | +import io.swagger.annotations.ApiImplicitParams; | ||
| 14 | +import io.swagger.annotations.ApiOperation; | ||
| 15 | +import org.springframework.beans.factory.annotation.Autowired; | ||
| 16 | +import org.springframework.security.access.prepost.PreAuthorize; | ||
| 17 | +import org.springframework.web.bind.annotation.*; | ||
| 18 | + | ||
| 19 | +import javax.servlet.http.HttpServletResponse; | ||
| 20 | +import java.util.List; | ||
| 21 | + | ||
| 22 | +/** | ||
| 23 | + * 操作日志记录 | ||
| 24 | + * | ||
| 25 | + * @author ruoyi | ||
| 26 | + */ | ||
| 27 | +@Api(tags = "操作日志记录") | ||
| 28 | +@RestController | ||
| 29 | +@RequestMapping("/monitor/operlog") | ||
| 30 | +public class SysOperlogController extends BaseController | ||
| 31 | +{ | ||
| 32 | + @Autowired | ||
| 33 | + private ISysOperLogService operLogService; | ||
| 34 | + | ||
| 35 | + @ApiOperation("列表") | ||
| 36 | + @PreAuthorize("@ss.hasPermi('monitor:operlog:list')") | ||
| 37 | + @GetMapping("/list") | ||
| 38 | + public TableDataInfo list(SysOperLog operLog) | ||
| 39 | + { | ||
| 40 | + startPage(); | ||
| 41 | + List<SysOperLog> list = operLogService.selectOperLogList(operLog); | ||
| 42 | + return getDataTable(list); | ||
| 43 | + } | ||
| 44 | + | ||
| 45 | + @ApiOperation("导出") | ||
| 46 | + @Log(title = "操作日志", businessType = BusinessType.EXPORT) | ||
| 47 | + @PreAuthorize("@ss.hasPermi('monitor:operlog:export')") | ||
| 48 | + @PostMapping("/export") | ||
| 49 | + public void export(HttpServletResponse response, SysOperLog operLog) | ||
| 50 | + { | ||
| 51 | + List<SysOperLog> list = operLogService.selectOperLogList(operLog); | ||
| 52 | + ExcelUtil<SysOperLog> util = new ExcelUtil<SysOperLog>(SysOperLog.class); | ||
| 53 | + util.exportExcel(response, list, "操作日志"); | ||
| 54 | + } | ||
| 55 | + | ||
| 56 | + @ApiOperation("删除") | ||
| 57 | + @ApiImplicitParams({ | ||
| 58 | + @ApiImplicitParam(name = "operIds", value = "id集合", required = true, dataType = "Long[]", dataTypeClass = Long[].class) | ||
| 59 | + }) | ||
| 60 | + @Log(title = "操作日志", businessType = BusinessType.DELETE) | ||
| 61 | + @PreAuthorize("@ss.hasPermi('monitor:operlog:remove')") | ||
| 62 | + @DeleteMapping("/{operIds}") | ||
| 63 | + public AjaxResult remove(@PathVariable Long[] operIds) | ||
| 64 | + { | ||
| 65 | + return toAjax(operLogService.deleteOperLogByIds(operIds)); | ||
| 66 | + } | ||
| 67 | + | ||
| 68 | + @ApiOperation("清除") | ||
| 69 | + @Log(title = "操作日志", businessType = BusinessType.CLEAN) | ||
| 70 | + @PreAuthorize("@ss.hasPermi('monitor:operlog:remove')") | ||
| 71 | + @DeleteMapping("/clean") | ||
| 72 | + public AjaxResult clean() | ||
| 73 | + { | ||
| 74 | + operLogService.cleanOperLog(); | ||
| 75 | + return AjaxResult.success(); | ||
| 76 | + } | ||
| 77 | +} |
lh-admin/src/main/java/com/zhonglai/luhui/admin/controller/monitor/SysUserOnlineController.java
0 → 100644
| 1 | +package com.zhonglai.luhui.admin.controller.monitor; | ||
| 2 | + | ||
| 3 | +import com.ruoyi.common.annotation.Log; | ||
| 4 | +import com.ruoyi.common.constant.Constants; | ||
| 5 | +import com.ruoyi.common.core.controller.BaseController; | ||
| 6 | +import com.ruoyi.common.core.domain.AjaxResult; | ||
| 7 | +import com.ruoyi.common.core.domain.model.LoginUser; | ||
| 8 | +import com.ruoyi.common.core.page.TableDataInfo; | ||
| 9 | +import com.ruoyi.common.core.redis.RedisCache; | ||
| 10 | +import com.ruoyi.common.enums.BusinessType; | ||
| 11 | +import com.ruoyi.common.utils.StringUtils; | ||
| 12 | +import com.ruoyi.system.domain.SysUserOnline; | ||
| 13 | +import com.ruoyi.system.service.ISysUserOnlineService; | ||
| 14 | +import io.swagger.annotations.Api; | ||
| 15 | +import io.swagger.annotations.ApiImplicitParam; | ||
| 16 | +import io.swagger.annotations.ApiImplicitParams; | ||
| 17 | +import io.swagger.annotations.ApiOperation; | ||
| 18 | +import org.springframework.beans.factory.annotation.Autowired; | ||
| 19 | +import org.springframework.security.access.prepost.PreAuthorize; | ||
| 20 | +import org.springframework.web.bind.annotation.*; | ||
| 21 | + | ||
| 22 | +import java.util.ArrayList; | ||
| 23 | +import java.util.Collection; | ||
| 24 | +import java.util.Collections; | ||
| 25 | +import java.util.List; | ||
| 26 | + | ||
| 27 | +/** | ||
| 28 | + * 在线用户监控 | ||
| 29 | + * | ||
| 30 | + * @author ruoyi | ||
| 31 | + */ | ||
| 32 | +@Api(tags = "在线用户监控") | ||
| 33 | +@RestController | ||
| 34 | +@RequestMapping("/monitor/online") | ||
| 35 | +public class SysUserOnlineController extends BaseController | ||
| 36 | +{ | ||
| 37 | + @Autowired | ||
| 38 | + private ISysUserOnlineService userOnlineService; | ||
| 39 | + | ||
| 40 | + @Autowired | ||
| 41 | + private RedisCache redisCache; | ||
| 42 | + | ||
| 43 | + @ApiOperation("列表") | ||
| 44 | + @ApiImplicitParams({ | ||
| 45 | + @ApiImplicitParam(name = "ipaddr", value = "ip地址", required = true, dataType = "String", dataTypeClass = String.class), | ||
| 46 | + @ApiImplicitParam(name = "userName", value = "用户名", required = true, dataType = "String", dataTypeClass = String.class) | ||
| 47 | + }) | ||
| 48 | + @PreAuthorize("@ss.hasPermi('monitor:online:list')") | ||
| 49 | + @GetMapping("/list") | ||
| 50 | + public TableDataInfo list(String ipaddr, String userName) | ||
| 51 | + { | ||
| 52 | + Collection<String> keys = redisCache.keys(Constants.LOGIN_TOKEN_KEY + "*"); | ||
| 53 | + List<SysUserOnline> userOnlineList = new ArrayList<SysUserOnline>(); | ||
| 54 | + for (String key : keys) | ||
| 55 | + { | ||
| 56 | + LoginUser user = redisCache.getCacheObject(key); | ||
| 57 | + if (StringUtils.isNotEmpty(ipaddr) && StringUtils.isNotEmpty(userName)) | ||
| 58 | + { | ||
| 59 | + if (StringUtils.equals(ipaddr, user.getIpaddr()) && StringUtils.equals(userName, user.getUsername())) | ||
| 60 | + { | ||
| 61 | + userOnlineList.add(userOnlineService.selectOnlineByInfo(ipaddr, userName, user)); | ||
| 62 | + } | ||
| 63 | + } | ||
| 64 | + else if (StringUtils.isNotEmpty(ipaddr)) | ||
| 65 | + { | ||
| 66 | + if (StringUtils.equals(ipaddr, user.getIpaddr())) | ||
| 67 | + { | ||
| 68 | + userOnlineList.add(userOnlineService.selectOnlineByIpaddr(ipaddr, user)); | ||
| 69 | + } | ||
| 70 | + } | ||
| 71 | + else if (StringUtils.isNotEmpty(userName) && StringUtils.isNotNull(user.getUser())) | ||
| 72 | + { | ||
| 73 | + if (StringUtils.equals(userName, user.getUsername())) | ||
| 74 | + { | ||
| 75 | + userOnlineList.add(userOnlineService.selectOnlineByUserName(userName, user)); | ||
| 76 | + } | ||
| 77 | + } | ||
| 78 | + else | ||
| 79 | + { | ||
| 80 | + userOnlineList.add(userOnlineService.loginUserToUserOnline(user)); | ||
| 81 | + } | ||
| 82 | + } | ||
| 83 | + Collections.reverse(userOnlineList); | ||
| 84 | + userOnlineList.removeAll(Collections.singleton(null)); | ||
| 85 | + return getDataTable(userOnlineList); | ||
| 86 | + } | ||
| 87 | + | ||
| 88 | + /** | ||
| 89 | + * 强退用户 | ||
| 90 | + */ | ||
| 91 | + @ApiOperation("强退用户") | ||
| 92 | + @ApiImplicitParams({ | ||
| 93 | + @ApiImplicitParam(name = "tokenId", value = "token", required = true, dataType = "String", dataTypeClass = String.class) | ||
| 94 | + }) | ||
| 95 | + @PreAuthorize("@ss.hasPermi('monitor:online:forceLogout')") | ||
| 96 | + @Log(title = "在线用户", businessType = BusinessType.FORCE) | ||
| 97 | + @DeleteMapping("/{tokenId}") | ||
| 98 | + public AjaxResult forceLogout(@PathVariable String tokenId) | ||
| 99 | + { | ||
| 100 | + redisCache.deleteObject(Constants.LOGIN_TOKEN_KEY + tokenId); | ||
| 101 | + return AjaxResult.success(); | ||
| 102 | + } | ||
| 103 | +} |
lh-admin/src/main/java/com/zhonglai/luhui/admin/controller/system/SysConfigController.java
0 → 100644
| 1 | +package com.zhonglai.luhui.admin.controller.system; | ||
| 2 | + | ||
| 3 | +import com.ruoyi.common.annotation.Log; | ||
| 4 | +import com.ruoyi.common.constant.UserConstants; | ||
| 5 | +import com.ruoyi.common.core.controller.BaseController; | ||
| 6 | +import com.ruoyi.common.core.domain.AjaxResult; | ||
| 7 | +import com.ruoyi.common.core.page.TableDataInfo; | ||
| 8 | +import com.ruoyi.common.enums.BusinessType; | ||
| 9 | +import com.ruoyi.common.utils.poi.ExcelUtil; | ||
| 10 | +import com.ruoyi.system.domain.SysConfig; | ||
| 11 | +import com.ruoyi.system.service.ISysConfigService; | ||
| 12 | +import io.swagger.annotations.Api; | ||
| 13 | +import io.swagger.annotations.ApiImplicitParam; | ||
| 14 | +import io.swagger.annotations.ApiImplicitParams; | ||
| 15 | +import io.swagger.annotations.ApiOperation; | ||
| 16 | +import org.springframework.beans.factory.annotation.Autowired; | ||
| 17 | +import org.springframework.security.access.prepost.PreAuthorize; | ||
| 18 | +import org.springframework.validation.annotation.Validated; | ||
| 19 | +import org.springframework.web.bind.annotation.*; | ||
| 20 | + | ||
| 21 | +import javax.servlet.http.HttpServletResponse; | ||
| 22 | +import java.util.List; | ||
| 23 | + | ||
| 24 | +/** | ||
| 25 | + * 参数配置 信息操作处理 | ||
| 26 | + * | ||
| 27 | + * @author ruoyi | ||
| 28 | + */ | ||
| 29 | +@Api(tags = "参数配置") | ||
| 30 | +@RestController | ||
| 31 | +@RequestMapping("/mapper/system/config") | ||
| 32 | +public class SysConfigController extends BaseController | ||
| 33 | +{ | ||
| 34 | + @Autowired | ||
| 35 | + private ISysConfigService configService; | ||
| 36 | + | ||
| 37 | + /** | ||
| 38 | + * 获取参数配置列表 | ||
| 39 | + */ | ||
| 40 | + @ApiOperation("列表") | ||
| 41 | + @PreAuthorize("@ss.hasPermi('system:config:list')") | ||
| 42 | + @GetMapping("/list") | ||
| 43 | + public TableDataInfo list(SysConfig config) | ||
| 44 | + { | ||
| 45 | + startPage(); | ||
| 46 | + List<SysConfig> list = configService.selectConfigList(config); | ||
| 47 | + return getDataTable(list); | ||
| 48 | + } | ||
| 49 | + | ||
| 50 | + @ApiOperation("导出") | ||
| 51 | + @Log(title = "参数管理", businessType = BusinessType.EXPORT) | ||
| 52 | + @PreAuthorize("@ss.hasPermi('system:config:export')") | ||
| 53 | + @PostMapping("/export") | ||
| 54 | + public void export(HttpServletResponse response, SysConfig config) | ||
| 55 | + { | ||
| 56 | + List<SysConfig> list = configService.selectConfigList(config); | ||
| 57 | + ExcelUtil<SysConfig> util = new ExcelUtil<SysConfig>(SysConfig.class); | ||
| 58 | + util.exportExcel(response, list, "参数数据"); | ||
| 59 | + } | ||
| 60 | + | ||
| 61 | + /** | ||
| 62 | + * 根据参数编号获取详细信息 | ||
| 63 | + */ | ||
| 64 | + @ApiOperation("根据参数编号获取详细信息") | ||
| 65 | + @ApiImplicitParams({ | ||
| 66 | + @ApiImplicitParam(name = "configId", value = "参数编号", required = true, dataType = "Long", dataTypeClass = Long.class) | ||
| 67 | + }) | ||
| 68 | + @PreAuthorize("@ss.hasPermi('system:config:query')") | ||
| 69 | + @GetMapping(value = "/{configId}") | ||
| 70 | + public AjaxResult getInfo(@PathVariable Long configId) | ||
| 71 | + { | ||
| 72 | + return AjaxResult.success(configService.selectConfigById(configId)); | ||
| 73 | + } | ||
| 74 | + | ||
| 75 | + /** | ||
| 76 | + * 根据参数键名查询参数值 | ||
| 77 | + */ | ||
| 78 | + @ApiOperation("根据参数键名查询参数值") | ||
| 79 | + @ApiImplicitParams({ | ||
| 80 | + @ApiImplicitParam(name = "configKey", value = "参数键名", required = true, dataType = "String", dataTypeClass = String.class) | ||
| 81 | + }) | ||
| 82 | + @GetMapping(value = "/configKey/{configKey}") | ||
| 83 | + public AjaxResult getConfigKey(@PathVariable String configKey) | ||
| 84 | + { | ||
| 85 | + return AjaxResult.success(configService.selectConfigByKey(configKey)); | ||
| 86 | + } | ||
| 87 | + | ||
| 88 | + /** | ||
| 89 | + * 新增参数配置 | ||
| 90 | + */ | ||
| 91 | + @ApiOperation("新增参数配置") | ||
| 92 | + @PreAuthorize("@ss.hasPermi('system:config:add')") | ||
| 93 | + @Log(title = "参数管理", businessType = BusinessType.INSERT) | ||
| 94 | + @PostMapping | ||
| 95 | + public AjaxResult add(@Validated @RequestBody SysConfig config) | ||
| 96 | + { | ||
| 97 | + if (UserConstants.NOT_UNIQUE.equals(configService.checkConfigKeyUnique(config))) | ||
| 98 | + { | ||
| 99 | + return AjaxResult.error("新增参数'" + config.getConfigName() + "'失败,参数键名已存在"); | ||
| 100 | + } | ||
| 101 | + config.setCreateBy(getUsername()); | ||
| 102 | + return toAjax(configService.insertConfig(config)); | ||
| 103 | + } | ||
| 104 | + | ||
| 105 | + /** | ||
| 106 | + * 修改参数配置 | ||
| 107 | + */ | ||
| 108 | + @ApiOperation("修改参数配置") | ||
| 109 | + @PreAuthorize("@ss.hasPermi('system:config:edit')") | ||
| 110 | + @Log(title = "参数管理", businessType = BusinessType.UPDATE) | ||
| 111 | + @PutMapping | ||
| 112 | + public AjaxResult edit(@Validated @RequestBody SysConfig config) | ||
| 113 | + { | ||
| 114 | + if (UserConstants.NOT_UNIQUE.equals(configService.checkConfigKeyUnique(config))) | ||
| 115 | + { | ||
| 116 | + return AjaxResult.error("修改参数'" + config.getConfigName() + "'失败,参数键名已存在"); | ||
| 117 | + } | ||
| 118 | + config.setUpdateBy(getUsername()); | ||
| 119 | + return toAjax(configService.updateConfig(config)); | ||
| 120 | + } | ||
| 121 | + | ||
| 122 | + /** | ||
| 123 | + * 删除参数配置 | ||
| 124 | + */ | ||
| 125 | + @ApiOperation("删除参数配置") | ||
| 126 | + @ApiImplicitParams({ | ||
| 127 | + @ApiImplicitParam(name = "configIds", value = "id集合", required = true, dataType = "Long[]", dataTypeClass = Long[].class) | ||
| 128 | + }) | ||
| 129 | + @PreAuthorize("@ss.hasPermi('system:config:remove')") | ||
| 130 | + @Log(title = "参数管理", businessType = BusinessType.DELETE) | ||
| 131 | + @DeleteMapping("/{configIds}") | ||
| 132 | + public AjaxResult remove(@PathVariable Long[] configIds) | ||
| 133 | + { | ||
| 134 | + configService.deleteConfigByIds(configIds); | ||
| 135 | + return success(); | ||
| 136 | + } | ||
| 137 | + | ||
| 138 | + /** | ||
| 139 | + * 刷新参数缓存 | ||
| 140 | + */ | ||
| 141 | + @ApiOperation("刷新参数缓存") | ||
| 142 | + @PreAuthorize("@ss.hasPermi('system:config:remove')") | ||
| 143 | + @Log(title = "参数管理", businessType = BusinessType.CLEAN) | ||
| 144 | + @DeleteMapping("/refreshCache") | ||
| 145 | + public AjaxResult refreshCache() | ||
| 146 | + { | ||
| 147 | + configService.resetConfigCache(); | ||
| 148 | + return AjaxResult.success(); | ||
| 149 | + } | ||
| 150 | +} |
| 1 | +package com.zhonglai.luhui.admin.controller.system; | ||
| 2 | + | ||
| 3 | +import com.ruoyi.common.annotation.Log; | ||
| 4 | +import com.ruoyi.common.constant.UserConstants; | ||
| 5 | +import com.ruoyi.common.core.controller.BaseController; | ||
| 6 | +import com.ruoyi.common.core.domain.AjaxResult; | ||
| 7 | +import com.ruoyi.common.core.domain.entity.SysDept; | ||
| 8 | +import com.ruoyi.common.enums.BusinessType; | ||
| 9 | +import com.ruoyi.common.utils.StringUtils; | ||
| 10 | +import com.ruoyi.system.service.ISysDeptService; | ||
| 11 | +import io.swagger.annotations.Api; | ||
| 12 | +import io.swagger.annotations.ApiImplicitParam; | ||
| 13 | +import io.swagger.annotations.ApiImplicitParams; | ||
| 14 | +import io.swagger.annotations.ApiOperation; | ||
| 15 | +import org.apache.commons.lang3.ArrayUtils; | ||
| 16 | +import org.springframework.beans.factory.annotation.Autowired; | ||
| 17 | +import org.springframework.security.access.prepost.PreAuthorize; | ||
| 18 | +import org.springframework.validation.annotation.Validated; | ||
| 19 | +import org.springframework.web.bind.annotation.*; | ||
| 20 | + | ||
| 21 | +import java.util.Iterator; | ||
| 22 | +import java.util.List; | ||
| 23 | + | ||
| 24 | +/** | ||
| 25 | + * 部门信息 | ||
| 26 | + * | ||
| 27 | + * @author ruoyi | ||
| 28 | + */ | ||
| 29 | +@Api(tags = "部门信息") | ||
| 30 | +@RestController | ||
| 31 | +@RequestMapping("/mapper/system/dept") | ||
| 32 | +public class SysDeptController extends BaseController | ||
| 33 | +{ | ||
| 34 | + @Autowired | ||
| 35 | + private ISysDeptService deptService; | ||
| 36 | + | ||
| 37 | + /** | ||
| 38 | + * 获取部门列表 | ||
| 39 | + */ | ||
| 40 | + @ApiOperation("获取部门列表") | ||
| 41 | + @PreAuthorize("@ss.hasPermi('system:dept:list')") | ||
| 42 | + @GetMapping("/list") | ||
| 43 | + public AjaxResult list(SysDept dept) | ||
| 44 | + { | ||
| 45 | + List<SysDept> depts = deptService.selectDeptList(dept); | ||
| 46 | + return AjaxResult.success(depts); | ||
| 47 | + } | ||
| 48 | + | ||
| 49 | + /** | ||
| 50 | + * 查询部门列表(排除节点) | ||
| 51 | + */ | ||
| 52 | + @ApiOperation("查询部门列表(排除节点)") | ||
| 53 | + @ApiImplicitParams({ | ||
| 54 | + @ApiImplicitParam(name = "deptId", value = "部门id", required = true, dataType = "Long", dataTypeClass = Long.class) | ||
| 55 | + }) | ||
| 56 | + @PreAuthorize("@ss.hasPermi('system:dept:list')") | ||
| 57 | + @GetMapping("/list/exclude/{deptId}") | ||
| 58 | + public AjaxResult excludeChild(@PathVariable(value = "deptId", required = false) Long deptId) | ||
| 59 | + { | ||
| 60 | + List<SysDept> depts = deptService.selectDeptList(new SysDept()); | ||
| 61 | + Iterator<SysDept> it = depts.iterator(); | ||
| 62 | + while (it.hasNext()) | ||
| 63 | + { | ||
| 64 | + SysDept d = (SysDept) it.next(); | ||
| 65 | + if (d.getDeptId().intValue() == deptId | ||
| 66 | + || ArrayUtils.contains(StringUtils.split(d.getAncestors(), ","), deptId + "")) | ||
| 67 | + { | ||
| 68 | + it.remove(); | ||
| 69 | + } | ||
| 70 | + } | ||
| 71 | + return AjaxResult.success(depts); | ||
| 72 | + } | ||
| 73 | + | ||
| 74 | + /** | ||
| 75 | + * 根据部门编号获取详细信息 | ||
| 76 | + */ | ||
| 77 | + @ApiOperation("根据部门编号获取详细信息") | ||
| 78 | + @ApiImplicitParams({ | ||
| 79 | + @ApiImplicitParam(name = "deptId", value = "部门编号", required = true, dataType = "Long", dataTypeClass = Long.class) | ||
| 80 | + }) | ||
| 81 | + @PreAuthorize("@ss.hasPermi('system:dept:query')") | ||
| 82 | + @GetMapping(value = "/{deptId}") | ||
| 83 | + public AjaxResult getInfo(@PathVariable Long deptId) | ||
| 84 | + { | ||
| 85 | + deptService.checkDeptDataScope(deptId); | ||
| 86 | + return AjaxResult.success(deptService.selectDeptById(deptId)); | ||
| 87 | + } | ||
| 88 | + | ||
| 89 | + /** | ||
| 90 | + * 获取部门下拉树列表 | ||
| 91 | + */ | ||
| 92 | + @ApiOperation("获取部门下拉树列表") | ||
| 93 | + @GetMapping("/treeselect") | ||
| 94 | + public AjaxResult treeselect(SysDept dept) | ||
| 95 | + { | ||
| 96 | + List<SysDept> depts = deptService.selectDeptList(dept); | ||
| 97 | + return AjaxResult.success(deptService.buildDeptTreeSelect(depts)); | ||
| 98 | + } | ||
| 99 | + | ||
| 100 | + /** | ||
| 101 | + * 加载对应角色部门列表树 | ||
| 102 | + */ | ||
| 103 | + @ApiOperation("加载对应角色部门列表树") | ||
| 104 | + @ApiImplicitParams({ | ||
| 105 | + @ApiImplicitParam(name = "roleId", value = "角色id", required = true, dataType = "Long", dataTypeClass = Long.class) | ||
| 106 | + }) | ||
| 107 | + @GetMapping(value = "/roleDeptTreeselect/{roleId}") | ||
| 108 | + public AjaxResult roleDeptTreeselect(@PathVariable("roleId") Long roleId) | ||
| 109 | + { | ||
| 110 | + List<SysDept> depts = deptService.selectDeptList(new SysDept()); | ||
| 111 | + AjaxResult ajax = AjaxResult.success(); | ||
| 112 | + ajax.put("checkedKeys", deptService.selectDeptListByRoleId(roleId)); | ||
| 113 | + ajax.put("depts", deptService.buildDeptTreeSelect(depts)); | ||
| 114 | + return ajax; | ||
| 115 | + } | ||
| 116 | + | ||
| 117 | + /** | ||
| 118 | + * 新增部门 | ||
| 119 | + */ | ||
| 120 | + @ApiOperation("新增部门") | ||
| 121 | + @PreAuthorize("@ss.hasPermi('system:dept:add')") | ||
| 122 | + @Log(title = "部门管理", businessType = BusinessType.INSERT) | ||
| 123 | + @PostMapping | ||
| 124 | + public AjaxResult add(@Validated @RequestBody SysDept dept) | ||
| 125 | + { | ||
| 126 | + if (UserConstants.NOT_UNIQUE.equals(deptService.checkDeptNameUnique(dept))) | ||
| 127 | + { | ||
| 128 | + return AjaxResult.error("新增部门'" + dept.getDeptName() + "'失败,部门名称已存在"); | ||
| 129 | + } | ||
| 130 | + dept.setCreateBy(getUsername()); | ||
| 131 | + return toAjax(deptService.insertDept(dept)); | ||
| 132 | + } | ||
| 133 | + | ||
| 134 | + /** | ||
| 135 | + * 修改部门 | ||
| 136 | + */ | ||
| 137 | + @ApiOperation("修改部门") | ||
| 138 | + @PreAuthorize("@ss.hasPermi('system:dept:edit')") | ||
| 139 | + @Log(title = "部门管理", businessType = BusinessType.UPDATE) | ||
| 140 | + @PutMapping | ||
| 141 | + public AjaxResult edit(@Validated @RequestBody SysDept dept) | ||
| 142 | + { | ||
| 143 | + Long deptId = dept.getDeptId(); | ||
| 144 | + deptService.checkDeptDataScope(deptId); | ||
| 145 | + if (UserConstants.NOT_UNIQUE.equals(deptService.checkDeptNameUnique(dept))) | ||
| 146 | + { | ||
| 147 | + return AjaxResult.error("修改部门'" + dept.getDeptName() + "'失败,部门名称已存在"); | ||
| 148 | + } | ||
| 149 | + else if (dept.getParentId().equals(deptId)) | ||
| 150 | + { | ||
| 151 | + return AjaxResult.error("修改部门'" + dept.getDeptName() + "'失败,上级部门不能是自己"); | ||
| 152 | + } | ||
| 153 | + else if (StringUtils.equals(UserConstants.DEPT_DISABLE, dept.getStatus()) && deptService.selectNormalChildrenDeptById(deptId) > 0) | ||
| 154 | + { | ||
| 155 | + return AjaxResult.error("该部门包含未停用的子部门!"); | ||
| 156 | + } | ||
| 157 | + dept.setUpdateBy(getUsername()); | ||
| 158 | + return toAjax(deptService.updateDept(dept)); | ||
| 159 | + } | ||
| 160 | + | ||
| 161 | + /** | ||
| 162 | + * 删除部门 | ||
| 163 | + */ | ||
| 164 | + @ApiOperation("删除部门") | ||
| 165 | + @ApiImplicitParams({ | ||
| 166 | + @ApiImplicitParam(name = "deptId", value = "部门id", required = true, dataType = "Long", dataTypeClass = Long.class) | ||
| 167 | + }) | ||
| 168 | + @PreAuthorize("@ss.hasPermi('system:dept:remove')") | ||
| 169 | + @Log(title = "部门管理", businessType = BusinessType.DELETE) | ||
| 170 | + @DeleteMapping("/{deptId}") | ||
| 171 | + public AjaxResult remove(@PathVariable Long deptId) | ||
| 172 | + { | ||
| 173 | + if (deptService.hasChildByDeptId(deptId)) | ||
| 174 | + { | ||
| 175 | + return AjaxResult.error("存在下级部门,不允许删除"); | ||
| 176 | + } | ||
| 177 | + if (deptService.checkDeptExistUser(deptId)) | ||
| 178 | + { | ||
| 179 | + return AjaxResult.error("部门存在用户,不允许删除"); | ||
| 180 | + } | ||
| 181 | + deptService.checkDeptDataScope(deptId); | ||
| 182 | + return toAjax(deptService.deleteDeptById(deptId)); | ||
| 183 | + } | ||
| 184 | +} |
lh-admin/src/main/java/com/zhonglai/luhui/admin/controller/system/SysDictDataController.java
0 → 100644
| 1 | +package com.zhonglai.luhui.admin.controller.system; | ||
| 2 | + | ||
| 3 | +import com.ruoyi.common.annotation.Log; | ||
| 4 | +import com.ruoyi.common.core.controller.BaseController; | ||
| 5 | +import com.ruoyi.common.core.domain.AjaxResult; | ||
| 6 | +import com.ruoyi.common.core.domain.entity.SysDictData; | ||
| 7 | +import com.ruoyi.common.core.page.TableDataInfo; | ||
| 8 | +import com.ruoyi.common.enums.BusinessType; | ||
| 9 | +import com.ruoyi.common.utils.StringUtils; | ||
| 10 | +import com.ruoyi.common.utils.poi.ExcelUtil; | ||
| 11 | +import com.ruoyi.system.service.ISysDictDataService; | ||
| 12 | +import com.ruoyi.system.service.ISysDictTypeService; | ||
| 13 | +import io.swagger.annotations.Api; | ||
| 14 | +import io.swagger.annotations.ApiImplicitParam; | ||
| 15 | +import io.swagger.annotations.ApiImplicitParams; | ||
| 16 | +import io.swagger.annotations.ApiOperation; | ||
| 17 | +import org.springframework.beans.factory.annotation.Autowired; | ||
| 18 | +import org.springframework.security.access.prepost.PreAuthorize; | ||
| 19 | +import org.springframework.validation.annotation.Validated; | ||
| 20 | +import org.springframework.web.bind.annotation.*; | ||
| 21 | + | ||
| 22 | +import javax.servlet.http.HttpServletResponse; | ||
| 23 | +import java.util.ArrayList; | ||
| 24 | +import java.util.List; | ||
| 25 | + | ||
| 26 | +/** | ||
| 27 | + * 数据字典信息 | ||
| 28 | + * | ||
| 29 | + * @author ruoyi | ||
| 30 | + */ | ||
| 31 | +@Api(tags = "数据字典信息") | ||
| 32 | +@RestController | ||
| 33 | +@RequestMapping("/mapper/system/dict/data") | ||
| 34 | +public class SysDictDataController extends BaseController | ||
| 35 | +{ | ||
| 36 | + @Autowired | ||
| 37 | + private ISysDictDataService dictDataService; | ||
| 38 | + | ||
| 39 | + @Autowired | ||
| 40 | + private ISysDictTypeService dictTypeService; | ||
| 41 | + | ||
| 42 | + @ApiOperation("列表") | ||
| 43 | + @PreAuthorize("@ss.hasPermi('system:dict:list')") | ||
| 44 | + @GetMapping("/list") | ||
| 45 | + public TableDataInfo list(SysDictData dictData) | ||
| 46 | + { | ||
| 47 | + startPage(); | ||
| 48 | + List<SysDictData> list = dictDataService.selectDictDataList(dictData); | ||
| 49 | + return getDataTable(list); | ||
| 50 | + } | ||
| 51 | + | ||
| 52 | + @ApiOperation("导出") | ||
| 53 | + @Log(title = "字典数据", businessType = BusinessType.EXPORT) | ||
| 54 | + @PreAuthorize("@ss.hasPermi('system:dict:export')") | ||
| 55 | + @PostMapping("/export") | ||
| 56 | + public void export(HttpServletResponse response, SysDictData dictData) | ||
| 57 | + { | ||
| 58 | + List<SysDictData> list = dictDataService.selectDictDataList(dictData); | ||
| 59 | + ExcelUtil<SysDictData> util = new ExcelUtil<SysDictData>(SysDictData.class); | ||
| 60 | + util.exportExcel(response, list, "字典数据"); | ||
| 61 | + } | ||
| 62 | + | ||
| 63 | + /** | ||
| 64 | + * 查询字典数据详细 | ||
| 65 | + */ | ||
| 66 | + @ApiOperation("查询字典数据详细") | ||
| 67 | + @ApiImplicitParams({ | ||
| 68 | + @ApiImplicitParam(name = "dictCode", value = "code", required = true, dataType = "Long", dataTypeClass = Long.class) | ||
| 69 | + }) | ||
| 70 | + @PreAuthorize("@ss.hasPermi('system:dict:query')") | ||
| 71 | + @GetMapping(value = "/{dictCode}") | ||
| 72 | + public AjaxResult getInfo(@PathVariable Long dictCode) | ||
| 73 | + { | ||
| 74 | + return AjaxResult.success(dictDataService.selectDictDataById(dictCode)); | ||
| 75 | + } | ||
| 76 | + | ||
| 77 | + /** | ||
| 78 | + * 根据字典类型查询字典数据信息 | ||
| 79 | + */ | ||
| 80 | + @ApiOperation("根据字典类型查询字典数据信息") | ||
| 81 | + @ApiImplicitParams({ | ||
| 82 | + @ApiImplicitParam(name = "dictType", value = "字典类型", required = true, dataType = "String", dataTypeClass = String.class) | ||
| 83 | + }) | ||
| 84 | + @GetMapping(value = "/type/{dictType}") | ||
| 85 | + public AjaxResult dictType(@PathVariable String dictType) | ||
| 86 | + { | ||
| 87 | + List<SysDictData> data = dictTypeService.selectDictDataByType(dictType); | ||
| 88 | + if (StringUtils.isNull(data)) | ||
| 89 | + { | ||
| 90 | + data = new ArrayList<SysDictData>(); | ||
| 91 | + } | ||
| 92 | + return AjaxResult.success(data); | ||
| 93 | + } | ||
| 94 | + | ||
| 95 | + /** | ||
| 96 | + * 新增字典类型 | ||
| 97 | + */ | ||
| 98 | + @ApiOperation("新增字典类型") | ||
| 99 | + @PreAuthorize("@ss.hasPermi('system:dict:add')") | ||
| 100 | + @Log(title = "字典数据", businessType = BusinessType.INSERT) | ||
| 101 | + @PostMapping | ||
| 102 | + public AjaxResult add(@Validated @RequestBody SysDictData dict) | ||
| 103 | + { | ||
| 104 | + dict.setCreateBy(getUsername()); | ||
| 105 | + return toAjax(dictDataService.insertDictData(dict)); | ||
| 106 | + } | ||
| 107 | + | ||
| 108 | + /** | ||
| 109 | + * 修改保存字典类型 | ||
| 110 | + */ | ||
| 111 | + @ApiOperation("修改保存字典类型") | ||
| 112 | + @PreAuthorize("@ss.hasPermi('system:dict:edit')") | ||
| 113 | + @Log(title = "字典数据", businessType = BusinessType.UPDATE) | ||
| 114 | + @PutMapping | ||
| 115 | + public AjaxResult edit(@Validated @RequestBody SysDictData dict) | ||
| 116 | + { | ||
| 117 | + dict.setUpdateBy(getUsername()); | ||
| 118 | + return toAjax(dictDataService.updateDictData(dict)); | ||
| 119 | + } | ||
| 120 | + | ||
| 121 | + /** | ||
| 122 | + * 删除字典类型 | ||
| 123 | + */ | ||
| 124 | + @ApiOperation("删除字典类型") | ||
| 125 | + @ApiImplicitParams({ | ||
| 126 | + @ApiImplicitParam(name = "dictCodes", value = "code集合", required = true, dataType = "Long[]", dataTypeClass = Long[].class) | ||
| 127 | + }) | ||
| 128 | + @PreAuthorize("@ss.hasPermi('system:dict:remove')") | ||
| 129 | + @Log(title = "字典类型", businessType = BusinessType.DELETE) | ||
| 130 | + @DeleteMapping("/{dictCodes}") | ||
| 131 | + public AjaxResult remove(@PathVariable Long[] dictCodes) | ||
| 132 | + { | ||
| 133 | + dictDataService.deleteDictDataByIds(dictCodes); | ||
| 134 | + return success(); | ||
| 135 | + } | ||
| 136 | +} |
lh-admin/src/main/java/com/zhonglai/luhui/admin/controller/system/SysDictTypeController.java
0 → 100644
| 1 | +package com.zhonglai.luhui.admin.controller.system; | ||
| 2 | + | ||
| 3 | +import com.ruoyi.common.annotation.Log; | ||
| 4 | +import com.ruoyi.common.constant.UserConstants; | ||
| 5 | +import com.ruoyi.common.core.controller.BaseController; | ||
| 6 | +import com.ruoyi.common.core.domain.AjaxResult; | ||
| 7 | +import com.ruoyi.common.core.domain.entity.SysDictType; | ||
| 8 | +import com.ruoyi.common.core.page.TableDataInfo; | ||
| 9 | +import com.ruoyi.common.enums.BusinessType; | ||
| 10 | +import com.ruoyi.common.utils.poi.ExcelUtil; | ||
| 11 | +import com.ruoyi.system.service.ISysDictTypeService; | ||
| 12 | +import io.swagger.annotations.Api; | ||
| 13 | +import io.swagger.annotations.ApiOperation; | ||
| 14 | +import org.springframework.beans.factory.annotation.Autowired; | ||
| 15 | +import org.springframework.security.access.prepost.PreAuthorize; | ||
| 16 | +import org.springframework.validation.annotation.Validated; | ||
| 17 | +import org.springframework.web.bind.annotation.*; | ||
| 18 | + | ||
| 19 | +import javax.servlet.http.HttpServletResponse; | ||
| 20 | +import java.util.List; | ||
| 21 | + | ||
| 22 | +/** | ||
| 23 | + * 数据字典信息 | ||
| 24 | + * | ||
| 25 | + * @author ruoyi | ||
| 26 | + */ | ||
| 27 | +@Api(tags = "数据字典信息") | ||
| 28 | +@RestController | ||
| 29 | +@RequestMapping("/mapper/system/dict/type") | ||
| 30 | +public class SysDictTypeController extends BaseController | ||
| 31 | +{ | ||
| 32 | + @Autowired | ||
| 33 | + private ISysDictTypeService dictTypeService; | ||
| 34 | + | ||
| 35 | + @ApiOperation("列表") | ||
| 36 | + @PreAuthorize("@ss.hasPermi('system:dict:list')") | ||
| 37 | + @GetMapping("/list") | ||
| 38 | + public TableDataInfo list(SysDictType dictType) | ||
| 39 | + { | ||
| 40 | + startPage(); | ||
| 41 | + List<SysDictType> list = dictTypeService.selectDictTypeList(dictType); | ||
| 42 | + return getDataTable(list); | ||
| 43 | + } | ||
| 44 | + | ||
| 45 | + @ApiOperation("导出") | ||
| 46 | + @Log(title = "字典类型", businessType = BusinessType.EXPORT) | ||
| 47 | + @PreAuthorize("@ss.hasPermi('system:dict:export')") | ||
| 48 | + @PostMapping("/export") | ||
| 49 | + public void export(HttpServletResponse response, SysDictType dictType) | ||
| 50 | + { | ||
| 51 | + List<SysDictType> list = dictTypeService.selectDictTypeList(dictType); | ||
| 52 | + ExcelUtil<SysDictType> util = new ExcelUtil<SysDictType>(SysDictType.class); | ||
| 53 | + util.exportExcel(response, list, "字典类型"); | ||
| 54 | + } | ||
| 55 | + | ||
| 56 | + /** | ||
| 57 | + * 查询字典类型详细 | ||
| 58 | + */ | ||
| 59 | + @ApiOperation("查询字典类型详细") | ||
| 60 | + @PreAuthorize("@ss.hasPermi('system:dict:query')") | ||
| 61 | + @GetMapping(value = "/{dictId}") | ||
| 62 | + public AjaxResult getInfo(@PathVariable Long dictId) | ||
| 63 | + { | ||
| 64 | + return AjaxResult.success(dictTypeService.selectDictTypeById(dictId)); | ||
| 65 | + } | ||
| 66 | + | ||
| 67 | + /** | ||
| 68 | + * 新增字典类型 | ||
| 69 | + */ | ||
| 70 | + @ApiOperation("新增字典类型") | ||
| 71 | + @PreAuthorize("@ss.hasPermi('system:dict:add')") | ||
| 72 | + @Log(title = "字典类型", businessType = BusinessType.INSERT) | ||
| 73 | + @PostMapping | ||
| 74 | + public AjaxResult add(@Validated @RequestBody SysDictType dict) | ||
| 75 | + { | ||
| 76 | + if (UserConstants.NOT_UNIQUE.equals(dictTypeService.checkDictTypeUnique(dict))) | ||
| 77 | + { | ||
| 78 | + return AjaxResult.error("新增字典'" + dict.getDictName() + "'失败,字典类型已存在"); | ||
| 79 | + } | ||
| 80 | + dict.setCreateBy(getUsername()); | ||
| 81 | + return toAjax(dictTypeService.insertDictType(dict)); | ||
| 82 | + } | ||
| 83 | + | ||
| 84 | + /** | ||
| 85 | + * 修改字典类型 | ||
| 86 | + */ | ||
| 87 | + @ApiOperation("修改字典类型") | ||
| 88 | + @PreAuthorize("@ss.hasPermi('system:dict:edit')") | ||
| 89 | + @Log(title = "字典类型", businessType = BusinessType.UPDATE) | ||
| 90 | + @PutMapping | ||
| 91 | + public AjaxResult edit(@Validated @RequestBody SysDictType dict) | ||
| 92 | + { | ||
| 93 | + if (UserConstants.NOT_UNIQUE.equals(dictTypeService.checkDictTypeUnique(dict))) | ||
| 94 | + { | ||
| 95 | + return AjaxResult.error("修改字典'" + dict.getDictName() + "'失败,字典类型已存在"); | ||
| 96 | + } | ||
| 97 | + dict.setUpdateBy(getUsername()); | ||
| 98 | + return toAjax(dictTypeService.updateDictType(dict)); | ||
| 99 | + } | ||
| 100 | + | ||
| 101 | + /** | ||
| 102 | + * 删除字典类型 | ||
| 103 | + */ | ||
| 104 | + @ApiOperation("删除字典类型") | ||
| 105 | + @PreAuthorize("@ss.hasPermi('system:dict:remove')") | ||
| 106 | + @Log(title = "字典类型", businessType = BusinessType.DELETE) | ||
| 107 | + @DeleteMapping("/{dictIds}") | ||
| 108 | + public AjaxResult remove(@PathVariable Long[] dictIds) | ||
| 109 | + { | ||
| 110 | + dictTypeService.deleteDictTypeByIds(dictIds); | ||
| 111 | + return success(); | ||
| 112 | + } | ||
| 113 | + | ||
| 114 | + /** | ||
| 115 | + * 刷新字典缓存 | ||
| 116 | + */ | ||
| 117 | + @ApiOperation("刷新字典缓存") | ||
| 118 | + @PreAuthorize("@ss.hasPermi('system:dict:remove')") | ||
| 119 | + @Log(title = "字典类型", businessType = BusinessType.CLEAN) | ||
| 120 | + @DeleteMapping("/refreshCache") | ||
| 121 | + public AjaxResult refreshCache() | ||
| 122 | + { | ||
| 123 | + dictTypeService.resetDictCache(); | ||
| 124 | + return AjaxResult.success(); | ||
| 125 | + } | ||
| 126 | + | ||
| 127 | + /** | ||
| 128 | + * 获取字典选择框列表 | ||
| 129 | + */ | ||
| 130 | + @ApiOperation("获取字典选择框列表") | ||
| 131 | + @GetMapping("/optionselect") | ||
| 132 | + public AjaxResult optionselect() | ||
| 133 | + { | ||
| 134 | + List<SysDictType> dictTypes = dictTypeService.selectDictTypeAll(); | ||
| 135 | + return AjaxResult.success(dictTypes); | ||
| 136 | + } | ||
| 137 | +} |
lh-admin/src/main/java/com/zhonglai/luhui/admin/controller/system/SysIndexController.java
0 → 100644
| 1 | +package com.zhonglai.luhui.admin.controller.system; | ||
| 2 | + | ||
| 3 | +import com.ruoyi.common.config.RuoYiConfig; | ||
| 4 | +import com.ruoyi.common.utils.StringUtils; | ||
| 5 | +import io.swagger.annotations.Api; | ||
| 6 | +import org.springframework.beans.factory.annotation.Autowired; | ||
| 7 | +import org.springframework.web.bind.annotation.RequestMapping; | ||
| 8 | +import org.springframework.web.bind.annotation.RestController; | ||
| 9 | + | ||
| 10 | +/** | ||
| 11 | + * 首页 | ||
| 12 | + * | ||
| 13 | + * @author ruoyi | ||
| 14 | + */ | ||
| 15 | +@Api(tags = "首页") | ||
| 16 | +@RestController | ||
| 17 | +public class SysIndexController | ||
| 18 | +{ | ||
| 19 | + /** 系统基础配置 */ | ||
| 20 | + @Autowired | ||
| 21 | + private RuoYiConfig ruoyiConfig; | ||
| 22 | + | ||
| 23 | + /** | ||
| 24 | + * 访问首页,提示语 | ||
| 25 | + */ | ||
| 26 | + @RequestMapping("/") | ||
| 27 | + public String index() | ||
| 28 | + { | ||
| 29 | + return StringUtils.format("欢迎使用{}后台管理框架,当前版本:v{},请通过前端地址访问。", ruoyiConfig.getName(), ruoyiConfig.getVersion()); | ||
| 30 | + } | ||
| 31 | +} |
lh-admin/src/main/java/com/zhonglai/luhui/admin/controller/system/SysLoginController.java
0 → 100644
| 1 | +package com.zhonglai.luhui.admin.controller.system; | ||
| 2 | + | ||
| 3 | +import com.ruoyi.common.constant.Constants; | ||
| 4 | +import com.ruoyi.common.core.controller.BaseController; | ||
| 5 | +import com.ruoyi.common.core.domain.AjaxResult; | ||
| 6 | +import com.ruoyi.common.core.domain.entity.SysMenu; | ||
| 7 | +import com.ruoyi.common.core.domain.entity.SysUser; | ||
| 8 | +import com.ruoyi.common.core.domain.model.LoginBody; | ||
| 9 | +import com.ruoyi.common.utils.SecurityUtils; | ||
| 10 | +import com.ruoyi.framework.web.service.SysLoginService; | ||
| 11 | +import com.ruoyi.framework.web.service.SysPermissionService; | ||
| 12 | +import com.ruoyi.system.service.ISysMenuService; | ||
| 13 | +import io.swagger.annotations.Api; | ||
| 14 | +import io.swagger.annotations.ApiOperation; | ||
| 15 | +import org.springframework.beans.factory.annotation.Autowired; | ||
| 16 | +import org.springframework.web.bind.annotation.GetMapping; | ||
| 17 | +import org.springframework.web.bind.annotation.PostMapping; | ||
| 18 | +import org.springframework.web.bind.annotation.RequestBody; | ||
| 19 | +import org.springframework.web.bind.annotation.RestController; | ||
| 20 | + | ||
| 21 | +import java.util.List; | ||
| 22 | +import java.util.Set; | ||
| 23 | + | ||
| 24 | +/** | ||
| 25 | + * 注册验证 | ||
| 26 | + * | ||
| 27 | + * @author ruoyi | ||
| 28 | + */ | ||
| 29 | +@Api(tags = "登陆验证") | ||
| 30 | +@RestController | ||
| 31 | +public class SysLoginController extends BaseController | ||
| 32 | +{ | ||
| 33 | + @Autowired | ||
| 34 | + private SysLoginService loginService; | ||
| 35 | + | ||
| 36 | + @Autowired | ||
| 37 | + private ISysMenuService menuService; | ||
| 38 | + | ||
| 39 | + @Autowired | ||
| 40 | + private SysPermissionService permissionService; | ||
| 41 | + | ||
| 42 | + @ApiOperation("登录方法") | ||
| 43 | + @PostMapping("/login") | ||
| 44 | + public AjaxResult login(@RequestBody LoginBody loginBody) | ||
| 45 | + { | ||
| 46 | + AjaxResult ajax = AjaxResult.success(); | ||
| 47 | + // 生成令牌 | ||
| 48 | + String token = loginService.login(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(), | ||
| 49 | + loginBody.getUuid()); | ||
| 50 | + ajax.put(Constants.TOKEN, token); | ||
| 51 | + return ajax; | ||
| 52 | + } | ||
| 53 | + | ||
| 54 | + /** | ||
| 55 | + * 获取用户信息 | ||
| 56 | + * | ||
| 57 | + * @return 用户信息 | ||
| 58 | + */ | ||
| 59 | + @ApiOperation("获取用户信息") | ||
| 60 | + @GetMapping("getInfo") | ||
| 61 | + public AjaxResult getInfo() | ||
| 62 | + { | ||
| 63 | + SysUser user = SecurityUtils.getLoginUser().getUser(); | ||
| 64 | + // 角色集合 | ||
| 65 | + Set<String> roles = permissionService.getRolePermission(user); | ||
| 66 | + // 权限集合 | ||
| 67 | + Set<String> permissions = permissionService.getMenuPermission(user); | ||
| 68 | + AjaxResult ajax = AjaxResult.success(); | ||
| 69 | + ajax.put("user", user); | ||
| 70 | + ajax.put("roles", roles); | ||
| 71 | + ajax.put("permissions", permissions); | ||
| 72 | + return ajax; | ||
| 73 | + } | ||
| 74 | + | ||
| 75 | + /** | ||
| 76 | + * 获取路由信息 | ||
| 77 | + * | ||
| 78 | + * @return 路由信息 | ||
| 79 | + */ | ||
| 80 | + @ApiOperation("获取路由信息") | ||
| 81 | + @GetMapping("getRouters") | ||
| 82 | + public AjaxResult getRouters() | ||
| 83 | + { | ||
| 84 | + Long userId = SecurityUtils.getUserId(); | ||
| 85 | + List<SysMenu> menus = menuService.selectMenuTreeByUserId(userId); | ||
| 86 | + return AjaxResult.success(menuService.buildMenus(menus)); | ||
| 87 | + } | ||
| 88 | +} |
| 1 | +package com.zhonglai.luhui.admin.controller.system; | ||
| 2 | + | ||
| 3 | +import com.ruoyi.common.annotation.Log; | ||
| 4 | +import com.ruoyi.common.constant.UserConstants; | ||
| 5 | +import com.ruoyi.common.core.controller.BaseController; | ||
| 6 | +import com.ruoyi.common.core.domain.AjaxResult; | ||
| 7 | +import com.ruoyi.common.core.domain.entity.SysMenu; | ||
| 8 | +import com.ruoyi.common.enums.BusinessType; | ||
| 9 | +import com.ruoyi.common.utils.StringUtils; | ||
| 10 | +import com.ruoyi.system.service.ISysMenuService; | ||
| 11 | +import io.swagger.annotations.Api; | ||
| 12 | +import io.swagger.annotations.ApiOperation; | ||
| 13 | +import org.springframework.beans.factory.annotation.Autowired; | ||
| 14 | +import org.springframework.security.access.prepost.PreAuthorize; | ||
| 15 | +import org.springframework.validation.annotation.Validated; | ||
| 16 | +import org.springframework.web.bind.annotation.*; | ||
| 17 | + | ||
| 18 | +import java.util.List; | ||
| 19 | + | ||
| 20 | +/** | ||
| 21 | + * 菜单信息 | ||
| 22 | + * | ||
| 23 | + * @author ruoyi | ||
| 24 | + */ | ||
| 25 | +@Api(tags = "菜单信息") | ||
| 26 | +@RestController | ||
| 27 | +@RequestMapping("/mapper/system/menu") | ||
| 28 | +public class SysMenuController extends BaseController | ||
| 29 | +{ | ||
| 30 | + @Autowired | ||
| 31 | + private ISysMenuService menuService; | ||
| 32 | + | ||
| 33 | + /** | ||
| 34 | + * 获取菜单列表 | ||
| 35 | + */ | ||
| 36 | + @ApiOperation("获取菜单列表") | ||
| 37 | + @PreAuthorize("@ss.hasPermi('system:menu:list')") | ||
| 38 | + @GetMapping("/list") | ||
| 39 | + public AjaxResult list(SysMenu menu) | ||
| 40 | + { | ||
| 41 | + List<SysMenu> menus = menuService.selectMenuList(menu, getUserId()); | ||
| 42 | + return AjaxResult.success(menus); | ||
| 43 | + } | ||
| 44 | + | ||
| 45 | + /** | ||
| 46 | + * 根据菜单编号获取详细信息 | ||
| 47 | + */ | ||
| 48 | + @ApiOperation("根据菜单编号获取详细信息") | ||
| 49 | + @PreAuthorize("@ss.hasPermi('system:menu:query')") | ||
| 50 | + @GetMapping(value = "/{menuId}") | ||
| 51 | + public AjaxResult getInfo(@PathVariable Long menuId) | ||
| 52 | + { | ||
| 53 | + return AjaxResult.success(menuService.selectMenuById(menuId)); | ||
| 54 | + } | ||
| 55 | + | ||
| 56 | + /** | ||
| 57 | + * 获取菜单下拉树列表 | ||
| 58 | + */ | ||
| 59 | + @ApiOperation("获取菜单下拉树列表") | ||
| 60 | + @GetMapping("/treeselect") | ||
| 61 | + public AjaxResult treeselect(SysMenu menu) | ||
| 62 | + { | ||
| 63 | + List<SysMenu> menus = menuService.selectMenuList(menu, getUserId()); | ||
| 64 | + return AjaxResult.success(menuService.buildMenuTreeSelect(menus)); | ||
| 65 | + } | ||
| 66 | + | ||
| 67 | + /** | ||
| 68 | + * 加载对应角色菜单列表树 | ||
| 69 | + */ | ||
| 70 | + @ApiOperation("加载对应角色菜单列表树") | ||
| 71 | + @GetMapping(value = "/roleMenuTreeselect/{roleId}") | ||
| 72 | + public AjaxResult roleMenuTreeselect(@PathVariable("roleId") Long roleId) | ||
| 73 | + { | ||
| 74 | + List<SysMenu> menus = menuService.selectMenuList(getUserId()); | ||
| 75 | + AjaxResult ajax = AjaxResult.success(); | ||
| 76 | + ajax.put("checkedKeys", menuService.selectMenuListByRoleId(roleId)); | ||
| 77 | + ajax.put("menus", menuService.buildMenuTreeSelect(menus)); | ||
| 78 | + return ajax; | ||
| 79 | + } | ||
| 80 | + | ||
| 81 | + /** | ||
| 82 | + * 新增菜单 | ||
| 83 | + */ | ||
| 84 | + @ApiOperation("新增菜单") | ||
| 85 | + @PreAuthorize("@ss.hasPermi('system:menu:add')") | ||
| 86 | + @Log(title = "菜单管理", businessType = BusinessType.INSERT) | ||
| 87 | + @PostMapping | ||
| 88 | + public AjaxResult add(@Validated @RequestBody SysMenu menu) | ||
| 89 | + { | ||
| 90 | + if (UserConstants.NOT_UNIQUE.equals(menuService.checkMenuNameUnique(menu))) | ||
| 91 | + { | ||
| 92 | + return AjaxResult.error("新增菜单'" + menu.getMenuName() + "'失败,菜单名称已存在"); | ||
| 93 | + } | ||
| 94 | + else if (UserConstants.YES_FRAME.equals(menu.getIsFrame()) && !StringUtils.ishttp(menu.getPath())) | ||
| 95 | + { | ||
| 96 | + return AjaxResult.error("新增菜单'" + menu.getMenuName() + "'失败,地址必须以http(s)://开头"); | ||
| 97 | + } | ||
| 98 | + menu.setCreateBy(getUsername()); | ||
| 99 | + return toAjax(menuService.insertMenu(menu)); | ||
| 100 | + } | ||
| 101 | + | ||
| 102 | + /** | ||
| 103 | + * 修改菜单 | ||
| 104 | + */ | ||
| 105 | + @ApiOperation("修改菜单") | ||
| 106 | + @PreAuthorize("@ss.hasPermi('system:menu:edit')") | ||
| 107 | + @Log(title = "菜单管理", businessType = BusinessType.UPDATE) | ||
| 108 | + @PutMapping | ||
| 109 | + public AjaxResult edit(@Validated @RequestBody SysMenu menu) | ||
| 110 | + { | ||
| 111 | + if (UserConstants.NOT_UNIQUE.equals(menuService.checkMenuNameUnique(menu))) | ||
| 112 | + { | ||
| 113 | + return AjaxResult.error("修改菜单'" + menu.getMenuName() + "'失败,菜单名称已存在"); | ||
| 114 | + } | ||
| 115 | + else if (UserConstants.YES_FRAME.equals(menu.getIsFrame()) && !StringUtils.ishttp(menu.getPath())) | ||
| 116 | + { | ||
| 117 | + return AjaxResult.error("修改菜单'" + menu.getMenuName() + "'失败,地址必须以http(s)://开头"); | ||
| 118 | + } | ||
| 119 | + else if (menu.getMenuId().equals(menu.getParentId())) | ||
| 120 | + { | ||
| 121 | + return AjaxResult.error("修改菜单'" + menu.getMenuName() + "'失败,上级菜单不能选择自己"); | ||
| 122 | + } | ||
| 123 | + menu.setUpdateBy(getUsername()); | ||
| 124 | + return toAjax(menuService.updateMenu(menu)); | ||
| 125 | + } | ||
| 126 | + | ||
| 127 | + /** | ||
| 128 | + * 删除菜单 | ||
| 129 | + */ | ||
| 130 | + @ApiOperation("删除菜单") | ||
| 131 | + @PreAuthorize("@ss.hasPermi('system:menu:remove')") | ||
| 132 | + @Log(title = "菜单管理", businessType = BusinessType.DELETE) | ||
| 133 | + @DeleteMapping("/{menuId}") | ||
| 134 | + public AjaxResult remove(@PathVariable("menuId") Long menuId) | ||
| 135 | + { | ||
| 136 | + if (menuService.hasChildByMenuId(menuId)) | ||
| 137 | + { | ||
| 138 | + return AjaxResult.error("存在子菜单,不允许删除"); | ||
| 139 | + } | ||
| 140 | + if (menuService.checkMenuExistRole(menuId)) | ||
| 141 | + { | ||
| 142 | + return AjaxResult.error("菜单已分配,不允许删除"); | ||
| 143 | + } | ||
| 144 | + return toAjax(menuService.deleteMenuById(menuId)); | ||
| 145 | + } | ||
| 146 | +} |
lh-admin/src/main/java/com/zhonglai/luhui/admin/controller/system/SysNoticeController.java
0 → 100644
| 1 | +package com.zhonglai.luhui.admin.controller.system; | ||
| 2 | + | ||
| 3 | +import com.ruoyi.common.annotation.Log; | ||
| 4 | +import com.ruoyi.common.core.controller.BaseController; | ||
| 5 | +import com.ruoyi.common.core.domain.AjaxResult; | ||
| 6 | +import com.ruoyi.common.core.page.TableDataInfo; | ||
| 7 | +import com.ruoyi.common.enums.BusinessType; | ||
| 8 | +import com.ruoyi.system.domain.SysNotice; | ||
| 9 | +import com.ruoyi.system.service.ISysNoticeService; | ||
| 10 | +import io.swagger.annotations.Api; | ||
| 11 | +import io.swagger.annotations.ApiOperation; | ||
| 12 | +import org.springframework.beans.factory.annotation.Autowired; | ||
| 13 | +import org.springframework.security.access.prepost.PreAuthorize; | ||
| 14 | +import org.springframework.validation.annotation.Validated; | ||
| 15 | +import org.springframework.web.bind.annotation.*; | ||
| 16 | + | ||
| 17 | +import java.util.List; | ||
| 18 | + | ||
| 19 | +/** | ||
| 20 | + * 公告 信息操作处理 | ||
| 21 | + * | ||
| 22 | + * @author ruoyi | ||
| 23 | + */ | ||
| 24 | +@Api(tags = "公告") | ||
| 25 | +@RestController | ||
| 26 | +@RequestMapping("/mapper/system/notice") | ||
| 27 | +public class SysNoticeController extends BaseController | ||
| 28 | +{ | ||
| 29 | + @Autowired | ||
| 30 | + private ISysNoticeService noticeService; | ||
| 31 | + | ||
| 32 | + /** | ||
| 33 | + * 获取通知公告列表 | ||
| 34 | + */ | ||
| 35 | + @ApiOperation("获取通知公告列表") | ||
| 36 | + @PreAuthorize("@ss.hasPermi('system:notice:list')") | ||
| 37 | + @GetMapping("/list") | ||
| 38 | + public TableDataInfo list(SysNotice notice) | ||
| 39 | + { | ||
| 40 | + startPage(); | ||
| 41 | + List<SysNotice> list = noticeService.selectNoticeList(notice); | ||
| 42 | + return getDataTable(list); | ||
| 43 | + } | ||
| 44 | + | ||
| 45 | + /** | ||
| 46 | + * 根据通知公告编号获取详细信息 | ||
| 47 | + */ | ||
| 48 | + @ApiOperation("根据通知公告编号获取详细信息") | ||
| 49 | + @PreAuthorize("@ss.hasPermi('system:notice:query')") | ||
| 50 | + @GetMapping(value = "/{noticeId}") | ||
| 51 | + public AjaxResult getInfo(@PathVariable Long noticeId) | ||
| 52 | + { | ||
| 53 | + return AjaxResult.success(noticeService.selectNoticeById(noticeId)); | ||
| 54 | + } | ||
| 55 | + | ||
| 56 | + /** | ||
| 57 | + * 新增通知公告 | ||
| 58 | + */ | ||
| 59 | + @ApiOperation("新增通知公告") | ||
| 60 | + @PreAuthorize("@ss.hasPermi('system:notice:add')") | ||
| 61 | + @Log(title = "通知公告", businessType = BusinessType.INSERT) | ||
| 62 | + @PostMapping | ||
| 63 | + public AjaxResult add(@Validated @RequestBody SysNotice notice) | ||
| 64 | + { | ||
| 65 | + notice.setCreateBy(getUsername()); | ||
| 66 | + return toAjax(noticeService.insertNotice(notice)); | ||
| 67 | + } | ||
| 68 | + | ||
| 69 | + /** | ||
| 70 | + * 修改通知公告 | ||
| 71 | + */ | ||
| 72 | + @ApiOperation("修改通知公告") | ||
| 73 | + @PreAuthorize("@ss.hasPermi('system:notice:edit')") | ||
| 74 | + @Log(title = "通知公告", businessType = BusinessType.UPDATE) | ||
| 75 | + @PutMapping | ||
| 76 | + public AjaxResult edit(@Validated @RequestBody SysNotice notice) | ||
| 77 | + { | ||
| 78 | + notice.setUpdateBy(getUsername()); | ||
| 79 | + return toAjax(noticeService.updateNotice(notice)); | ||
| 80 | + } | ||
| 81 | + | ||
| 82 | + /** | ||
| 83 | + * 删除通知公告 | ||
| 84 | + */ | ||
| 85 | + @ApiOperation("删除通知公告") | ||
| 86 | + @PreAuthorize("@ss.hasPermi('system:notice:remove')") | ||
| 87 | + @Log(title = "通知公告", businessType = BusinessType.DELETE) | ||
| 88 | + @DeleteMapping("/{noticeIds}") | ||
| 89 | + public AjaxResult remove(@PathVariable Long[] noticeIds) | ||
| 90 | + { | ||
| 91 | + return toAjax(noticeService.deleteNoticeByIds(noticeIds)); | ||
| 92 | + } | ||
| 93 | +} |
| 1 | +package com.zhonglai.luhui.admin.controller.system; | ||
| 2 | + | ||
| 3 | +import com.ruoyi.common.annotation.Log; | ||
| 4 | +import com.ruoyi.common.constant.UserConstants; | ||
| 5 | +import com.ruoyi.common.core.controller.BaseController; | ||
| 6 | +import com.ruoyi.common.core.domain.AjaxResult; | ||
| 7 | +import com.ruoyi.common.core.page.TableDataInfo; | ||
| 8 | +import com.ruoyi.common.enums.BusinessType; | ||
| 9 | +import com.ruoyi.common.utils.poi.ExcelUtil; | ||
| 10 | +import com.ruoyi.system.domain.SysPost; | ||
| 11 | +import com.ruoyi.system.service.ISysPostService; | ||
| 12 | +import io.swagger.annotations.Api; | ||
| 13 | +import io.swagger.annotations.ApiOperation; | ||
| 14 | +import org.springframework.beans.factory.annotation.Autowired; | ||
| 15 | +import org.springframework.security.access.prepost.PreAuthorize; | ||
| 16 | +import org.springframework.validation.annotation.Validated; | ||
| 17 | +import org.springframework.web.bind.annotation.*; | ||
| 18 | + | ||
| 19 | +import javax.servlet.http.HttpServletResponse; | ||
| 20 | +import java.util.List; | ||
| 21 | + | ||
| 22 | +/** | ||
| 23 | + * 岗位信息操作处理 | ||
| 24 | + * | ||
| 25 | + * @author ruoyi | ||
| 26 | + */ | ||
| 27 | +@Api(tags = "岗位信息操作处理") | ||
| 28 | +@RestController | ||
| 29 | +@RequestMapping("/mapper/system/post") | ||
| 30 | +public class SysPostController extends BaseController | ||
| 31 | +{ | ||
| 32 | + @Autowired | ||
| 33 | + private ISysPostService postService; | ||
| 34 | + | ||
| 35 | + /** | ||
| 36 | + * 获取岗位列表 | ||
| 37 | + */ | ||
| 38 | + @ApiOperation("获取岗位列表") | ||
| 39 | + @PreAuthorize("@ss.hasPermi('system:post:list')") | ||
| 40 | + @GetMapping("/list") | ||
| 41 | + public TableDataInfo list(SysPost post) | ||
| 42 | + { | ||
| 43 | + startPage(); | ||
| 44 | + List<SysPost> list = postService.selectPostList(post); | ||
| 45 | + return getDataTable(list); | ||
| 46 | + } | ||
| 47 | + | ||
| 48 | + @ApiOperation("导出") | ||
| 49 | + @Log(title = "岗位管理", businessType = BusinessType.EXPORT) | ||
| 50 | + @PreAuthorize("@ss.hasPermi('system:post:export')") | ||
| 51 | + @PostMapping("/export") | ||
| 52 | + public void export(HttpServletResponse response, SysPost post) | ||
| 53 | + { | ||
| 54 | + List<SysPost> list = postService.selectPostList(post); | ||
| 55 | + ExcelUtil<SysPost> util = new ExcelUtil<SysPost>(SysPost.class); | ||
| 56 | + util.exportExcel(response, list, "岗位数据"); | ||
| 57 | + } | ||
| 58 | + | ||
| 59 | + /** | ||
| 60 | + * 根据岗位编号获取详细信息 | ||
| 61 | + */ | ||
| 62 | + @ApiOperation("根据岗位编号获取详细信息") | ||
| 63 | + @PreAuthorize("@ss.hasPermi('system:post:query')") | ||
| 64 | + @GetMapping(value = "/{postId}") | ||
| 65 | + public AjaxResult getInfo(@PathVariable Long postId) | ||
| 66 | + { | ||
| 67 | + return AjaxResult.success(postService.selectPostById(postId)); | ||
| 68 | + } | ||
| 69 | + | ||
| 70 | + /** | ||
| 71 | + * 新增岗位 | ||
| 72 | + */ | ||
| 73 | + @ApiOperation("新增岗位") | ||
| 74 | + @PreAuthorize("@ss.hasPermi('system:post:add')") | ||
| 75 | + @Log(title = "岗位管理", businessType = BusinessType.INSERT) | ||
| 76 | + @PostMapping | ||
| 77 | + public AjaxResult add(@Validated @RequestBody SysPost post) | ||
| 78 | + { | ||
| 79 | + if (UserConstants.NOT_UNIQUE.equals(postService.checkPostNameUnique(post))) | ||
| 80 | + { | ||
| 81 | + return AjaxResult.error("新增岗位'" + post.getPostName() + "'失败,岗位名称已存在"); | ||
| 82 | + } | ||
| 83 | + else if (UserConstants.NOT_UNIQUE.equals(postService.checkPostCodeUnique(post))) | ||
| 84 | + { | ||
| 85 | + return AjaxResult.error("新增岗位'" + post.getPostName() + "'失败,岗位编码已存在"); | ||
| 86 | + } | ||
| 87 | + post.setCreateBy(getUsername()); | ||
| 88 | + return toAjax(postService.insertPost(post)); | ||
| 89 | + } | ||
| 90 | + | ||
| 91 | + /** | ||
| 92 | + * 修改岗位 | ||
| 93 | + */ | ||
| 94 | + @ApiOperation("修改岗位") | ||
| 95 | + @PreAuthorize("@ss.hasPermi('system:post:edit')") | ||
| 96 | + @Log(title = "岗位管理", businessType = BusinessType.UPDATE) | ||
| 97 | + @PutMapping | ||
| 98 | + public AjaxResult edit(@Validated @RequestBody SysPost post) | ||
| 99 | + { | ||
| 100 | + if (UserConstants.NOT_UNIQUE.equals(postService.checkPostNameUnique(post))) | ||
| 101 | + { | ||
| 102 | + return AjaxResult.error("修改岗位'" + post.getPostName() + "'失败,岗位名称已存在"); | ||
| 103 | + } | ||
| 104 | + else if (UserConstants.NOT_UNIQUE.equals(postService.checkPostCodeUnique(post))) | ||
| 105 | + { | ||
| 106 | + return AjaxResult.error("修改岗位'" + post.getPostName() + "'失败,岗位编码已存在"); | ||
| 107 | + } | ||
| 108 | + post.setUpdateBy(getUsername()); | ||
| 109 | + return toAjax(postService.updatePost(post)); | ||
| 110 | + } | ||
| 111 | + | ||
| 112 | + /** | ||
| 113 | + * 删除岗位 | ||
| 114 | + */ | ||
| 115 | + @ApiOperation("删除岗位") | ||
| 116 | + @PreAuthorize("@ss.hasPermi('system:post:remove')") | ||
| 117 | + @Log(title = "岗位管理", businessType = BusinessType.DELETE) | ||
| 118 | + @DeleteMapping("/{postIds}") | ||
| 119 | + public AjaxResult remove(@PathVariable Long[] postIds) | ||
| 120 | + { | ||
| 121 | + return toAjax(postService.deletePostByIds(postIds)); | ||
| 122 | + } | ||
| 123 | + | ||
| 124 | + /** | ||
| 125 | + * 获取岗位选择框列表 | ||
| 126 | + */ | ||
| 127 | + @ApiOperation("获取岗位选择框列表") | ||
| 128 | + @GetMapping("/optionselect") | ||
| 129 | + public AjaxResult optionselect() | ||
| 130 | + { | ||
| 131 | + List<SysPost> posts = postService.selectPostAll(); | ||
| 132 | + return AjaxResult.success(posts); | ||
| 133 | + } | ||
| 134 | +} |
lh-admin/src/main/java/com/zhonglai/luhui/admin/controller/system/SysProfileController.java
0 → 100644
| 1 | +package com.zhonglai.luhui.admin.controller.system; | ||
| 2 | + | ||
| 3 | +import com.ruoyi.common.annotation.Log; | ||
| 4 | +import com.ruoyi.common.config.RuoYiConfig; | ||
| 5 | +import com.ruoyi.common.constant.UserConstants; | ||
| 6 | +import com.ruoyi.common.core.controller.BaseController; | ||
| 7 | +import com.ruoyi.common.core.domain.AjaxResult; | ||
| 8 | +import com.ruoyi.common.core.domain.entity.SysUser; | ||
| 9 | +import com.ruoyi.common.core.domain.model.LoginUser; | ||
| 10 | +import com.ruoyi.common.enums.BusinessType; | ||
| 11 | +import com.ruoyi.common.utils.SecurityUtils; | ||
| 12 | +import com.ruoyi.common.utils.StringUtils; | ||
| 13 | +import com.ruoyi.common.utils.file.FileUploadUtils; | ||
| 14 | +import com.ruoyi.framework.web.service.TokenService; | ||
| 15 | +import com.ruoyi.system.service.ISysUserService; | ||
| 16 | +import io.swagger.annotations.Api; | ||
| 17 | +import io.swagger.annotations.ApiOperation; | ||
| 18 | +import org.springframework.beans.factory.annotation.Autowired; | ||
| 19 | +import org.springframework.web.bind.annotation.*; | ||
| 20 | +import org.springframework.web.multipart.MultipartFile; | ||
| 21 | + | ||
| 22 | +import java.io.IOException; | ||
| 23 | + | ||
| 24 | +/** | ||
| 25 | + * 个人信息 业务处理 | ||
| 26 | + * | ||
| 27 | + * @author ruoyi | ||
| 28 | + */ | ||
| 29 | +@Api(tags = "个人信息") | ||
| 30 | +@RestController | ||
| 31 | +@RequestMapping("/mapper/system/user/profile") | ||
| 32 | +public class SysProfileController extends BaseController | ||
| 33 | +{ | ||
| 34 | + @Autowired | ||
| 35 | + private ISysUserService userService; | ||
| 36 | + | ||
| 37 | + @Autowired | ||
| 38 | + private TokenService tokenService; | ||
| 39 | + | ||
| 40 | + /** | ||
| 41 | + * 个人信息 | ||
| 42 | + */ | ||
| 43 | + @ApiOperation("个人信息") | ||
| 44 | + @GetMapping | ||
| 45 | + public AjaxResult profile() | ||
| 46 | + { | ||
| 47 | + LoginUser loginUser = getLoginUser(); | ||
| 48 | + SysUser user = loginUser.getUser(); | ||
| 49 | + AjaxResult ajax = AjaxResult.success(user); | ||
| 50 | + ajax.put("roleGroup", userService.selectUserRoleGroup(loginUser.getUsername())); | ||
| 51 | + ajax.put("postGroup", userService.selectUserPostGroup(loginUser.getUsername())); | ||
| 52 | + return ajax; | ||
| 53 | + } | ||
| 54 | + | ||
| 55 | + /** | ||
| 56 | + * 修改用户 | ||
| 57 | + */ | ||
| 58 | + @ApiOperation("修改用户") | ||
| 59 | + @Log(title = "个人信息", businessType = BusinessType.UPDATE) | ||
| 60 | + @PutMapping | ||
| 61 | + public AjaxResult updateProfile(@RequestBody SysUser user) | ||
| 62 | + { | ||
| 63 | + LoginUser loginUser = getLoginUser(); | ||
| 64 | + SysUser sysUser = loginUser.getUser(); | ||
| 65 | + user.setUserName(sysUser.getUserName()); | ||
| 66 | + if (StringUtils.isNotEmpty(user.getPhonenumber()) | ||
| 67 | + && UserConstants.NOT_UNIQUE.equals(userService.checkPhoneUnique(user))) | ||
| 68 | + { | ||
| 69 | + return AjaxResult.error("修改用户'" + user.getUserName() + "'失败,手机号码已存在"); | ||
| 70 | + } | ||
| 71 | + if (StringUtils.isNotEmpty(user.getEmail()) | ||
| 72 | + && UserConstants.NOT_UNIQUE.equals(userService.checkEmailUnique(user))) | ||
| 73 | + { | ||
| 74 | + return AjaxResult.error("修改用户'" + user.getUserName() + "'失败,邮箱账号已存在"); | ||
| 75 | + } | ||
| 76 | + user.setUserId(sysUser.getUserId()); | ||
| 77 | + user.setPassword(null); | ||
| 78 | + if (userService.updateUserProfile(user) > 0) | ||
| 79 | + { | ||
| 80 | + // 更新缓存用户信息 | ||
| 81 | + sysUser.setNickName(user.getNickName()); | ||
| 82 | + sysUser.setPhonenumber(user.getPhonenumber()); | ||
| 83 | + sysUser.setEmail(user.getEmail()); | ||
| 84 | + sysUser.setSex(user.getSex()); | ||
| 85 | + tokenService.setLoginUser(loginUser); | ||
| 86 | + return AjaxResult.success(); | ||
| 87 | + } | ||
| 88 | + return AjaxResult.error("修改个人信息异常,请联系管理员"); | ||
| 89 | + } | ||
| 90 | + | ||
| 91 | + /** | ||
| 92 | + * 重置密码 | ||
| 93 | + */ | ||
| 94 | + @ApiOperation("重置密码") | ||
| 95 | + @Log(title = "个人信息", businessType = BusinessType.UPDATE) | ||
| 96 | + @PutMapping("/updatePwd") | ||
| 97 | + public AjaxResult updatePwd(String oldPassword, String newPassword) | ||
| 98 | + { | ||
| 99 | + LoginUser loginUser = getLoginUser(); | ||
| 100 | + String userName = loginUser.getUsername(); | ||
| 101 | + String password = loginUser.getPassword(); | ||
| 102 | + if (!SecurityUtils.matchesPassword(oldPassword, password)) | ||
| 103 | + { | ||
| 104 | + return AjaxResult.error("修改密码失败,旧密码错误"); | ||
| 105 | + } | ||
| 106 | + if (SecurityUtils.matchesPassword(newPassword, password)) | ||
| 107 | + { | ||
| 108 | + return AjaxResult.error("新密码不能与旧密码相同"); | ||
| 109 | + } | ||
| 110 | + if (userService.resetUserPwd(userName, SecurityUtils.encryptPassword(newPassword)) > 0) | ||
| 111 | + { | ||
| 112 | + // 更新缓存用户密码 | ||
| 113 | + loginUser.getUser().setPassword(SecurityUtils.encryptPassword(newPassword)); | ||
| 114 | + tokenService.setLoginUser(loginUser); | ||
| 115 | + return AjaxResult.success(); | ||
| 116 | + } | ||
| 117 | + return AjaxResult.error("修改密码异常,请联系管理员"); | ||
| 118 | + } | ||
| 119 | + | ||
| 120 | + /** | ||
| 121 | + * 头像上传 | ||
| 122 | + */ | ||
| 123 | + @ApiOperation("头像上传") | ||
| 124 | + @Log(title = "用户头像", businessType = BusinessType.UPDATE) | ||
| 125 | + @PostMapping("/avatar") | ||
| 126 | + public AjaxResult avatar(@RequestParam("avatarfile") MultipartFile file) throws IOException | ||
| 127 | + { | ||
| 128 | + if (!file.isEmpty()) | ||
| 129 | + { | ||
| 130 | + LoginUser loginUser = getLoginUser(); | ||
| 131 | + String avatar = FileUploadUtils.upload(RuoYiConfig.getAvatarPath(), file); | ||
| 132 | + if (userService.updateUserAvatar(loginUser.getUsername(), avatar)) | ||
| 133 | + { | ||
| 134 | + AjaxResult ajax = AjaxResult.success(); | ||
| 135 | + ajax.put("imgUrl", avatar); | ||
| 136 | + // 更新缓存用户头像 | ||
| 137 | + loginUser.getUser().setAvatar(avatar); | ||
| 138 | + tokenService.setLoginUser(loginUser); | ||
| 139 | + return ajax; | ||
| 140 | + } | ||
| 141 | + } | ||
| 142 | + return AjaxResult.error("上传图片异常,请联系管理员"); | ||
| 143 | + } | ||
| 144 | +} |
lh-admin/src/main/java/com/zhonglai/luhui/admin/controller/system/SysRegisterController.java
0 → 100644
| 1 | +package com.zhonglai.luhui.admin.controller.system; | ||
| 2 | + | ||
| 3 | +import com.ruoyi.common.core.controller.BaseController; | ||
| 4 | +import com.ruoyi.common.core.domain.AjaxResult; | ||
| 5 | +import com.ruoyi.common.core.domain.model.RegisterBody; | ||
| 6 | +import com.ruoyi.common.utils.StringUtils; | ||
| 7 | +import com.ruoyi.framework.web.service.SysLoginService; | ||
| 8 | +import com.ruoyi.framework.web.service.SysRegisterService; | ||
| 9 | +import com.ruoyi.system.service.ISysConfigService; | ||
| 10 | +import io.swagger.annotations.Api; | ||
| 11 | +import io.swagger.annotations.ApiOperation; | ||
| 12 | +import org.springframework.beans.factory.annotation.Autowired; | ||
| 13 | +import org.springframework.web.bind.annotation.PostMapping; | ||
| 14 | +import org.springframework.web.bind.annotation.RequestBody; | ||
| 15 | +import org.springframework.web.bind.annotation.RestController; | ||
| 16 | + | ||
| 17 | +/** | ||
| 18 | + * 注册验证 | ||
| 19 | + * | ||
| 20 | + * @author ruoyi | ||
| 21 | + */ | ||
| 22 | +@Api(tags = "注册验证") | ||
| 23 | +@RestController | ||
| 24 | +public class SysRegisterController extends BaseController | ||
| 25 | +{ | ||
| 26 | + @Autowired | ||
| 27 | + private SysRegisterService registerService; | ||
| 28 | + | ||
| 29 | + @Autowired | ||
| 30 | + private ISysConfigService configService; | ||
| 31 | + | ||
| 32 | + @Autowired | ||
| 33 | + private SysLoginService loginService; | ||
| 34 | + | ||
| 35 | + @ApiOperation("注册") | ||
| 36 | + @PostMapping("/register") | ||
| 37 | + public AjaxResult register(@RequestBody RegisterBody user) | ||
| 38 | + { | ||
| 39 | + if (!("true".equals(configService.selectConfigByKey("sys.account.registerUser")))) | ||
| 40 | + { | ||
| 41 | + return error("当前系统没有开启注册功能!"); | ||
| 42 | + } | ||
| 43 | + String msg = registerService.register(user); | ||
| 44 | + return StringUtils.isEmpty(msg) ? success() : error(msg); | ||
| 45 | + } | ||
| 46 | + | ||
| 47 | +} |
| 1 | +package com.zhonglai.luhui.admin.controller.system; | ||
| 2 | + | ||
| 3 | +import com.ruoyi.common.annotation.Log; | ||
| 4 | +import com.ruoyi.common.constant.UserConstants; | ||
| 5 | +import com.ruoyi.common.core.controller.BaseController; | ||
| 6 | +import com.ruoyi.common.core.domain.AjaxResult; | ||
| 7 | +import com.ruoyi.common.core.domain.entity.SysRole; | ||
| 8 | +import com.ruoyi.common.core.domain.entity.SysUser; | ||
| 9 | +import com.ruoyi.common.core.domain.model.LoginUser; | ||
| 10 | +import com.ruoyi.common.core.page.TableDataInfo; | ||
| 11 | +import com.ruoyi.common.enums.BusinessType; | ||
| 12 | +import com.ruoyi.common.utils.StringUtils; | ||
| 13 | +import com.ruoyi.common.utils.poi.ExcelUtil; | ||
| 14 | +import com.ruoyi.framework.web.service.SysPermissionService; | ||
| 15 | +import com.ruoyi.framework.web.service.TokenService; | ||
| 16 | +import com.ruoyi.system.domain.SysUserRole; | ||
| 17 | +import com.ruoyi.system.service.ISysRoleService; | ||
| 18 | +import com.ruoyi.system.service.ISysUserService; | ||
| 19 | +import io.swagger.annotations.Api; | ||
| 20 | +import io.swagger.annotations.ApiOperation; | ||
| 21 | +import org.springframework.beans.factory.annotation.Autowired; | ||
| 22 | +import org.springframework.security.access.prepost.PreAuthorize; | ||
| 23 | +import org.springframework.validation.annotation.Validated; | ||
| 24 | +import org.springframework.web.bind.annotation.*; | ||
| 25 | + | ||
| 26 | +import javax.servlet.http.HttpServletResponse; | ||
| 27 | +import java.util.List; | ||
| 28 | + | ||
| 29 | +/** | ||
| 30 | + * 角色信息 | ||
| 31 | + * | ||
| 32 | + * @author ruoyi | ||
| 33 | + */ | ||
| 34 | +@Api(tags = "角色信息") | ||
| 35 | +@RestController | ||
| 36 | +@RequestMapping("/mapper/system/role") | ||
| 37 | +public class SysRoleController extends BaseController | ||
| 38 | +{ | ||
| 39 | + @Autowired | ||
| 40 | + private ISysRoleService roleService; | ||
| 41 | + | ||
| 42 | + @Autowired | ||
| 43 | + private TokenService tokenService; | ||
| 44 | + | ||
| 45 | + @Autowired | ||
| 46 | + private SysPermissionService permissionService; | ||
| 47 | + | ||
| 48 | + @Autowired | ||
| 49 | + private ISysUserService userService; | ||
| 50 | + | ||
| 51 | + @ApiOperation("列表") | ||
| 52 | + @PreAuthorize("@ss.hasPermi('system:role:list')") | ||
| 53 | + @GetMapping("/list") | ||
| 54 | + public TableDataInfo list(SysRole role) | ||
| 55 | + { | ||
| 56 | + startPage(); | ||
| 57 | + List<SysRole> list = roleService.selectRoleList(role); | ||
| 58 | + return getDataTable(list); | ||
| 59 | + } | ||
| 60 | + | ||
| 61 | + @ApiOperation("注册") | ||
| 62 | + @Log(title = "导出", businessType = BusinessType.EXPORT) | ||
| 63 | + @PreAuthorize("@ss.hasPermi('system:role:export')") | ||
| 64 | + @PostMapping("/export") | ||
| 65 | + public void export(HttpServletResponse response, SysRole role) | ||
| 66 | + { | ||
| 67 | + List<SysRole> list = roleService.selectRoleList(role); | ||
| 68 | + ExcelUtil<SysRole> util = new ExcelUtil<SysRole>(SysRole.class); | ||
| 69 | + util.exportExcel(response, list, "角色数据"); | ||
| 70 | + } | ||
| 71 | + | ||
| 72 | + /** | ||
| 73 | + * 根据角色编号获取详细信息 | ||
| 74 | + */ | ||
| 75 | + @ApiOperation("根据角色编号获取详细信息") | ||
| 76 | + @PreAuthorize("@ss.hasPermi('system:role:query')") | ||
| 77 | + @GetMapping(value = "/{roleId}") | ||
| 78 | + public AjaxResult getInfo(@PathVariable Long roleId) | ||
| 79 | + { | ||
| 80 | + roleService.checkRoleDataScope(roleId); | ||
| 81 | + return AjaxResult.success(roleService.selectRoleById(roleId)); | ||
| 82 | + } | ||
| 83 | + | ||
| 84 | + /** | ||
| 85 | + * 新增角色 | ||
| 86 | + */ | ||
| 87 | + @ApiOperation("新增角色") | ||
| 88 | + @PreAuthorize("@ss.hasPermi('system:role:add')") | ||
| 89 | + @Log(title = "角色管理", businessType = BusinessType.INSERT) | ||
| 90 | + @PostMapping | ||
| 91 | + public AjaxResult add(@Validated @RequestBody SysRole role) | ||
| 92 | + { | ||
| 93 | + if (UserConstants.NOT_UNIQUE.equals(roleService.checkRoleNameUnique(role))) | ||
| 94 | + { | ||
| 95 | + return AjaxResult.error("新增角色'" + role.getRoleName() + "'失败,角色名称已存在"); | ||
| 96 | + } | ||
| 97 | + else if (UserConstants.NOT_UNIQUE.equals(roleService.checkRoleKeyUnique(role))) | ||
| 98 | + { | ||
| 99 | + return AjaxResult.error("新增角色'" + role.getRoleName() + "'失败,角色权限已存在"); | ||
| 100 | + } | ||
| 101 | + role.setCreateBy(getUsername()); | ||
| 102 | + return toAjax(roleService.insertRole(role)); | ||
| 103 | + | ||
| 104 | + } | ||
| 105 | + | ||
| 106 | + /** | ||
| 107 | + * 修改保存角色 | ||
| 108 | + */ | ||
| 109 | + @ApiOperation("修改保存角色") | ||
| 110 | + @PreAuthorize("@ss.hasPermi('system:role:edit')") | ||
| 111 | + @Log(title = "角色管理", businessType = BusinessType.UPDATE) | ||
| 112 | + @PutMapping | ||
| 113 | + public AjaxResult edit(@Validated @RequestBody SysRole role) | ||
| 114 | + { | ||
| 115 | + roleService.checkRoleAllowed(role); | ||
| 116 | + roleService.checkRoleDataScope(role.getRoleId()); | ||
| 117 | + if (UserConstants.NOT_UNIQUE.equals(roleService.checkRoleNameUnique(role))) | ||
| 118 | + { | ||
| 119 | + return AjaxResult.error("修改角色'" + role.getRoleName() + "'失败,角色名称已存在"); | ||
| 120 | + } | ||
| 121 | + else if (UserConstants.NOT_UNIQUE.equals(roleService.checkRoleKeyUnique(role))) | ||
| 122 | + { | ||
| 123 | + return AjaxResult.error("修改角色'" + role.getRoleName() + "'失败,角色权限已存在"); | ||
| 124 | + } | ||
| 125 | + role.setUpdateBy(getUsername()); | ||
| 126 | + | ||
| 127 | + if (roleService.updateRole(role) > 0) | ||
| 128 | + { | ||
| 129 | + // 更新缓存用户权限 | ||
| 130 | + LoginUser loginUser = getLoginUser(); | ||
| 131 | + if (StringUtils.isNotNull(loginUser.getUser()) && !loginUser.getUser().isAdmin()) | ||
| 132 | + { | ||
| 133 | + loginUser.setPermissions(permissionService.getMenuPermission(loginUser.getUser())); | ||
| 134 | + loginUser.setUser(userService.selectUserByUserName(loginUser.getUser().getUserName())); | ||
| 135 | + tokenService.setLoginUser(loginUser); | ||
| 136 | + } | ||
| 137 | + return AjaxResult.success(); | ||
| 138 | + } | ||
| 139 | + return AjaxResult.error("修改角色'" + role.getRoleName() + "'失败,请联系管理员"); | ||
| 140 | + } | ||
| 141 | + | ||
| 142 | + /** | ||
| 143 | + * 修改保存数据权限 | ||
| 144 | + */ | ||
| 145 | + @ApiOperation("修改保存数据权限") | ||
| 146 | + @PreAuthorize("@ss.hasPermi('system:role:edit')") | ||
| 147 | + @Log(title = "角色管理", businessType = BusinessType.UPDATE) | ||
| 148 | + @PutMapping("/dataScope") | ||
| 149 | + public AjaxResult dataScope(@RequestBody SysRole role) | ||
| 150 | + { | ||
| 151 | + roleService.checkRoleAllowed(role); | ||
| 152 | + roleService.checkRoleDataScope(role.getRoleId()); | ||
| 153 | + return toAjax(roleService.authDataScope(role)); | ||
| 154 | + } | ||
| 155 | + | ||
| 156 | + /** | ||
| 157 | + * 状态修改 | ||
| 158 | + */ | ||
| 159 | + @ApiOperation("状态修改") | ||
| 160 | + @PreAuthorize("@ss.hasPermi('system:role:edit')") | ||
| 161 | + @Log(title = "角色管理", businessType = BusinessType.UPDATE) | ||
| 162 | + @PutMapping("/changeStatus") | ||
| 163 | + public AjaxResult changeStatus(@RequestBody SysRole role) | ||
| 164 | + { | ||
| 165 | + roleService.checkRoleAllowed(role); | ||
| 166 | + roleService.checkRoleDataScope(role.getRoleId()); | ||
| 167 | + role.setUpdateBy(getUsername()); | ||
| 168 | + return toAjax(roleService.updateRoleStatus(role)); | ||
| 169 | + } | ||
| 170 | + | ||
| 171 | + /** | ||
| 172 | + * 删除角色 | ||
| 173 | + */ | ||
| 174 | + @ApiOperation("删除角色") | ||
| 175 | + @PreAuthorize("@ss.hasPermi('system:role:remove')") | ||
| 176 | + @Log(title = "角色管理", businessType = BusinessType.DELETE) | ||
| 177 | + @DeleteMapping("/{roleIds}") | ||
| 178 | + public AjaxResult remove(@PathVariable Long[] roleIds) | ||
| 179 | + { | ||
| 180 | + return toAjax(roleService.deleteRoleByIds(roleIds)); | ||
| 181 | + } | ||
| 182 | + | ||
| 183 | + /** | ||
| 184 | + * 获取角色选择框列表 | ||
| 185 | + */ | ||
| 186 | + @ApiOperation("获取角色选择框列表") | ||
| 187 | + @PreAuthorize("@ss.hasPermi('system:role:query')") | ||
| 188 | + @GetMapping("/optionselect") | ||
| 189 | + public AjaxResult optionselect() | ||
| 190 | + { | ||
| 191 | + return AjaxResult.success(roleService.selectRoleAll()); | ||
| 192 | + } | ||
| 193 | + | ||
| 194 | + /** | ||
| 195 | + * 查询已分配用户角色列表 | ||
| 196 | + */ | ||
| 197 | + @ApiOperation("查询已分配用户角色列表") | ||
| 198 | + @PreAuthorize("@ss.hasPermi('system:role:list')") | ||
| 199 | + @GetMapping("/authUser/allocatedList") | ||
| 200 | + public TableDataInfo allocatedList(SysUser user) | ||
| 201 | + { | ||
| 202 | + startPage(); | ||
| 203 | + List<SysUser> list = userService.selectAllocatedList(user); | ||
| 204 | + return getDataTable(list); | ||
| 205 | + } | ||
| 206 | + | ||
| 207 | + /** | ||
| 208 | + * 查询未分配用户角色列表 | ||
| 209 | + */ | ||
| 210 | + @ApiOperation("查询未分配用户角色列表") | ||
| 211 | + @PreAuthorize("@ss.hasPermi('system:role:list')") | ||
| 212 | + @GetMapping("/authUser/unallocatedList") | ||
| 213 | + public TableDataInfo unallocatedList(SysUser user) | ||
| 214 | + { | ||
| 215 | + startPage(); | ||
| 216 | + List<SysUser> list = userService.selectUnallocatedList(user); | ||
| 217 | + return getDataTable(list); | ||
| 218 | + } | ||
| 219 | + | ||
| 220 | + /** | ||
| 221 | + * 取消授权用户 | ||
| 222 | + */ | ||
| 223 | + @ApiOperation("取消授权用户") | ||
| 224 | + @PreAuthorize("@ss.hasPermi('system:role:edit')") | ||
| 225 | + @Log(title = "角色管理", businessType = BusinessType.GRANT) | ||
| 226 | + @PutMapping("/authUser/cancel") | ||
| 227 | + public AjaxResult cancelAuthUser(@RequestBody SysUserRole userRole) | ||
| 228 | + { | ||
| 229 | + return toAjax(roleService.deleteAuthUser(userRole)); | ||
| 230 | + } | ||
| 231 | + | ||
| 232 | + /** | ||
| 233 | + * 批量取消授权用户 | ||
| 234 | + */ | ||
| 235 | + @ApiOperation("批量取消授权用户") | ||
| 236 | + @PreAuthorize("@ss.hasPermi('system:role:edit')") | ||
| 237 | + @Log(title = "角色管理", businessType = BusinessType.GRANT) | ||
| 238 | + @PutMapping("/authUser/cancelAll") | ||
| 239 | + public AjaxResult cancelAuthUserAll(Long roleId, Long[] userIds) | ||
| 240 | + { | ||
| 241 | + return toAjax(roleService.deleteAuthUsers(roleId, userIds)); | ||
| 242 | + } | ||
| 243 | + | ||
| 244 | + /** | ||
| 245 | + * 批量选择用户授权 | ||
| 246 | + */ | ||
| 247 | + @ApiOperation("批量选择用户授权") | ||
| 248 | + @PreAuthorize("@ss.hasPermi('system:role:edit')") | ||
| 249 | + @Log(title = "角色管理", businessType = BusinessType.GRANT) | ||
| 250 | + @PutMapping("/authUser/selectAll") | ||
| 251 | + public AjaxResult selectAuthUserAll(Long roleId, Long[] userIds) | ||
| 252 | + { | ||
| 253 | + roleService.checkRoleDataScope(roleId); | ||
| 254 | + return toAjax(roleService.insertAuthUsers(roleId, userIds)); | ||
| 255 | + } | ||
| 256 | +} |
| 1 | +package com.zhonglai.luhui.admin.controller.system; | ||
| 2 | + | ||
| 3 | +import com.ruoyi.common.annotation.Log; | ||
| 4 | +import com.ruoyi.common.constant.UserConstants; | ||
| 5 | +import com.ruoyi.common.core.controller.BaseController; | ||
| 6 | +import com.ruoyi.common.core.domain.AjaxResult; | ||
| 7 | +import com.ruoyi.common.core.domain.entity.SysRole; | ||
| 8 | +import com.ruoyi.common.core.domain.entity.SysUser; | ||
| 9 | +import com.ruoyi.common.core.page.TableDataInfo; | ||
| 10 | +import com.ruoyi.common.enums.BusinessType; | ||
| 11 | +import com.ruoyi.common.utils.SecurityUtils; | ||
| 12 | +import com.ruoyi.common.utils.StringUtils; | ||
| 13 | +import com.ruoyi.common.utils.poi.ExcelUtil; | ||
| 14 | +import com.ruoyi.system.service.ISysPostService; | ||
| 15 | +import com.ruoyi.system.service.ISysRoleService; | ||
| 16 | +import com.ruoyi.system.service.ISysUserService; | ||
| 17 | +import io.swagger.annotations.Api; | ||
| 18 | +import io.swagger.annotations.ApiOperation; | ||
| 19 | +import org.apache.commons.lang3.ArrayUtils; | ||
| 20 | +import org.springframework.beans.factory.annotation.Autowired; | ||
| 21 | +import org.springframework.security.access.prepost.PreAuthorize; | ||
| 22 | +import org.springframework.validation.annotation.Validated; | ||
| 23 | +import org.springframework.web.bind.annotation.*; | ||
| 24 | +import org.springframework.web.multipart.MultipartFile; | ||
| 25 | + | ||
| 26 | +import javax.servlet.http.HttpServletResponse; | ||
| 27 | +import java.util.List; | ||
| 28 | +import java.util.stream.Collectors; | ||
| 29 | + | ||
| 30 | +/** | ||
| 31 | + * 用户信息 | ||
| 32 | + * | ||
| 33 | + * @author ruoyi | ||
| 34 | + */ | ||
| 35 | +@Api(tags = "管理员用户信息") | ||
| 36 | +@RestController | ||
| 37 | +@RequestMapping("/mapper/system/user") | ||
| 38 | +public class SysUserController extends BaseController | ||
| 39 | +{ | ||
| 40 | + @Autowired | ||
| 41 | + private ISysUserService userService; | ||
| 42 | + | ||
| 43 | + @Autowired | ||
| 44 | + private ISysRoleService roleService; | ||
| 45 | + | ||
| 46 | + @Autowired | ||
| 47 | + private ISysPostService postService; | ||
| 48 | + | ||
| 49 | + /** | ||
| 50 | + * 获取用户列表 | ||
| 51 | + */ | ||
| 52 | + @ApiOperation("列表") | ||
| 53 | + @PreAuthorize("@ss.hasPermi('system:user:list')") | ||
| 54 | + @GetMapping("/list") | ||
| 55 | + public TableDataInfo list(SysUser user) | ||
| 56 | + { | ||
| 57 | + startPage(); | ||
| 58 | + List<SysUser> list = userService.selectUserList(user); | ||
| 59 | + return getDataTable(list); | ||
| 60 | + } | ||
| 61 | + | ||
| 62 | + @ApiOperation("导出") | ||
| 63 | + @Log(title = "用户管理", businessType = BusinessType.EXPORT) | ||
| 64 | + @PreAuthorize("@ss.hasPermi('system:user:export')") | ||
| 65 | + @PostMapping("/export") | ||
| 66 | + public void export(HttpServletResponse response, SysUser user) | ||
| 67 | + { | ||
| 68 | + List<SysUser> list = userService.selectUserList(user); | ||
| 69 | + ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class); | ||
| 70 | + util.exportExcel(response, list, "用户数据"); | ||
| 71 | + } | ||
| 72 | + | ||
| 73 | + @ApiOperation("导入") | ||
| 74 | + @Log(title = "用户管理", businessType = BusinessType.IMPORT) | ||
| 75 | + @PreAuthorize("@ss.hasPermi('system:user:import')") | ||
| 76 | + @PostMapping("/importData") | ||
| 77 | + public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception | ||
| 78 | + { | ||
| 79 | + ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class); | ||
| 80 | + List<SysUser> userList = util.importExcel(file.getInputStream()); | ||
| 81 | + String operName = getUsername(); | ||
| 82 | + String message = userService.importUser(userList, updateSupport, operName); | ||
| 83 | + return AjaxResult.success(message); | ||
| 84 | + } | ||
| 85 | + | ||
| 86 | + @ApiOperation("导入") | ||
| 87 | + @PostMapping("/importTemplate") | ||
| 88 | + public void importTemplate(HttpServletResponse response) | ||
| 89 | + { | ||
| 90 | + ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class); | ||
| 91 | + util.importTemplateExcel(response, "用户数据"); | ||
| 92 | + } | ||
| 93 | + | ||
| 94 | + /** | ||
| 95 | + * 根据用户编号获取详细信息 | ||
| 96 | + */ | ||
| 97 | + @ApiOperation("根据用户编号获取详细信息") | ||
| 98 | + @PreAuthorize("@ss.hasPermi('system:user:query')") | ||
| 99 | + @GetMapping(value = { "/", "/{userId}" }) | ||
| 100 | + public AjaxResult getInfo(@PathVariable(value = "userId", required = false) Long userId) | ||
| 101 | + { | ||
| 102 | + userService.checkUserDataScope(userId); | ||
| 103 | + AjaxResult ajax = AjaxResult.success(); | ||
| 104 | + List<SysRole> roles = roleService.selectRoleAll(); | ||
| 105 | + ajax.put("roles", SysUser.isAdmin(userId) ? roles : roles.stream().filter(r -> !r.isAdmin()).collect(Collectors.toList())); | ||
| 106 | + ajax.put("posts", postService.selectPostAll()); | ||
| 107 | + if (StringUtils.isNotNull(userId)) | ||
| 108 | + { | ||
| 109 | + SysUser sysUser = userService.selectUserById(userId); | ||
| 110 | + ajax.put(AjaxResult.DATA_TAG, sysUser); | ||
| 111 | + ajax.put("postIds", postService.selectPostListByUserId(userId)); | ||
| 112 | + ajax.put("roleIds", sysUser.getRoles().stream().map(SysRole::getRoleId).collect(Collectors.toList())); | ||
| 113 | + } | ||
| 114 | + return ajax; | ||
| 115 | + } | ||
| 116 | + | ||
| 117 | + /** | ||
| 118 | + * 新增用户 | ||
| 119 | + */ | ||
| 120 | + @ApiOperation("新增用户") | ||
| 121 | + @PreAuthorize("@ss.hasPermi('system:user:add')") | ||
| 122 | + @Log(title = "用户管理", businessType = BusinessType.INSERT) | ||
| 123 | + @PostMapping | ||
| 124 | + public AjaxResult add(@Validated @RequestBody SysUser user) | ||
| 125 | + { | ||
| 126 | + if (UserConstants.NOT_UNIQUE.equals(userService.checkUserNameUnique(user.getUserName()))) | ||
| 127 | + { | ||
| 128 | + return AjaxResult.error("新增用户'" + user.getUserName() + "'失败,登录账号已存在"); | ||
| 129 | + } | ||
| 130 | + else if (StringUtils.isNotEmpty(user.getPhonenumber()) | ||
| 131 | + && UserConstants.NOT_UNIQUE.equals(userService.checkPhoneUnique(user))) | ||
| 132 | + { | ||
| 133 | + return AjaxResult.error("新增用户'" + user.getUserName() + "'失败,手机号码已存在"); | ||
| 134 | + } | ||
| 135 | + else if (StringUtils.isNotEmpty(user.getEmail()) | ||
| 136 | + && UserConstants.NOT_UNIQUE.equals(userService.checkEmailUnique(user))) | ||
| 137 | + { | ||
| 138 | + return AjaxResult.error("新增用户'" + user.getUserName() + "'失败,邮箱账号已存在"); | ||
| 139 | + } | ||
| 140 | + user.setCreateBy(getUsername()); | ||
| 141 | + user.setPassword(SecurityUtils.encryptPassword(user.getPassword())); | ||
| 142 | + return toAjax(userService.insertUser(user)); | ||
| 143 | + } | ||
| 144 | + | ||
| 145 | + /** | ||
| 146 | + * 修改用户 | ||
| 147 | + */ | ||
| 148 | + @ApiOperation("修改用户") | ||
| 149 | + @PreAuthorize("@ss.hasPermi('system:user:edit')") | ||
| 150 | + @Log(title = "用户管理", businessType = BusinessType.UPDATE) | ||
| 151 | + @PutMapping | ||
| 152 | + public AjaxResult edit(@Validated @RequestBody SysUser user) | ||
| 153 | + { | ||
| 154 | + userService.checkUserAllowed(user); | ||
| 155 | + userService.checkUserDataScope(user.getUserId()); | ||
| 156 | + if (StringUtils.isNotEmpty(user.getPhonenumber()) | ||
| 157 | + && UserConstants.NOT_UNIQUE.equals(userService.checkPhoneUnique(user))) | ||
| 158 | + { | ||
| 159 | + return AjaxResult.error("修改用户'" + user.getUserName() + "'失败,手机号码已存在"); | ||
| 160 | + } | ||
| 161 | + else if (StringUtils.isNotEmpty(user.getEmail()) | ||
| 162 | + && UserConstants.NOT_UNIQUE.equals(userService.checkEmailUnique(user))) | ||
| 163 | + { | ||
| 164 | + return AjaxResult.error("修改用户'" + user.getUserName() + "'失败,邮箱账号已存在"); | ||
| 165 | + } | ||
| 166 | + user.setUpdateBy(getUsername()); | ||
| 167 | + return toAjax(userService.updateUser(user)); | ||
| 168 | + } | ||
| 169 | + | ||
| 170 | + /** | ||
| 171 | + * 删除用户 | ||
| 172 | + */ | ||
| 173 | + @ApiOperation("删除用户") | ||
| 174 | + @PreAuthorize("@ss.hasPermi('system:user:remove')") | ||
| 175 | + @Log(title = "用户管理", businessType = BusinessType.DELETE) | ||
| 176 | + @DeleteMapping("/{userIds}") | ||
| 177 | + public AjaxResult remove(@PathVariable Long[] userIds) | ||
| 178 | + { | ||
| 179 | + if (ArrayUtils.contains(userIds, getUserId())) | ||
| 180 | + { | ||
| 181 | + return error("当前用户不能删除"); | ||
| 182 | + } | ||
| 183 | + return toAjax(userService.deleteUserByIds(userIds)); | ||
| 184 | + } | ||
| 185 | + | ||
| 186 | + /** | ||
| 187 | + * 重置密码 | ||
| 188 | + */ | ||
| 189 | + @ApiOperation("重置密码") | ||
| 190 | + @PreAuthorize("@ss.hasPermi('system:user:resetPwd')") | ||
| 191 | + @Log(title = "用户管理", businessType = BusinessType.UPDATE) | ||
| 192 | + @PutMapping("/resetPwd") | ||
| 193 | + public AjaxResult resetPwd(@RequestBody SysUser user) | ||
| 194 | + { | ||
| 195 | + userService.checkUserAllowed(user); | ||
| 196 | + userService.checkUserDataScope(user.getUserId()); | ||
| 197 | + user.setPassword(SecurityUtils.encryptPassword(user.getPassword())); | ||
| 198 | + user.setUpdateBy(getUsername()); | ||
| 199 | + return toAjax(userService.resetPwd(user)); | ||
| 200 | + } | ||
| 201 | + | ||
| 202 | + /** | ||
| 203 | + * 状态修改 | ||
| 204 | + */ | ||
| 205 | + @ApiOperation("状态修改") | ||
| 206 | + @PreAuthorize("@ss.hasPermi('system:user:edit')") | ||
| 207 | + @Log(title = "用户管理", businessType = BusinessType.UPDATE) | ||
| 208 | + @PutMapping("/changeStatus") | ||
| 209 | + public AjaxResult changeStatus(@RequestBody SysUser user) | ||
| 210 | + { | ||
| 211 | + userService.checkUserAllowed(user); | ||
| 212 | + userService.checkUserDataScope(user.getUserId()); | ||
| 213 | + user.setUpdateBy(getUsername()); | ||
| 214 | + return toAjax(userService.updateUserStatus(user)); | ||
| 215 | + } | ||
| 216 | + | ||
| 217 | + /** | ||
| 218 | + * 根据用户编号获取授权角色 | ||
| 219 | + */ | ||
| 220 | + @ApiOperation("根据用户编号获取授权角色") | ||
| 221 | + @PreAuthorize("@ss.hasPermi('system:user:query')") | ||
| 222 | + @GetMapping("/authRole/{userId}") | ||
| 223 | + public AjaxResult authRole(@PathVariable("userId") Long userId) | ||
| 224 | + { | ||
| 225 | + AjaxResult ajax = AjaxResult.success(); | ||
| 226 | + SysUser user = userService.selectUserById(userId); | ||
| 227 | + List<SysRole> roles = roleService.selectRolesByUserId(userId); | ||
| 228 | + ajax.put("user", user); | ||
| 229 | + ajax.put("roles", SysUser.isAdmin(userId) ? roles : roles.stream().filter(r -> !r.isAdmin()).collect(Collectors.toList())); | ||
| 230 | + return ajax; | ||
| 231 | + } | ||
| 232 | + | ||
| 233 | + /** | ||
| 234 | + * 用户授权角色 | ||
| 235 | + */ | ||
| 236 | + @ApiOperation("用户授权角色") | ||
| 237 | + @PreAuthorize("@ss.hasPermi('system:user:edit')") | ||
| 238 | + @Log(title = "用户管理", businessType = BusinessType.GRANT) | ||
| 239 | + @PutMapping("/authRole") | ||
| 240 | + public AjaxResult insertAuthRole(Long userId, Long[] roleIds) | ||
| 241 | + { | ||
| 242 | + userService.checkUserDataScope(userId); | ||
| 243 | + userService.insertUserAuth(userId, roleIds); | ||
| 244 | + return success(); | ||
| 245 | + } | ||
| 246 | +} |
| 1 | +restart.include.json=/com.alibaba.fastjson.*.jar |
| 1 | +# 数据源配置 | ||
| 2 | +spring: | ||
| 3 | + datasource: | ||
| 4 | + type: com.alibaba.druid.pool.DruidDataSource | ||
| 5 | + driverClassName: com.mysql.cj.jdbc.Driver | ||
| 6 | + druid: | ||
| 7 | + # 主库数据源 | ||
| 8 | + master: | ||
| 9 | + url: jdbc:mysql://rm-wz9740un21f09iokuao.mysql.rds.aliyuncs.com:3306/mqtt_broker?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 | ||
| 10 | + username: luhui | ||
| 11 | + password: Luhui586 | ||
| 12 | + # 从库数据源 | ||
| 13 | + slave: | ||
| 14 | + # 从数据源开关/默认关闭 | ||
| 15 | + enabled: false | ||
| 16 | + url: | ||
| 17 | + username: | ||
| 18 | + password: | ||
| 19 | + # 初始连接数 | ||
| 20 | + initialSize: 5 | ||
| 21 | + # 最小连接池数量 | ||
| 22 | + minIdle: 10 | ||
| 23 | + # 最大连接池数量 | ||
| 24 | + maxActive: 20 | ||
| 25 | + # 配置获取连接等待超时的时间 | ||
| 26 | + maxWait: 60000 | ||
| 27 | + # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 | ||
| 28 | + timeBetweenEvictionRunsMillis: 60000 | ||
| 29 | + # 配置一个连接在池中最小生存的时间,单位是毫秒 | ||
| 30 | + minEvictableIdleTimeMillis: 300000 | ||
| 31 | + # 配置一个连接在池中最大生存的时间,单位是毫秒 | ||
| 32 | + maxEvictableIdleTimeMillis: 900000 | ||
| 33 | + # 配置检测连接是否有效 | ||
| 34 | + validationQuery: SELECT 1 FROM DUAL | ||
| 35 | + testWhileIdle: true | ||
| 36 | + testOnBorrow: false | ||
| 37 | + testOnReturn: false | ||
| 38 | + webStatFilter: | ||
| 39 | + enabled: true | ||
| 40 | + statViewServlet: | ||
| 41 | + enabled: true | ||
| 42 | + # 设置白名单,不填则允许所有访问 | ||
| 43 | + allow: | ||
| 44 | + url-pattern: /druid/* | ||
| 45 | + # 控制台管理用户名和密码 | ||
| 46 | + login-username: ruoyi | ||
| 47 | + login-password: 123456 | ||
| 48 | + filter: | ||
| 49 | + stat: | ||
| 50 | + enabled: true | ||
| 51 | + # 慢SQL记录 | ||
| 52 | + log-slow-sql: true | ||
| 53 | + slow-sql-millis: 1000 | ||
| 54 | + merge-sql: true | ||
| 55 | + wall: | ||
| 56 | + config: | ||
| 57 | + multi-statement-allow: true |
lh-admin/src/main/resources/application.yml
0 → 100644
| 1 | +# 项目相关配置 jhlt: # 名称 name: zhonglai # 版本 version: 3.8.2 # 版权年份 copyrightYear: 2022 # 实例演示开关 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: 8080 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 # Spring配置 spring: # 资源信息 messages: # 国际化资源文件路径 basename: i18n/messages profiles: active: druid # 文件上传 servlet: multipart: # 单个文件大小 max-file-size: 10MB # 设置总上传的文件大小 max-request-size: 20MB # 服务模块 devtools: restart: # 热部署开关 enabled: true # redis 配置 redis: # 地址 host: 47.112.163.61 # 端口,默认为6379 port: 9527 # 数据库索引 database: 0 # 密码 password: Luhui586 # 连接超时时间 timeout: 10s lettuce: pool: # 连接池中的最小空闲连接 min-idle: 0 # 连接池中的最大空闲连接 max-idle: 8 # 连接池的最大数据库连接数 max-active: 8 # #连接池最大阻塞等待时间(使用负值表示没有限制) max-wait: -1ms # token配置 token: # 令牌自定义标识 header: Authorization # 令牌密钥 secret: abcdefghijklmnopqrstuvwxyz # 令牌有效期(默认30分钟) expireTime: 30 # MyBatis配置 mybatis: # 搜索指定包别名 typeAliasesPackage: com.ruoyi.**.domain # 配置mapper的扫描,找到所有的mapper.xml映射文件 mapperLocations: classpath*:mapper/**/*Mapper.xml # 加载全局的配置文件 configLocation: classpath:mybatis/mybatis-config.xml # PageHelper分页插件 pagehelper: helperDialect: mysql supportMethodsArguments: true params: count=countSql # Swagger配置 swagger: # 是否开启swagger enabled: true # 请求前缀 pathMapping: /dev-api # 防止XSS攻击 xss: # 过滤开关 enabled: true # 排除链接(多个用逗号分隔) excludes: /system/notice # 匹配链接 urlPatterns: /system/*,/monitor/*,/tool/* sys: ## // 对于登录login 注册register 验证码captchaImage 允许匿名访问 antMatchers: /login,/register,/captchaImage,/getCacheObject,/v2/api-docs,/tool/gen/generatorCodeFromDb |
lh-admin/src/main/resources/banner.txt
0 → 100644
| 1 | +#错误消息 | ||
| 2 | +not.null=* 必须填写 | ||
| 3 | +user.jcaptcha.error=验证码错误 | ||
| 4 | +user.jcaptcha.expire=验证码已失效 | ||
| 5 | +user.not.exists=用户不存在/密码错误 | ||
| 6 | +user.password.not.match=用户不存在/密码错误 | ||
| 7 | +user.password.retry.limit.count=密码输入错误{0}次 | ||
| 8 | +user.password.retry.limit.exceed=密码输入错误{0}次,帐户锁定10分钟 | ||
| 9 | +user.password.delete=对不起,您的账号已被删除 | ||
| 10 | +user.blocked=用户已封禁,请联系管理员 | ||
| 11 | +role.blocked=角色已封禁,请联系管理员 | ||
| 12 | +user.logout.success=退出成功 | ||
| 13 | + | ||
| 14 | +length.not.valid=长度必须在{min}到{max}个字符之间 | ||
| 15 | + | ||
| 16 | +user.username.not.valid=* 2到20个汉字、字母、数字或下划线组成,且必须以非数字开头 | ||
| 17 | +user.password.not.valid=* 5-50个字符 | ||
| 18 | + | ||
| 19 | +user.email.not.valid=邮箱格式错误 | ||
| 20 | +user.mobile.phone.number.not.valid=手机号格式错误 | ||
| 21 | +user.login.success=登录成功 | ||
| 22 | +user.register.success=注册成功 | ||
| 23 | +user.notfound=请重新登录 | ||
| 24 | +user.forcelogout=管理员强制退出,请重新登录 | ||
| 25 | +user.unknown.error=未知错误,请重新登录 | ||
| 26 | + | ||
| 27 | +##文件上传消息 | ||
| 28 | +upload.exceed.maxSize=上传的文件大小超出限制的文件大小!<br/>允许的文件最大大小是:{0}MB! | ||
| 29 | +upload.filename.exceed.length=上传的文件名最长{0}个字符 | ||
| 30 | + | ||
| 31 | +##权限 | ||
| 32 | +no.permission=您没有数据的权限,请联系管理员添加权限 [{0}] | ||
| 33 | +no.create.permission=您没有创建数据的权限,请联系管理员添加权限 [{0}] | ||
| 34 | +no.update.permission=您没有修改数据的权限,请联系管理员添加权限 [{0}] | ||
| 35 | +no.delete.permission=您没有删除数据的权限,请联系管理员添加权限 [{0}] | ||
| 36 | +no.export.permission=您没有导出数据的权限,请联系管理员添加权限 [{0}] | ||
| 37 | +no.view.permission=您没有查看数据的权限,请联系管理员添加权限 [{0}] |
-
请 注册 或 登录 后发表评论