zjxpcyc hace 6 años
padre
commit
3f8f993afe
Se han modificado 67 ficheros con 2142 adiciones y 448 borrados
  1. 1
    0
      .gitignore
  2. 124
    0
      .idea/uiDesigner.xml
  3. 6
    0
      .idea/vcs.xml
  4. 483
    158
      .idea/workspace.xml
  5. 9
    1
      pom.xml
  6. 1
    0
      src/main/java/com.huiju.welcome/common/WebSocketServer.java
  7. 225
    161
      src/main/java/com.huiju.welcome/controller/CameraController.java
  8. 112
    1
      src/main/java/com.huiju.welcome/controller/SysUserController.java
  9. 108
    0
      src/main/java/com.huiju.welcome/controller/TaDeviceController.java
  10. 68
    29
      src/main/java/com.huiju.welcome/controller/TaPersonController.java
  11. 54
    0
      src/main/java/com.huiju.welcome/controller/TaSnapshotPersonController.java
  12. 46
    12
      src/main/java/com.huiju.welcome/controller/TaVisitingLogController.java
  13. 1
    0
      src/main/java/com.huiju.welcome/interceptor/AccessInterceptor.java
  14. 18
    0
      src/main/java/com.huiju.welcome/mapper/TaCustomWordsMapper.java
  15. 13
    1
      src/main/java/com.huiju.welcome/mapper/TaPersonMapper.java
  16. 22
    0
      src/main/java/com.huiju.welcome/mapper/TaSnapshotPersonMapper.java
  17. 11
    0
      src/main/java/com.huiju.welcome/mapper/TaVisitingLogMapper.java
  18. 9
    0
      src/main/java/com.huiju.welcome/model/SysUser.java
  19. 29
    0
      src/main/java/com.huiju.welcome/model/TaCustomWords.java
  20. 9
    0
      src/main/java/com.huiju.welcome/model/TaPerson.java
  21. 54
    0
      src/main/java/com.huiju.welcome/model/TaSnapshotPerson.java
  22. 8
    0
      src/main/java/com.huiju.welcome/model/TaVisitingLog.java
  23. 1
    1
      src/main/java/com.huiju.welcome/model/TaVisitingWords.java
  24. 8
    0
      src/main/java/com.huiju.welcome/service/ICameraService.java
  25. 16
    0
      src/main/java/com.huiju.welcome/service/ITaCustomWordsService.java
  26. 21
    1
      src/main/java/com.huiju.welcome/service/ITaPersonService.java
  27. 19
    0
      src/main/java/com.huiju.welcome/service/ITaSnapshotPersonService.java
  28. 10
    0
      src/main/java/com.huiju.welcome/service/ITaVisitingLogService.java
  29. 62
    0
      src/main/java/com.huiju.welcome/service/impl/CameraServiceImpl.java
  30. 20
    0
      src/main/java/com.huiju.welcome/service/impl/TaCustomWordsServiceImpl.java
  31. 73
    11
      src/main/java/com.huiju.welcome/service/impl/TaPersonServiceImpl.java
  32. 29
    0
      src/main/java/com.huiju.welcome/service/impl/TaSnapshotPersonImpl.java
  33. 27
    0
      src/main/java/com.huiju.welcome/service/impl/TaVisitingLogServiceImpl.java
  34. 0
    33
      src/main/java/com.huiju.welcome/utils/AMap.java
  35. 0
    2
      src/main/java/com.huiju.welcome/utils/XFYun.java
  36. 7
    1
      src/main/resources/application.yml
  37. 1
    1
      src/main/resources/mapper/SysUserMapper.xml
  38. 1
    1
      src/main/resources/mapper/TaContentLibMapper.xml
  39. 4
    0
      src/main/resources/mapper/TaCustomWordsMapper.xml
  40. 1
    1
      src/main/resources/mapper/TaDeviceMapper.xml
  41. 2
    2
      src/main/resources/mapper/TaFirstpageContentMapper.xml
  42. 1
    1
      src/main/resources/mapper/TaFirstpageMapper.xml
  43. 2
    2
      src/main/resources/mapper/TaFirstpageNoticeMapper.xml
  44. 1
    1
      src/main/resources/mapper/TaImagesMapper.xml
  45. 1
    1
      src/main/resources/mapper/TaNoticeMapper.xml
  46. 49
    2
      src/main/resources/mapper/TaPersonMapper.xml
  47. 1
    1
      src/main/resources/mapper/TaPersonTypeMapper.xml
  48. 25
    0
      src/main/resources/mapper/TaSnapshotPerson.xml
  49. 1
    1
      src/main/resources/mapper/TaSyncLogMapper.xml
  50. 78
    1
      src/main/resources/mapper/TaVisitingLogMapper.xml
  51. 1
    2
      src/main/resources/mapper/TaVisitingWordsMapper.xml
  52. 23
    1
      target/classes/application.yml
  53. 1
    1
      target/classes/mapper/SysUserMapper.xml
  54. 1
    1
      target/classes/mapper/TaContentLibMapper.xml
  55. 1
    1
      target/classes/mapper/TaDeviceMapper.xml
  56. 2
    2
      target/classes/mapper/TaFirstpageContentMapper.xml
  57. 1
    1
      target/classes/mapper/TaFirstpageMapper.xml
  58. 2
    2
      target/classes/mapper/TaFirstpageNoticeMapper.xml
  59. 1
    1
      target/classes/mapper/TaImagesMapper.xml
  60. 1
    1
      target/classes/mapper/TaNoticeMapper.xml
  61. 49
    2
      target/classes/mapper/TaPersonMapper.xml
  62. 1
    1
      target/classes/mapper/TaPersonTypeMapper.xml
  63. 1
    1
      target/classes/mapper/TaSyncLogMapper.xml
  64. 78
    1
      target/classes/mapper/TaVisitingLogMapper.xml
  65. 1
    2
      target/classes/mapper/TaVisitingWordsMapper.xml
  66. 95
    0
      target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
  67. 11
    1
      target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst

+ 1
- 0
.gitignore Ver fichero

@@ -0,0 +1 @@
1
+target

+ 124
- 0
.idea/uiDesigner.xml Ver fichero

@@ -0,0 +1,124 @@
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>

+ 6
- 0
.idea/vcs.xml Ver fichero

@@ -0,0 +1,6 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<project version="4">
3
+  <component name="VcsDirectoryMappings">
4
+    <mapping directory="$PROJECT_DIR$" vcs="Git" />
5
+  </component>
6
+</project>

+ 483
- 158
.idea/workspace.xml Ver fichero

@@ -1,7 +1,61 @@
1 1
 <?xml version="1.0" encoding="UTF-8"?>
2 2
 <project version="4">
3 3
   <component name="ChangeListManager">
4
-    <list default="true" id="5dd66384-19bf-43a0-b6b4-b05d9b7b9cd4" name="Default" comment="" />
4
+    <list default="true" id="5dd66384-19bf-43a0-b6b4-b05d9b7b9cd4" name="Default" comment="">
5
+      <change afterPath="$PROJECT_DIR$/.idea/vcs.xml" afterDir="false" />
6
+      <change afterPath="$PROJECT_DIR$/src/main/resources/mapper/TaCustomWordsMapper.xml" afterDir="false" />
7
+      <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
8
+      <change beforePath="$PROJECT_DIR$/pom.xml" beforeDir="false" afterPath="$PROJECT_DIR$/pom.xml" afterDir="false" />
9
+      <change beforePath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/common/WebSocketServer.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/common/WebSocketServer.java" afterDir="false" />
10
+      <change beforePath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/controller/CameraController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/controller/CameraController.java" afterDir="false" />
11
+      <change beforePath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/controller/SysUserController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/controller/SysUserController.java" afterDir="false" />
12
+      <change beforePath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/controller/TaDeviceController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/controller/TaDeviceController.java" afterDir="false" />
13
+      <change beforePath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/controller/TaPersonController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/controller/TaPersonController.java" afterDir="false" />
14
+      <change beforePath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/controller/TaVisitingLogController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/controller/TaVisitingLogController.java" afterDir="false" />
15
+      <change beforePath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/interceptor/AccessInterceptor.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/interceptor/AccessInterceptor.java" afterDir="false" />
16
+      <change beforePath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/mapper/TaPersonMapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/mapper/TaPersonMapper.java" afterDir="false" />
17
+      <change beforePath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/mapper/TaVisitingLogMapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/mapper/TaVisitingLogMapper.java" afterDir="false" />
18
+      <change beforePath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/model/SysUser.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/model/SysUser.java" afterDir="false" />
19
+      <change beforePath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/model/TaPerson.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/model/TaPerson.java" afterDir="false" />
20
+      <change beforePath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/model/TaVisitingLog.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/model/TaVisitingLog.java" afterDir="false" />
21
+      <change beforePath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/model/TaVisitingWords.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/model/TaVisitingWords.java" afterDir="false" />
22
+      <change beforePath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/ITaPersonService.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/ITaPersonService.java" afterDir="false" />
23
+      <change beforePath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/ITaVisitingLogService.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/ITaVisitingLogService.java" afterDir="false" />
24
+      <change beforePath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/impl/TaPersonServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/impl/TaPersonServiceImpl.java" afterDir="false" />
25
+      <change beforePath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/impl/TaVisitingLogServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/impl/TaVisitingLogServiceImpl.java" afterDir="false" />
26
+      <change beforePath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/utils/AMap.java" beforeDir="false" />
27
+      <change beforePath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/utils/XFYun.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com.huiju.welcome/utils/XFYun.java" afterDir="false" />
28
+      <change beforePath="$PROJECT_DIR$/src/main/resources/application.yml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/application.yml" afterDir="false" />
29
+      <change beforePath="$PROJECT_DIR$/src/main/resources/mapper/SysUserMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/mapper/SysUserMapper.xml" afterDir="false" />
30
+      <change beforePath="$PROJECT_DIR$/src/main/resources/mapper/TaContentLibMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/mapper/TaContentLibMapper.xml" afterDir="false" />
31
+      <change beforePath="$PROJECT_DIR$/src/main/resources/mapper/TaDeviceMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/mapper/TaDeviceMapper.xml" afterDir="false" />
32
+      <change beforePath="$PROJECT_DIR$/src/main/resources/mapper/TaFirstpageContentMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/mapper/TaFirstpageContentMapper.xml" afterDir="false" />
33
+      <change beforePath="$PROJECT_DIR$/src/main/resources/mapper/TaFirstpageMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/mapper/TaFirstpageMapper.xml" afterDir="false" />
34
+      <change beforePath="$PROJECT_DIR$/src/main/resources/mapper/TaFirstpageNoticeMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/mapper/TaFirstpageNoticeMapper.xml" afterDir="false" />
35
+      <change beforePath="$PROJECT_DIR$/src/main/resources/mapper/TaImagesMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/mapper/TaImagesMapper.xml" afterDir="false" />
36
+      <change beforePath="$PROJECT_DIR$/src/main/resources/mapper/TaNoticeMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/mapper/TaNoticeMapper.xml" afterDir="false" />
37
+      <change beforePath="$PROJECT_DIR$/src/main/resources/mapper/TaPersonMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/mapper/TaPersonMapper.xml" afterDir="false" />
38
+      <change beforePath="$PROJECT_DIR$/src/main/resources/mapper/TaPersonTypeMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/mapper/TaPersonTypeMapper.xml" afterDir="false" />
39
+      <change beforePath="$PROJECT_DIR$/src/main/resources/mapper/TaSyncLogMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/mapper/TaSyncLogMapper.xml" afterDir="false" />
40
+      <change beforePath="$PROJECT_DIR$/src/main/resources/mapper/TaVisitingLogMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/mapper/TaVisitingLogMapper.xml" afterDir="false" />
41
+      <change beforePath="$PROJECT_DIR$/src/main/resources/mapper/TaVisitingWordsMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/mapper/TaVisitingWordsMapper.xml" afterDir="false" />
42
+      <change beforePath="$PROJECT_DIR$/target/classes/application.yml" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/application.yml" afterDir="false" />
43
+      <change beforePath="$PROJECT_DIR$/target/classes/mapper/SysUserMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/mapper/SysUserMapper.xml" afterDir="false" />
44
+      <change beforePath="$PROJECT_DIR$/target/classes/mapper/TaContentLibMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/mapper/TaContentLibMapper.xml" afterDir="false" />
45
+      <change beforePath="$PROJECT_DIR$/target/classes/mapper/TaDeviceMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/mapper/TaDeviceMapper.xml" afterDir="false" />
46
+      <change beforePath="$PROJECT_DIR$/target/classes/mapper/TaFirstpageContentMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/mapper/TaFirstpageContentMapper.xml" afterDir="false" />
47
+      <change beforePath="$PROJECT_DIR$/target/classes/mapper/TaFirstpageMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/mapper/TaFirstpageMapper.xml" afterDir="false" />
48
+      <change beforePath="$PROJECT_DIR$/target/classes/mapper/TaFirstpageNoticeMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/mapper/TaFirstpageNoticeMapper.xml" afterDir="false" />
49
+      <change beforePath="$PROJECT_DIR$/target/classes/mapper/TaImagesMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/mapper/TaImagesMapper.xml" afterDir="false" />
50
+      <change beforePath="$PROJECT_DIR$/target/classes/mapper/TaNoticeMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/mapper/TaNoticeMapper.xml" afterDir="false" />
51
+      <change beforePath="$PROJECT_DIR$/target/classes/mapper/TaPersonMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/mapper/TaPersonMapper.xml" afterDir="false" />
52
+      <change beforePath="$PROJECT_DIR$/target/classes/mapper/TaPersonTypeMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/mapper/TaPersonTypeMapper.xml" afterDir="false" />
53
+      <change beforePath="$PROJECT_DIR$/target/classes/mapper/TaSyncLogMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/mapper/TaSyncLogMapper.xml" afterDir="false" />
54
+      <change beforePath="$PROJECT_DIR$/target/classes/mapper/TaVisitingLogMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/mapper/TaVisitingLogMapper.xml" afterDir="false" />
55
+      <change beforePath="$PROJECT_DIR$/target/classes/mapper/TaVisitingWordsMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/mapper/TaVisitingWordsMapper.xml" afterDir="false" />
56
+      <change beforePath="$PROJECT_DIR$/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst" beforeDir="false" afterPath="$PROJECT_DIR$/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst" afterDir="false" />
57
+      <change beforePath="$PROJECT_DIR$/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst" beforeDir="false" afterPath="$PROJECT_DIR$/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst" afterDir="false" />
58
+    </list>
5 59
     <ignored path="$PROJECT_DIR$/target/" />
6 60
     <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
7 61
     <option name="TRACKING_ENABLED" value="true" />
@@ -11,12 +65,12 @@
11 65
     <option name="LAST_RESOLUTION" value="IGNORE" />
12 66
   </component>
13 67
   <component name="FileEditorManager">
14
-    <leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
15
-      <file leaf-file-name="SAWeather.java" pinned="false" current-in-tab="false">
16
-        <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/utils/SAWeather.java">
68
+    <leaf>
69
+      <file leaf-file-name="XFYun.java" pinned="false" current-in-tab="false">
70
+        <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/utils/XFYun.java">
17 71
           <provider selected="true" editor-type-id="text-editor">
18
-            <state relative-caret-position="-230">
19
-              <caret line="1" lean-forward="true" selection-start-line="1" selection-end-line="1" />
72
+            <state relative-caret-position="284">
73
+              <caret line="52" selection-start-line="52" selection-end-line="52" />
20 74
               <folding>
21 75
                 <element signature="imports" expanded="true" />
22 76
               </folding>
@@ -24,28 +78,61 @@
24 78
           </provider>
25 79
         </entry>
26 80
       </file>
27
-      <file leaf-file-name="application.yml" pinned="false" current-in-tab="true">
28
-        <entry file="file://$PROJECT_DIR$/src/main/resources/application.yml">
81
+      <file leaf-file-name="CameraController.java" pinned="false" current-in-tab="false">
82
+        <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/controller/CameraController.java">
29 83
           <provider selected="true" editor-type-id="text-editor">
30
-            <state relative-caret-position="646">
31
-              <caret line="34" column="16" lean-forward="true" selection-start-line="34" selection-start-column="16" selection-end-line="34" selection-end-column="16" />
84
+            <state relative-caret-position="159">
85
+              <caret line="199" selection-start-line="199" selection-end-line="199" />
86
+              <folding>
87
+                <element signature="imports" expanded="true" />
88
+              </folding>
89
+            </state>
90
+          </provider>
91
+        </entry>
92
+      </file>
93
+      <file leaf-file-name="pom.xml" pinned="false" current-in-tab="true">
94
+        <entry file="file://$PROJECT_DIR$/pom.xml">
95
+          <provider selected="true" editor-type-id="text-editor">
96
+            <state relative-caret-position="380">
97
+              <caret line="20" column="18" selection-start-line="20" selection-start-column="18" selection-end-line="20" selection-end-column="18" />
32 98
             </state>
33 99
           </provider>
34 100
         </entry>
35 101
       </file>
36 102
     </leaf>
37 103
   </component>
104
+  <component name="FileTemplateManagerImpl">
105
+    <option name="RECENT_TEMPLATES">
106
+      <list>
107
+        <option value="Interface" />
108
+        <option value="Class" />
109
+      </list>
110
+    </option>
111
+  </component>
38 112
   <component name="FindInProjectRecents">
39 113
     <findStrings>
40 114
       <find>com.welcome.huiju</find>
115
+      <find>taPersonService</find>
116
+      <find>getRealPersonList</find>
117
+      <find>HttpStatus</find>
118
+      <find>subDir</find>
119
+      <find>huiju.files</find>
120
+      <find>huijuFiles</find>
121
+      <find>getMultipartFile</find>
122
+      <find>voice</find>
41 123
     </findStrings>
42 124
     <replaceStrings>
43 125
       <replace>com.huiju.welcome</replace>
44 126
     </replaceStrings>
45 127
     <dirStrings>
128
+      <dir>E:\JavaProjects\welcome3.0\service\src\main\resources\mapper</dir>
46 129
       <dir>E:\JavaProjects\welcome3.0\service\src\main\java</dir>
130
+      <dir>E:\JavaProjects\welcome3.0\service\src\main\java\com.huiju.welcome</dir>
47 131
     </dirStrings>
48 132
   </component>
133
+  <component name="Git.Settings">
134
+    <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
135
+  </component>
49 136
   <component name="IdeDocumentHistory">
50 137
     <option name="CHANGED_PATHS">
51 138
       <list>
@@ -54,11 +141,47 @@
54 141
         <option value="$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/ITaFirstpageService.java" />
55 142
         <option value="$PROJECT_DIR$/src/main/java/com.huiju.welcome/config/AccessConfig.java" />
56 143
         <option value="$PROJECT_DIR$/src/main/java/com.huiju.welcome/controller/AudioController.java" />
57
-        <option value="$PROJECT_DIR$/src/main/java/com.huiju.welcome/controller/CameraController.java" />
58
-        <option value="$PROJECT_DIR$/src/main/java/com.huiju.welcome/utils/XFYun.java" />
59
-        <option value="$PROJECT_DIR$/pom.xml" />
60 144
         <option value="$PROJECT_DIR$/src/main/java/com.huiju.welcome/utils/SAWeather.java" />
145
+        <option value="$PROJECT_DIR$/.gitignore" />
146
+        <option value="$PROJECT_DIR$/src/main/resources/mapper/SysUserMapper.xml" />
147
+        <option value="$PROJECT_DIR$/src/main/java/com.huiju.welcome/model/TaVisitingWords.java" />
148
+        <option value="$PROJECT_DIR$/src/main/java/com.huiju.welcome/model/SysUser.java" />
149
+        <option value="$PROJECT_DIR$/src/main/java/com.huiju.welcome/controller/SysUserController.java" />
150
+        <option value="$PROJECT_DIR$/src/main/resources/mapper/TaVisitingWordsMapper.xml" />
151
+        <option value="$PROJECT_DIR$/src/main/java/com.huiju.welcome/model/TaPerson.java" />
152
+        <option value="$PROJECT_DIR$/src/main/java/com.huiju.welcome/model/TaVisitingLog.java" />
153
+        <option value="$PROJECT_DIR$/src/main/java/com.huiju.welcome/common/WebSocketServer.java" />
154
+        <option value="$PROJECT_DIR$/src/main/java/com.huiju.welcome/mapper/TaSnapshotPerson.java" />
155
+        <option value="$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/ITaSnapshotPerson.java" />
156
+        <option value="$PROJECT_DIR$/src/main/resources/mapper/TaVisitingLogMapper.xml" />
157
+        <option value="$PROJECT_DIR$/src/main/java/com.huiju.welcome/mapper/TaVisitingLogMapper.java" />
158
+        <option value="$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/ITaVisitingLogService.java" />
159
+        <option value="$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/impl/TaVisitingLogServiceImpl.java" />
160
+        <option value="$PROJECT_DIR$/src/main/java/com.huiju.welcome/mapper/TaPersonMapper.java" />
161
+        <option value="$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/ITaPersonService.java" />
162
+        <option value="$PROJECT_DIR$/src/main/resources/mapper/TaPersonMapper.xml" />
163
+        <option value="$PROJECT_DIR$/src/main/java/com.huiju.welcome/controller/TaVisitingLogController.java" />
164
+        <option value="$PROJECT_DIR$/src/main/java/com.huiju.welcome/utils/XFYun.java" />
165
+        <option value="$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/ITaSnapshotPersonService.java" />
166
+        <option value="$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/impl/TaSnapshotPersonImpl.java" />
167
+        <option value="$PROJECT_DIR$/src/main/java/com.huiju.welcome/mapper/TaSnapshotPersonMapper.java" />
168
+        <option value="$PROJECT_DIR$/src/main/java/com.huiju.welcome/controller/TaSnapshotPersonController.java" />
169
+        <option value="$PROJECT_DIR$/src/main/java/com.huiju.welcome/model/TaSnapshotPerson.java" />
170
+        <option value="$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/ICameraService.java" />
171
+        <option value="$PROJECT_DIR$/src/main/java/com.huiju.welcome/controller/TaDeviceController.java" />
172
+        <option value="$PROJECT_DIR$/src/main/java/com.huiju.welcome/controller/TaPersonController.java" />
173
+        <option value="$PROJECT_DIR$/src/main/java/com.huiju.welcome/interceptor/AccessInterceptor.java" />
174
+        <option value="$PROJECT_DIR$/src/main/resources/mapper/TaSnapshotPerson.xml" />
175
+        <option value="$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/impl/TaPersonServiceImpl.java" />
61 176
         <option value="$PROJECT_DIR$/src/main/resources/application.yml" />
177
+        <option value="$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/impl/CameraServiceImpl.java" />
178
+        <option value="$PROJECT_DIR$/src/main/resources/mapper/TaCustomWordsMapper.xml" />
179
+        <option value="$PROJECT_DIR$/src/main/java/com.huiju.welcome/mapper/TaCustomWordsMapper.java" />
180
+        <option value="$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/ITaCustomWordsService.java" />
181
+        <option value="$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/impl/TaCustomWordsServiceImpl.java" />
182
+        <option value="$PROJECT_DIR$/src/main/java/com.huiju.welcome/model/TaCustomWords.java" />
183
+        <option value="$PROJECT_DIR$/src/main/java/com.huiju.welcome/controller/CameraController.java" />
184
+        <option value="$PROJECT_DIR$/pom.xml" />
62 185
       </list>
63 186
     </option>
64 187
   </component>
@@ -106,16 +229,17 @@
106 229
     <packageJsonPaths />
107 230
   </component>
108 231
   <component name="ProjectFrameBounds" extendedState="6">
109
-    <option name="x" value="-16" />
110
-    <option name="width" value="1100" />
111
-    <option name="height" value="1940" />
232
+    <option name="x" value="-8" />
233
+    <option name="y" value="-8" />
234
+    <option name="width" value="1296" />
235
+    <option name="height" value="735" />
112 236
   </component>
237
+  <component name="ProjectLevelVcsManager" settingsEditedManually="true" />
113 238
   <component name="ProjectView">
114 239
     <navigator proportions="" version="1">
115 240
       <foldersAlwaysOnTop value="true" />
116 241
     </navigator>
117 242
     <panes>
118
-      <pane id="PackagesPane" />
119 243
       <pane id="ProjectPane">
120 244
         <subPane>
121 245
           <expand>
@@ -141,68 +265,6 @@
141 265
               <item name="main" type="462c0819:PsiDirectoryNode" />
142 266
               <item name="java" type="462c0819:PsiDirectoryNode" />
143 267
             </path>
144
-            <path>
145
-              <item name="service" type="b2602c69:ProjectViewProjectNode" />
146
-              <item name="service" type="462c0819:PsiDirectoryNode" />
147
-              <item name="src" type="462c0819:PsiDirectoryNode" />
148
-              <item name="main" type="462c0819:PsiDirectoryNode" />
149
-              <item name="java" type="462c0819:PsiDirectoryNode" />
150
-              <item name="com.huiju.welcome" type="462c0819:PsiDirectoryNode" />
151
-            </path>
152
-            <path>
153
-              <item name="service" type="b2602c69:ProjectViewProjectNode" />
154
-              <item name="service" type="462c0819:PsiDirectoryNode" />
155
-              <item name="src" type="462c0819:PsiDirectoryNode" />
156
-              <item name="main" type="462c0819:PsiDirectoryNode" />
157
-              <item name="java" type="462c0819:PsiDirectoryNode" />
158
-              <item name="com.huiju.welcome" type="462c0819:PsiDirectoryNode" />
159
-              <item name="common" type="462c0819:PsiDirectoryNode" />
160
-            </path>
161
-            <path>
162
-              <item name="service" type="b2602c69:ProjectViewProjectNode" />
163
-              <item name="service" type="462c0819:PsiDirectoryNode" />
164
-              <item name="src" type="462c0819:PsiDirectoryNode" />
165
-              <item name="main" type="462c0819:PsiDirectoryNode" />
166
-              <item name="java" type="462c0819:PsiDirectoryNode" />
167
-              <item name="com.huiju.welcome" type="462c0819:PsiDirectoryNode" />
168
-              <item name="config" type="462c0819:PsiDirectoryNode" />
169
-            </path>
170
-            <path>
171
-              <item name="service" type="b2602c69:ProjectViewProjectNode" />
172
-              <item name="service" type="462c0819:PsiDirectoryNode" />
173
-              <item name="src" type="462c0819:PsiDirectoryNode" />
174
-              <item name="main" type="462c0819:PsiDirectoryNode" />
175
-              <item name="java" type="462c0819:PsiDirectoryNode" />
176
-              <item name="com.huiju.welcome" type="462c0819:PsiDirectoryNode" />
177
-              <item name="controller" type="462c0819:PsiDirectoryNode" />
178
-            </path>
179
-            <path>
180
-              <item name="service" type="b2602c69:ProjectViewProjectNode" />
181
-              <item name="service" type="462c0819:PsiDirectoryNode" />
182
-              <item name="src" type="462c0819:PsiDirectoryNode" />
183
-              <item name="main" type="462c0819:PsiDirectoryNode" />
184
-              <item name="java" type="462c0819:PsiDirectoryNode" />
185
-              <item name="com.huiju.welcome" type="462c0819:PsiDirectoryNode" />
186
-              <item name="interceptor" type="462c0819:PsiDirectoryNode" />
187
-            </path>
188
-            <path>
189
-              <item name="service" type="b2602c69:ProjectViewProjectNode" />
190
-              <item name="service" type="462c0819:PsiDirectoryNode" />
191
-              <item name="src" type="462c0819:PsiDirectoryNode" />
192
-              <item name="main" type="462c0819:PsiDirectoryNode" />
193
-              <item name="java" type="462c0819:PsiDirectoryNode" />
194
-              <item name="com.huiju.welcome" type="462c0819:PsiDirectoryNode" />
195
-              <item name="service" type="462c0819:PsiDirectoryNode" />
196
-            </path>
197
-            <path>
198
-              <item name="service" type="b2602c69:ProjectViewProjectNode" />
199
-              <item name="service" type="462c0819:PsiDirectoryNode" />
200
-              <item name="src" type="462c0819:PsiDirectoryNode" />
201
-              <item name="main" type="462c0819:PsiDirectoryNode" />
202
-              <item name="java" type="462c0819:PsiDirectoryNode" />
203
-              <item name="com.huiju.welcome" type="462c0819:PsiDirectoryNode" />
204
-              <item name="utils" type="462c0819:PsiDirectoryNode" />
205
-            </path>
206 268
             <path>
207 269
               <item name="service" type="b2602c69:ProjectViewProjectNode" />
208 270
               <item name="service" type="462c0819:PsiDirectoryNode" />
@@ -214,14 +276,19 @@
214 276
           <select />
215 277
         </subPane>
216 278
       </pane>
217
-      <pane id="AndroidView" />
218 279
       <pane id="Scope" />
280
+      <pane id="PackagesPane" />
281
+      <pane id="AndroidView" />
219 282
     </panes>
220 283
   </component>
221 284
   <component name="PropertiesComponent">
285
+    <property name="RequestMappingsPanelOrder0" value="0" />
286
+    <property name="RequestMappingsPanelOrder1" value="1" />
287
+    <property name="RequestMappingsPanelWidth0" value="75" />
288
+    <property name="RequestMappingsPanelWidth1" value="75" />
222 289
     <property name="WebServerToolWindowFactoryState" value="false" />
223 290
     <property name="aspect.path.notification.shown" value="true" />
224
-    <property name="last_opened_file_path" value="$PROJECT_DIR$" />
291
+    <property name="last_opened_file_path" value="$PROJECT_DIR$/../hardware" />
225 292
     <property name="nodejs_interpreter_path.stuck_in_default_project" value="undefined stuck path" />
226 293
     <property name="nodejs_npm_path_reset_for_default_project" value="true" />
227 294
     <property name="project.structure.last.edited" value="Project" />
@@ -230,11 +297,22 @@
230 297
     <property name="settings.editor.selected.configurable" value="reference.settings.ide.settings.notifications" />
231 298
   </component>
232 299
   <component name="RecentsManager">
300
+    <key name="CreateClassDialog.RecentsKey">
301
+      <recent name="com.huiju.welcome.service.impl" />
302
+    </key>
233 303
     <key name="CopyFile.RECENT_KEYS">
304
+      <recent name="E:\JavaProjects\welcome3.0\service\src\main\resources\mapper" />
234 305
       <recent name="E:\JavaProjects\welcome3.0\service\src\main\resources" />
235 306
       <recent name="E:\JavaProjects\welcome3.0\service\src\main\java\com.huiju.welcome" />
236 307
     </key>
308
+    <key name="CopyClassDialog.RECENTS_KEY">
309
+      <recent name="com.huiju.welcome.service.impl" />
310
+      <recent name="com.huiju.welcome.service" />
311
+      <recent name="com.huiju.welcome.model" />
312
+      <recent name="com.huiju.welcome.mapper" />
313
+    </key>
237 314
     <key name="MoveFile.RECENT_KEYS">
315
+      <recent name="E:\JavaProjects\welcome3.0\service" />
238 316
       <recent name="E:\JavaProjects\welcome3.0\service\src\main\java\com.huiju.welcome" />
239 317
     </key>
240 318
   </component>
@@ -308,20 +386,27 @@
308 386
       <option name="presentableId" value="Default" />
309 387
       <updated>1554806511177</updated>
310 388
       <workItem from="1554806512544" duration="3856000" />
311
-      <workItem from="1554858729557" duration="1168000" />
389
+      <workItem from="1554858729557" duration="5296000" />
390
+      <workItem from="1555050395776" duration="488000" />
391
+      <workItem from="1555058275009" duration="599000" />
392
+      <workItem from="1555290043845" duration="87614000" />
393
+      <workItem from="1555913006426" duration="9826000" />
394
+      <workItem from="1556004383365" duration="11766000" />
395
+      <workItem from="1556091754639" duration="4295000" />
396
+      <workItem from="1557122821064" duration="702000" />
397
+      <workItem from="1557283570042" duration="5354000" />
312 398
     </task>
313 399
     <servers />
314 400
   </component>
315 401
   <component name="TimeTrackingManager">
316
-    <option name="totallyTimeSpent" value="5024000" />
402
+    <option name="totallyTimeSpent" value="129796000" />
317 403
   </component>
318 404
   <component name="ToolWindowManager">
319
-    <frame x="-8" y="-8" width="1096" height="1855" extended-state="6" />
320
-    <editor active="true" />
405
+    <frame x="-8" y="-8" width="1936" height="1015" extended-state="6" />
321 406
     <layout>
322 407
       <window_info anchor="right" id="Palette" order="3" />
323
-      <window_info anchor="bottom" id="Event Log" order="7" sideWeight="0.50096524" side_tool="true" visible="true" weight="0.32964474" />
324
-      <window_info anchor="right" id="Maven Projects" order="3" weight="0.3291506" />
408
+      <window_info anchor="bottom" id="Event Log" order="7" sideWeight="0.50096524" side_tool="true" weight="0.39953408" />
409
+      <window_info anchor="right" id="Maven Projects" order="3" visible="true" weight="0.18230277" />
325 410
       <window_info anchor="bottom" id="Database Changes" order="7" show_stripe_button="false" />
326 411
       <window_info id="Capture Tool" order="2" />
327 412
       <window_info id="Designer" order="2" />
@@ -329,19 +414,21 @@
329 414
       <window_info id="Structure" order="1" side_tool="true" weight="0.25" />
330 415
       <window_info anchor="right" id="Ant Build" order="1" weight="0.25" />
331 416
       <window_info id="UI Designer" order="2" />
332
-      <window_info anchor="bottom" id="Debug" order="3" weight="0.4" />
417
+      <window_info anchor="bottom" id="Debug" order="3" sideWeight="0.49903476" weight="0.25655645" />
333 418
       <window_info anchor="bottom" id="TODO" order="6" />
419
+      <window_info anchor="bottom" id="Messages" order="8" weight="0.3295325" />
334 420
       <window_info anchor="right" id="Palette&#9;" order="3" />
335 421
       <window_info id="Image Layers" order="2" />
336 422
       <window_info anchor="bottom" id="Java Enterprise" order="7" />
337 423
       <window_info anchor="right" id="Capture Analysis" order="3" />
338
-      <window_info anchor="bottom" id="Run" order="2" sideWeight="0.49903476" weight="0.32964474" />
339
-      <window_info anchor="bottom" id="Version Control" order="7" show_stripe_button="false" />
424
+      <window_info anchor="bottom" id="Version Control" order="7" />
425
+      <window_info anchor="bottom" id="Run" order="2" sideWeight="0.49903476" weight="0.45381984" />
340 426
       <window_info anchor="bottom" id="Spring" order="7" />
341
-      <window_info anchor="bottom" id="Terminal" order="7" />
342
-      <window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.25482625" />
343
-      <window_info anchor="right" id="Bean Validation" order="3" />
427
+      <window_info active="true" anchor="bottom" id="Terminal" order="7" visible="true" weight="0.3295325" />
428
+      <window_info content_ui="combo" id="Project" order="0" visible="true" weight="0.19029851" />
429
+      <window_info anchor="right" id="Bean Validation" order="3" weight="0.32928804" />
344 430
       <window_info id="Web" order="2" side_tool="true" />
431
+      <window_info anchor="bottom" id="Find" order="1" sideWeight="0.49903476" weight="0.32964474" />
345 432
       <window_info anchor="right" id="Theme Preview" order="3" />
346 433
       <window_info id="Favorites" order="2" side_tool="true" />
347 434
       <window_info anchor="bottom" id="Inspection" order="5" weight="0.4" />
@@ -349,7 +436,6 @@
349 436
       <window_info anchor="bottom" id="Cvs" order="4" weight="0.25" />
350 437
       <window_info anchor="bottom" id="Message" order="0" />
351 438
       <window_info anchor="right" content_ui="combo" id="Hierarchy" order="2" weight="0.25" />
352
-      <window_info anchor="bottom" id="Find" order="1" sideWeight="0.49903476" weight="0.32964474" />
353 439
     </layout>
354 440
   </component>
355 441
   <component name="TypeScriptGeneratedFilesManager">
@@ -358,150 +444,382 @@
358 444
   <component name="VcsContentAnnotationSettings">
359 445
     <option name="myLimit" value="2678400000" />
360 446
   </component>
447
+  <component name="XDebuggerManager">
448
+    <breakpoint-manager>
449
+      <option name="time" value="7" />
450
+    </breakpoint-manager>
451
+  </component>
361 452
   <component name="editorHistoryManager">
362
-    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/utils/SAWeather.java">
453
+    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/controller/TaFirstpageContentController.java">
363 454
       <provider selected="true" editor-type-id="text-editor">
364
-        <state relative-caret-position="513">
365
-          <caret line="27" column="31" lean-forward="true" selection-start-line="27" selection-start-column="31" selection-end-line="27" selection-end-column="31" />
366
-          <folding>
367
-            <element signature="imports" expanded="true" />
368
-          </folding>
455
+        <state relative-caret-position="-523">
456
+          <caret line="30" column="13" selection-start-line="30" selection-start-column="13" selection-end-line="30" selection-end-column="13" />
369 457
         </state>
370 458
       </provider>
371 459
     </entry>
372
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/huiju/welcome/mainbiz/MainbizApplication.java" />
373
-    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/MainbizApplication.java">
460
+    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/controller/TaFirstpageController.java">
374 461
       <provider selected="true" editor-type-id="text-editor">
375
-        <state relative-caret-position="190">
376
-          <caret line="13" selection-start-line="13" selection-end-line="13" />
462
+        <state relative-caret-position="-3620">
463
+          <caret line="38" column="13" selection-start-line="38" selection-start-column="13" selection-end-line="38" selection-end-column="13" />
377 464
         </state>
378 465
       </provider>
379 466
     </entry>
380
-    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/impl/TaPersonTypeServiceImpl.java">
381
-      <provider selected="true" editor-type-id="text-editor" />
467
+    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/controller/TaNoticeController.java">
468
+      <provider selected="true" editor-type-id="text-editor">
469
+        <state relative-caret-position="-789">
470
+          <caret line="53" lean-forward="true" selection-start-line="53" selection-end-line="53" />
471
+        </state>
472
+      </provider>
382 473
     </entry>
383
-    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/controller/TaPersonController.java">
384
-      <provider selected="true" editor-type-id="text-editor" />
474
+    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/controller/TaPersonTypeController.java">
475
+      <provider selected="true" editor-type-id="text-editor">
476
+        <state relative-caret-position="-1606">
477
+          <caret line="29" column="13" selection-start-line="29" selection-start-column="13" selection-end-line="29" selection-end-column="13" />
478
+        </state>
479
+      </provider>
480
+    </entry>
481
+    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/controller/TaSyncLogController.java">
482
+      <provider selected="true" editor-type-id="text-editor">
483
+        <state relative-caret-position="285">
484
+          <caret line="17" column="13" selection-start-line="17" selection-start-column="13" selection-end-line="17" selection-end-column="13" />
485
+        </state>
486
+      </provider>
385 487
     </entry>
386
-    <entry file="file://$PROJECT_DIR$/src/main/resources/application.properties" />
387
-    <entry file="file://$PROJECT_DIR$/src/main/resources/mapper/SysUserMapper.xml">
388
-      <provider selected="true" editor-type-id="text-editor" />
488
+    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/controller/TaVisitingLogController.java">
489
+      <provider selected="true" editor-type-id="text-editor">
490
+        <state relative-caret-position="-86">
491
+          <caret line="92" lean-forward="true" selection-start-line="92" selection-end-line="92" />
492
+        </state>
493
+      </provider>
389 494
     </entry>
390
-    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/model/TaVisitingWords.java">
391
-      <provider selected="true" editor-type-id="text-editor" />
495
+    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/controller/TaVisitingWordsController.java">
496
+      <provider selected="true" editor-type-id="text-editor">
497
+        <state relative-caret-position="408">
498
+          <caret line="56" lean-forward="true" selection-start-line="56" selection-end-line="56" />
499
+        </state>
500
+      </provider>
392 501
     </entry>
393
-    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/model/TaPerson.java">
394
-      <provider selected="true" editor-type-id="text-editor" />
502
+    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/controller/TaFirstpageNoticeController.java">
503
+      <provider selected="true" editor-type-id="text-editor">
504
+        <state relative-caret-position="-466">
505
+          <caret line="29" column="13" selection-start-line="29" selection-start-column="13" selection-end-line="29" selection-end-column="13" />
506
+        </state>
507
+      </provider>
395 508
     </entry>
396
-    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/ITaFirstpageService.java">
509
+    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/mapper/SysUserMapper.java">
397 510
       <provider selected="true" editor-type-id="text-editor">
398
-        <state relative-caret-position="152">
399
-          <caret line="8" column="6" lean-forward="true" selection-start-line="8" selection-start-column="6" selection-end-line="8" selection-end-column="6" />
511
+        <state relative-caret-position="247">
512
+          <caret line="15" column="17" selection-start-line="15" selection-start-column="17" selection-end-line="15" selection-end-column="17" />
400 513
         </state>
401 514
       </provider>
402 515
     </entry>
403
-    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/model/SysUser.java">
516
+    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/mapper/TaSnapshotPersonMapper.java">
404 517
       <provider selected="true" editor-type-id="text-editor">
405
-        <state relative-caret-position="76">
406
-          <caret line="4" column="13" selection-start-line="4" selection-start-column="7" selection-end-line="4" selection-end-column="13" />
518
+        <state relative-caret-position="374">
519
+          <caret line="22" lean-forward="true" selection-start-line="22" selection-end-line="22" />
407 520
         </state>
408 521
       </provider>
409 522
     </entry>
410
-    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/common/WebSocketServer.java">
523
+    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/impl/TaSnapshotPersonImpl.java">
411 524
       <provider selected="true" editor-type-id="text-editor">
412
-        <state relative-caret-position="114">
413
-          <caret line="6" column="12" selection-start-line="6" selection-start-column="7" selection-end-line="6" selection-end-column="12" />
525
+        <state relative-caret-position="294">
526
+          <caret line="26" column="46" lean-forward="true" selection-start-line="26" selection-start-column="46" selection-end-line="26" selection-end-column="46" />
414 527
         </state>
415 528
       </provider>
416 529
     </entry>
417
-    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/interceptor/AccessInterceptor.java">
530
+    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/ITaSnapshotPersonService.java">
418 531
       <provider selected="true" editor-type-id="text-editor">
419
-        <state relative-caret-position="57">
420
-          <caret line="3" column="22" selection-start-line="3" selection-start-column="18" selection-end-line="3" selection-end-column="22" />
532
+        <state relative-caret-position="323">
533
+          <caret line="17" column="79" selection-start-line="17" selection-start-column="79" selection-end-line="17" selection-end-column="79" />
421 534
         </state>
422 535
       </provider>
423 536
     </entry>
424
-    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/controller/CameraController.java">
537
+    <entry file="jar://D:/REPO/org/apache/httpcomponents/httpcore/4.4.11/httpcore-4.4.11.jar!/org/apache/http/HttpStatus.class">
425 538
       <provider selected="true" editor-type-id="text-editor">
426 539
         <state relative-caret-position="76">
427
-          <caret line="4" column="24" selection-start-line="4" selection-start-column="7" selection-end-line="4" selection-end-column="24" />
540
+          <caret line="7" column="17" selection-start-line="7" selection-start-column="17" selection-end-line="7" selection-end-column="17" />
541
+        </state>
542
+      </provider>
543
+    </entry>
544
+    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/controller/SysParamController.java">
545
+      <provider selected="true" editor-type-id="text-editor">
546
+        <state relative-caret-position="-171">
547
+          <caret line="58" column="23" selection-start-line="58" selection-start-column="11" selection-end-line="58" selection-end-column="23" />
548
+        </state>
549
+      </provider>
550
+    </entry>
551
+    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/utils/Encrypt.java">
552
+      <provider selected="true" editor-type-id="text-editor">
553
+        <state relative-caret-position="161">
554
+          <caret line="31" column="25" selection-start-line="31" selection-start-column="25" selection-end-line="31" selection-end-column="25" />
555
+        </state>
556
+      </provider>
557
+    </entry>
558
+    <entry file="jar://D:/Application/jdk1.8.0_161/src.zip!/java/io/Serializable.java">
559
+      <provider selected="true" editor-type-id="text-editor">
560
+        <state relative-caret-position="2755">
561
+          <caret line="168" column="17" selection-start-line="168" selection-start-column="17" selection-end-line="168" selection-end-column="17" />
562
+        </state>
563
+      </provider>
564
+    </entry>
565
+    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/controller/AudioController.java">
566
+      <provider selected="true" editor-type-id="text-editor">
567
+        <state relative-caret-position="532">
568
+          <caret line="40" lean-forward="true" selection-start-line="40" selection-end-line="40" />
569
+        </state>
570
+      </provider>
571
+    </entry>
572
+    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/common/base/ResponseBean.java">
573
+      <provider selected="true" editor-type-id="text-editor">
574
+        <state relative-caret-position="893">
575
+          <caret line="57" lean-forward="true" selection-start-line="57" selection-end-line="57" />
576
+        </state>
577
+      </provider>
578
+    </entry>
579
+    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/common/base/BaseController.java">
580
+      <provider selected="true" editor-type-id="text-editor">
581
+        <state relative-caret-position="133">
582
+          <caret line="7" column="1" lean-forward="true" selection-start-line="7" selection-start-column="1" selection-end-line="7" selection-end-column="1" />
583
+        </state>
584
+      </provider>
585
+    </entry>
586
+    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/ITaPersonService.java">
587
+      <provider selected="true" editor-type-id="text-editor">
588
+        <state relative-caret-position="266">
589
+          <caret line="21" column="11" selection-start-line="21" selection-start-column="11" selection-end-line="21" selection-end-column="11" />
590
+        </state>
591
+      </provider>
592
+    </entry>
593
+    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/ISysUserService.java">
594
+      <provider selected="true" editor-type-id="text-editor">
595
+        <state relative-caret-position="304">
596
+          <caret line="17" lean-forward="true" selection-start-line="17" selection-end-line="17" />
597
+        </state>
598
+      </provider>
599
+    </entry>
600
+    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/impl/SysParamServiceImpl.java">
601
+      <provider selected="true" editor-type-id="text-editor">
602
+        <state relative-caret-position="228">
603
+          <caret line="16" selection-start-line="16" selection-end-line="16" selection-end-column="8" />
604
+        </state>
605
+      </provider>
606
+    </entry>
607
+    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/ISysParamService.java">
608
+      <provider selected="true" editor-type-id="text-editor">
609
+        <state relative-caret-position="266">
610
+          <caret line="15" column="1" selection-start-line="15" selection-start-column="1" selection-end-line="15" selection-end-column="1" />
611
+        </state>
612
+      </provider>
613
+    </entry>
614
+    <entry file="file://$PROJECT_DIR$/src/test/java/com/huiju/welcome/mainbiz/MainbizApplicationTests.java">
615
+      <provider selected="true" editor-type-id="text-editor">
616
+        <state relative-caret-position="247">
617
+          <caret line="16" lean-forward="true" selection-start-line="16" selection-end-line="16" />
428 618
         </state>
429 619
       </provider>
430 620
     </entry>
431 621
     <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/config/WebSocketConfig.java">
432 622
       <provider selected="true" editor-type-id="text-editor">
433
-        <state relative-caret-position="171">
434
-          <caret line="11" column="13" selection-start-line="11" selection-start-column="13" selection-end-line="11" selection-end-column="13" />
623
+        <state relative-caret-position="285">
624
+          <caret line="19" selection-start-line="19" selection-end-line="19" />
435 625
         </state>
436 626
       </provider>
437 627
     </entry>
438
-    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/config/MybatisPlusConfig.java">
628
+    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/interceptor/AccessInterceptor.java">
439 629
       <provider selected="true" editor-type-id="text-editor">
440
-        <state relative-caret-position="171">
441
-          <caret line="11" column="13" selection-start-line="11" selection-start-column="13" selection-end-line="11" selection-end-column="13" />
630
+        <state relative-caret-position="114">
631
+          <caret line="16" column="11" selection-start-line="16" selection-start-column="11" selection-end-line="16" selection-end-column="11" />
632
+        </state>
633
+      </provider>
634
+    </entry>
635
+    <entry file="file://$PROJECT_DIR$/src/main/resources/mapper/TaSnapshotPerson.xml">
636
+      <provider selected="true" editor-type-id="text-editor">
637
+        <state relative-caret-position="295">
638
+          <caret line="21" column="16" lean-forward="true" selection-start-line="21" selection-start-column="16" selection-end-line="21" selection-end-column="16" />
442 639
         </state>
443 640
       </provider>
444 641
     </entry>
445
-    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/controller/FaceController.java" />
446
-    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/config/AccessConfig.java">
642
+    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/controller/TaSnapshotPersonController.java">
643
+      <provider selected="true" editor-type-id="text-editor">
644
+        <state relative-caret-position="342">
645
+          <caret line="54" lean-forward="true" selection-start-line="54" selection-end-line="54" />
646
+        </state>
647
+      </provider>
648
+    </entry>
649
+    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/impl/TaPersonServiceImpl.java">
650
+      <provider selected="true" editor-type-id="text-editor">
651
+        <state relative-caret-position="1064">
652
+          <caret line="85" selection-start-line="85" selection-end-line="85" />
653
+        </state>
654
+      </provider>
655
+    </entry>
656
+    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/controller/ImgController.java">
657
+      <provider selected="true" editor-type-id="text-editor">
658
+        <state relative-caret-position="456">
659
+          <caret line="35" column="46" selection-start-line="35" selection-start-column="40" selection-end-line="35" selection-end-column="46" />
660
+        </state>
661
+      </provider>
662
+    </entry>
663
+    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/model/TaSnapshotPerson.java">
664
+      <provider selected="true" editor-type-id="text-editor">
665
+        <state relative-caret-position="152">
666
+          <caret line="16" column="13" selection-start-line="16" selection-start-column="13" selection-end-line="16" selection-end-column="13" />
667
+          <folding>
668
+            <element signature="imports" expanded="true" />
669
+          </folding>
670
+        </state>
671
+      </provider>
672
+    </entry>
673
+    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/MainbizApplication.java">
447 674
       <provider selected="true" editor-type-id="text-editor">
448 675
         <state relative-caret-position="209">
449
-          <caret line="11" column="19" selection-start-line="11" selection-start-column="19" selection-end-line="11" selection-end-column="19" />
676
+          <caret line="13" selection-start-line="13" selection-end-line="13" />
450 677
           <folding>
451 678
             <element signature="imports" expanded="true" />
452 679
           </folding>
453 680
         </state>
454 681
       </provider>
455 682
     </entry>
456
-    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/controller/AudioController.java">
683
+    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/controller/TaPersonController.java">
457 684
       <provider selected="true" editor-type-id="text-editor">
458
-        <state relative-caret-position="437">
459
-          <caret line="23" column="17" selection-start-line="23" selection-start-column="5" selection-end-line="23" selection-end-column="17" />
685
+        <state relative-caret-position="174">
686
+          <caret line="140" column="48" selection-start-line="140" selection-start-column="48" selection-end-line="140" selection-end-column="48" />
460 687
           <folding>
461 688
             <element signature="imports" expanded="true" />
462 689
           </folding>
463 690
         </state>
464 691
       </provider>
465 692
     </entry>
466
-    <entry file="file://$PROJECT_DIR$/pom.xml">
693
+    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/ICameraService.java">
467 694
       <provider selected="true" editor-type-id="text-editor">
468
-        <state relative-caret-position="-18">
469
-          <caret line="21" column="20" selection-start-line="21" selection-start-column="20" selection-end-line="21" selection-end-column="20" />
695
+        <state relative-caret-position="95">
696
+          <caret line="6" column="11" selection-start-line="6" selection-start-column="11" selection-end-line="6" selection-end-column="11" />
470 697
         </state>
471 698
       </provider>
472 699
     </entry>
473
-    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/utils/FileUtil.java">
700
+    <entry file="file://$PROJECT_DIR$/src/main/resources/mapper/TaVisitingWordsMapper.xml">
474 701
       <provider selected="true" editor-type-id="text-editor">
475
-        <state relative-caret-position="266">
476
-          <caret line="23" lean-forward="true" selection-start-line="23" selection-end-line="23" />
702
+        <state relative-caret-position="38">
703
+          <caret line="2" column="67" selection-start-line="2" selection-start-column="67" selection-end-line="2" selection-end-column="67" />
477 704
         </state>
478 705
       </provider>
479 706
     </entry>
480
-    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/utils/Encrypt.java">
707
+    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/mapper/TaVisitingWordsMapper.java">
708
+      <provider selected="true" editor-type-id="text-editor">
709
+        <state relative-caret-position="76">
710
+          <caret line="6" column="3" lean-forward="true" selection-start-line="6" selection-start-column="3" selection-end-line="6" selection-end-column="3" />
711
+        </state>
712
+      </provider>
713
+    </entry>
714
+    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/mapper/TaCustomWordsMapper.java">
715
+      <provider selected="true" editor-type-id="text-editor">
716
+        <state relative-caret-position="152">
717
+          <caret line="8" column="13" lean-forward="true" selection-start-line="8" selection-start-column="13" selection-end-line="8" selection-end-column="13" />
718
+          <folding>
719
+            <element signature="imports" expanded="true" />
720
+          </folding>
721
+        </state>
722
+      </provider>
723
+    </entry>
724
+    <entry file="file://$PROJECT_DIR$/src/main/resources/mapper/TaCustomWordsMapper.xml">
481 725
       <provider selected="true" editor-type-id="text-editor">
482 726
         <state relative-caret-position="38">
483
-          <caret line="2" selection-start-line="2" selection-end-line="2" />
727
+          <caret line="2" column="57" selection-start-line="2" selection-start-column="57" selection-end-line="2" selection-end-column="57" />
728
+        </state>
729
+      </provider>
730
+    </entry>
731
+    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/impl/CameraServiceImpl.java">
732
+      <provider selected="true" editor-type-id="text-editor">
733
+        <state relative-caret-position="330">
734
+          <caret line="51" column="90" selection-start-line="51" selection-start-column="90" selection-end-line="51" selection-end-column="90" />
735
+          <folding>
736
+            <element signature="imports" expanded="true" />
737
+          </folding>
738
+        </state>
739
+      </provider>
740
+    </entry>
741
+    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/utils/SAWeather.java">
742
+      <provider selected="true" editor-type-id="text-editor">
743
+        <state relative-caret-position="114">
744
+          <caret line="16" column="13" selection-start-line="16" selection-start-column="13" selection-end-line="16" selection-end-column="13" />
745
+        </state>
746
+      </provider>
747
+    </entry>
748
+    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/controller/TaDeviceController.java">
749
+      <provider selected="true" editor-type-id="text-editor">
750
+        <state relative-caret-position="425">
751
+          <caret line="177" column="39" selection-start-line="177" selection-start-column="31" selection-end-line="177" selection-end-column="39" />
752
+        </state>
753
+      </provider>
754
+    </entry>
755
+    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/ITaCustomWordsService.java">
756
+      <provider selected="true" editor-type-id="text-editor">
757
+        <state relative-caret-position="114">
758
+          <caret line="6" column="6" lean-forward="true" selection-start-line="6" selection-start-column="6" selection-end-line="6" selection-end-column="6" />
759
+          <folding>
760
+            <element signature="imports" expanded="true" />
761
+          </folding>
762
+        </state>
763
+      </provider>
764
+    </entry>
765
+    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/impl/TaVisitingWordsServiceImpl.java">
766
+      <provider selected="true" editor-type-id="text-editor">
767
+        <state relative-caret-position="323">
768
+          <caret line="17" column="13" selection-start-line="17" selection-start-column="13" selection-end-line="17" selection-end-column="13" />
769
+          <folding>
770
+            <element signature="imports" expanded="true" />
771
+          </folding>
484 772
         </state>
485 773
       </provider>
486 774
     </entry>
487
-    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/utils/StatusUtils.java">
775
+    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/impl/TaCustomWordsServiceImpl.java">
488 776
       <provider selected="true" editor-type-id="text-editor">
489
-        <state relative-caret-position="190">
490
-          <caret line="10" lean-forward="true" selection-start-line="10" selection-end-line="10" />
777
+        <state relative-caret-position="380">
778
+          <caret line="20" lean-forward="true" selection-start-line="20" selection-end-line="20" />
779
+          <folding>
780
+            <element signature="imports" expanded="true" />
781
+          </folding>
782
+        </state>
783
+      </provider>
784
+    </entry>
785
+    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/service/impl/TaDeviceServiceImpl.java">
786
+      <provider selected="true" editor-type-id="text-editor">
787
+        <state relative-caret-position="247">
788
+          <caret line="17" column="13" selection-start-line="17" selection-start-column="13" selection-end-line="17" selection-end-column="13" />
491 789
         </state>
492 790
       </provider>
493 791
     </entry>
494 792
     <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/utils/XFYun.java">
495 793
       <provider selected="true" editor-type-id="text-editor">
496
-        <state relative-caret-position="810">
497
-          <caret line="75" column="5" selection-start-line="75" selection-start-column="5" selection-end-line="75" selection-end-column="5" />
794
+        <state relative-caret-position="284">
795
+          <caret line="52" selection-start-line="52" selection-end-line="52" />
796
+          <folding>
797
+            <element signature="imports" expanded="true" />
798
+          </folding>
498 799
         </state>
499 800
       </provider>
500 801
     </entry>
501
-    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/utils/SAWeather.java">
802
+    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/model/TaVisitingWords.java">
502 803
       <provider selected="true" editor-type-id="text-editor">
503
-        <state relative-caret-position="-230">
504
-          <caret line="1" lean-forward="true" selection-start-line="1" selection-end-line="1" />
804
+        <state relative-caret-position="258">
805
+          <caret line="19" column="13" selection-start-line="19" selection-start-column="13" selection-end-line="19" selection-end-column="13" />
806
+        </state>
807
+      </provider>
808
+    </entry>
809
+    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/model/TaCustomWords.java">
810
+      <provider selected="true" editor-type-id="text-editor">
811
+        <state relative-caret-position="551">
812
+          <caret line="29" lean-forward="true" selection-start-line="29" selection-end-line="29" />
813
+          <folding>
814
+            <element signature="imports" expanded="true" />
815
+          </folding>
816
+        </state>
817
+      </provider>
818
+    </entry>
819
+    <entry file="file://$PROJECT_DIR$/src/main/java/com.huiju.welcome/controller/CameraController.java">
820
+      <provider selected="true" editor-type-id="text-editor">
821
+        <state relative-caret-position="159">
822
+          <caret line="199" selection-start-line="199" selection-end-line="199" />
505 823
           <folding>
506 824
             <element signature="imports" expanded="true" />
507 825
           </folding>
@@ -510,8 +828,15 @@
510 828
     </entry>
511 829
     <entry file="file://$PROJECT_DIR$/src/main/resources/application.yml">
512 830
       <provider selected="true" editor-type-id="text-editor">
513
-        <state relative-caret-position="646">
514
-          <caret line="34" column="16" lean-forward="true" selection-start-line="34" selection-start-column="16" selection-end-line="34" selection-end-column="16" />
831
+        <state relative-caret-position="304">
832
+          <caret line="16" column="57" selection-start-line="16" selection-start-column="57" selection-end-line="16" selection-end-column="57" />
833
+        </state>
834
+      </provider>
835
+    </entry>
836
+    <entry file="file://$PROJECT_DIR$/pom.xml">
837
+      <provider selected="true" editor-type-id="text-editor">
838
+        <state relative-caret-position="380">
839
+          <caret line="20" column="18" selection-start-line="20" selection-start-column="18" selection-end-line="20" selection-end-column="18" />
515 840
         </state>
516 841
       </provider>
517 842
     </entry>

+ 9
- 1
pom.xml Ver fichero

@@ -10,7 +10,7 @@
10 10
 	</parent>
11 11
 	<groupId>com.huiju.welcome</groupId>
12 12
 	<artifactId>mainbiz</artifactId>
13
-	<version>v3.0.0</version>
13
+	<version>v3.1.0</version>
14 14
 	<name>mainbiz</name>
15 15
 	<description>com.huiju.welcome main service</description>
16 16
 
@@ -83,6 +83,14 @@
83 83
 				<groupId>org.springframework.boot</groupId>
84 84
 				<artifactId>spring-boot-maven-plugin</artifactId>
85 85
 			</plugin>
86
+			<plugin>
87
+				<groupId>org.apache.maven.plugins</groupId>
88
+				<artifactId>maven-surefire-plugin</artifactId>
89
+				<version>2.4.2</version>
90
+				<configuration>
91
+					<skipTests>true</skipTests>
92
+				</configuration>
93
+			</plugin>
86 94
 		</plugins>
87 95
 	</build>
88 96
 

+ 1
- 0
src/main/java/com.huiju.welcome/common/WebSocketServer.java Ver fichero

@@ -113,6 +113,7 @@ public class WebSocketServer {
113 113
 				if(sid==null) {
114 114
 					item.sendMessage(message);
115 115
 				}else if(item.sid.equals(sid)){
116
+					log.info("推送消息到窗口"+sid+",推送内容:"+message);
116 117
 					item.sendMessage(message);
117 118
 				}
118 119
 			} catch (IOException e) {

+ 225
- 161
src/main/java/com.huiju.welcome/controller/CameraController.java Ver fichero

@@ -2,31 +2,30 @@ package com.huiju.welcome.controller;
2 2
 
3 3
 import com.alibaba.fastjson.JSONObject;
4 4
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
5
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
5 6
 import com.huiju.welcome.common.WebSocketServer;
7
+import com.huiju.welcome.common.base.ResponseBean;
6 8
 import com.huiju.welcome.model.*;
7 9
 import com.huiju.welcome.service.*;
8 10
 import com.huiju.welcome.utils.StatusUtils;
9 11
 import com.huiju.welcome.utils.XFYun;
10 12
 import io.swagger.annotations.ApiOperation;
13
+import org.slf4j.Logger;
14
+import org.slf4j.LoggerFactory;
15
+import org.apache.http.HttpStatus;
11 16
 import org.springframework.beans.factory.annotation.Autowired;
12 17
 import org.springframework.beans.factory.annotation.Value;
13
-import org.springframework.http.HttpEntity;
14
-import org.springframework.http.HttpHeaders;
15
-import org.springframework.http.HttpMethod;
16
-import org.springframework.http.MediaType;
17 18
 import org.springframework.transaction.annotation.Transactional;
18
-import org.springframework.web.bind.annotation.PathVariable;
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.client.RestTemplate;
19
+import org.springframework.web.bind.annotation.*;
20
+import org.springframework.web.multipart.MultipartFile;
21
+import org.springframework.web.multipart.MultipartHttpServletRequest;
23 22
 
24
-import javax.servlet.ServletInputStream;
25 23
 import javax.servlet.http.HttpServletRequest;
26
-import java.io.ByteArrayOutputStream;
27 24
 import java.io.File;
28 25
 import java.io.FileOutputStream;
29 26
 import java.io.IOException;
27
+import java.nio.ByteBuffer;
28
+import java.nio.channels.FileChannel;
30 29
 import java.time.Duration;
31 30
 import java.time.LocalDateTime;
32 31
 import java.util.HashMap;
@@ -41,9 +40,15 @@ import java.util.Map;
41 40
 @RequestMapping("/")
42 41
 @Transactional(rollbackFor = Exception.class)
43 42
 public class CameraController {
43
+	private Logger log = LoggerFactory.getLogger(XFYun.class);
44
+
45
+	private final static int NEW_PERSON = 1;
44 46
 	
45 47
 	@Autowired
46 48
 	private ITaPersonService taPersonService;
49
+
50
+	@Autowired
51
+	private ITaSnapshotPersonService taSnapshotPersonService;
47 52
 	
48 53
 	@Autowired
49 54
 	private ITaVisitingLogService visitingLogService;
@@ -55,6 +60,9 @@ public class CameraController {
55 60
 
56 61
 	@Autowired
57 62
 	private ITaVisitingWordsService visitingWordsService;
63
+
64
+	@Autowired
65
+	private ITaCustomWordsService taCustomWordsService;
58 66
 	
59 67
 	@Autowired
60 68
 	private ITaPersonTypeService taPersonTypeService;
@@ -64,108 +72,152 @@ public class CameraController {
64 72
 	
65 73
 	@Value("${huiju.files}")
66 74
 	private String huijuFiles;
67
-	
68
-	
69
-	@ApiOperation(value = "人脸识别失败", notes = "人脸识别失败")
70
-	@PostMapping(value = "/stranger/{deviceId}")
71
-	public void stranger(@PathVariable String deviceId, HttpServletRequest request){
75
+
76
+	@Autowired
77
+	private ICameraService cameraService;
78
+
79
+	@ApiOperation(value = "人脸对比结果上传", notes = "人脸对比结果上传")
80
+	@PostMapping(value = "/camera/{deviceId}/person")
81
+	public ResponseBean person(
82
+			@PathVariable String deviceId,
83
+			MultipartFile snapshot,
84
+			TaSnapshotPerson taSnapshotPerson,
85
+			HttpServletRequest request) {
86
+		ResponseBean responseBean = new ResponseBean();
87
+
88
+		if (null == deviceId || null == taSnapshotPerson) {
89
+			responseBean.addError(HttpStatus.SC_BAD_REQUEST, "设备ID 或者 抓拍参数传入方式不正确");
90
+			return responseBean;
91
+		}
92
+
93
+		if (!deviceId.equals(taSnapshotPerson.getDeviceId())) {
94
+			responseBean.addError(HttpStatus.SC_BAD_REQUEST, "设备ID 或者 抓拍参数传入不正确");
95
+			return responseBean;
96
+		}
97
+
98
+		// 抓拍时间为当前时间
99
+		taSnapshotPerson.setCreateDate(LocalDateTime.now());
100
+
101
+		// 人像质量最低值, 低于这个值的认为人脸抓拍失败, 取值范围 1 - 100
102
+		SysParam faceMinScoreParam = iSysParamService.getById("face-min-score");
103
+		if (null == faceMinScoreParam) {
104
+			faceMinScoreParam = new SysParam();
105
+			faceMinScoreParam.setValue("70");
106
+		}
107
+		float faceMinScore = Float.parseFloat(faceMinScoreParam.getValue());
108
+
109
+		Integer score = taSnapshotPerson.getScore();
110
+		if (null == score || score.intValue() < faceMinScore) {
111
+			return responseBean;
112
+		}
113
+
114
+		// 人脸相似度阈值, 低于设定认为没有识别成功
115
+		// SDK 中这个值范围是 0.001 - 1, 本系统设定范围是 1 - 100
116
+		SysParam samePersonThresholdParam = iSysParamService.getById("same-person-threshold");
117
+		if (null == samePersonThresholdParam) {
118
+			samePersonThresholdParam = new SysParam();
119
+			samePersonThresholdParam.setValue("70");
120
+		}
121
+		float samePersonThreshold = Float.parseFloat(samePersonThresholdParam.getValue());
122
+		Float similarity = taSnapshotPerson.getSimilarity();
123
+
124
+		// 识别结果
125
+		boolean newGuy = null == similarity || similarity < (samePersonThreshold / 100);
126
+
127
+		TaPerson taPerson = null;
128
+		if (!newGuy) {
129
+			taPerson = taPersonService.getById(taSnapshotPerson.getMatchPerson());
130
+
131
+			// 抓拍人与比对人是同一个人
132
+			taSnapshotPerson.setPersonId(taSnapshotPerson.getMatchPerson());
133
+
134
+			LocalDateTime lastTime = taPerson.getLastVisiteDate();
135
+			boolean sameDevice = deviceId.equals(taPerson.getLastVisiteDevice());
136
+
137
+			if (null != lastTime && sameDevice) {
138
+				// 降噪设定
139
+				SysParam dispatchTimeLimitParam = iSysParamService.getById("dispatch-time-limit");
140
+				if (null == dispatchTimeLimitParam) {
141
+					dispatchTimeLimitParam = new SysParam();
142
+					dispatchTimeLimitParam.setValue("2");
143
+				}
144
+				float dispatchTimeLimit = Float.parseFloat(dispatchTimeLimitParam.getValue());
145
+
146
+				// 默认 2 分钟内连续识别的都是垃圾数据
147
+				Duration duration = Duration.between(lastTime, taSnapshotPerson.getCreateDate());
148
+				if (duration.getSeconds() < (60 * dispatchTimeLimit)) {
149
+					return responseBean;
150
+				}
151
+			}
152
+		}
153
+
154
+		// 抓拍照落地
72 155
 		long nowTime = System.currentTimeMillis();
73
-		String path = huijuFiles + "camera";
74
-		File tempFile = new File(path);
75
-		if (!tempFile.exists()) {
76
-			tempFile.mkdirs();
156
+		String avatar = "/camera/" + nowTime + "_" + deviceId + ".jpg";
157
+		getMultipartFile(snapshot, avatar);
158
+		taSnapshotPerson.setAvatar(avatar);
159
+
160
+		if (newGuy) {
161
+			// 新人入库, 同时写入抓拍人ID
162
+			taPerson = saveNewPerson(taSnapshotPerson);
163
+
164
+			// 同步相机识别库
165
+			cameraService.dispatchPerson(taPerson);
77 166
 		}
78
-		byte[] data = new byte[1024];
79
-		//人脸识别失败的情况下下载人脸图片
80
-		try {
81
-			int lenth = request.getContentLength();
82
-			ServletInputStream iii = request.getInputStream();
83
-			
84
-			//下载文件
85
-			FileOutputStream fos=new FileOutputStream(tempFile.getPath() + File.separator + nowTime + "_" + deviceId +".jpg");
86
-			ByteArrayOutputStream bos = new ByteArrayOutputStream(1000);
87
-			
88
-			byte[] buffer=new byte[1024];
89
-			int len=0;
90
-			while((len=iii.read(buffer))!=-1){
91
-				fos.write(buffer, 0, len);
92
-				bos.write(buffer, 0, len);
93
-				fos.flush();
167
+
168
+		// 保存抓拍日志
169
+		taSnapshotPersonService.save(taSnapshotPerson);
170
+
171
+		// 预写到访日志
172
+		saveVisitingLog(taPerson, taSnapshotPerson);
173
+
174
+		// 推送消息
175
+		sendPersionInfo(taPerson);
176
+
177
+		return responseBean;
178
+	}
179
+
180
+	//推送给前端
181
+	private void sendPersionInfo(TaPerson taPerson) {
182
+		TaVisitingWords taVisitingWords = null;
183
+		String deviceId = taPerson.getLastVisiteDevice();
184
+		String words = taPerson.getWords();
185
+		Integer sex = "2".equals(taPerson.getSex()) ? 2 : 1;
186
+		String personName = taPerson.getName();
187
+		if (null == personName) personName = "";
188
+
189
+		// 检查是不是有定制语音
190
+		QueryWrapper<TaCustomWords> wrapper = new QueryWrapper<>();
191
+		wrapper.eq("device_id", deviceId);
192
+		wrapper.eq("person_id", taPerson.getPersonId());
193
+		TaCustomWords taCustomWords = taCustomWordsService.getOne(wrapper);
194
+		if (null != taCustomWords) {
195
+			String wds = taCustomWords.getWords();
196
+			if (null != wds && !"".equals(wds.trim())) {
197
+				words = wds.trim();
94 198
 			}
95
-			fos.close();
96
-			iii.close();
97
-			data = bos.toByteArray();
98
-			bos.close();
99
-			
100
-		}catch (Exception e){
101
-			e.printStackTrace();
102 199
 		}
103
-		LocalDateTime localDateTime = LocalDateTime.now();
104
-		//入人员库
105
-		String fileName = "/camera/" + nowTime + "_" + deviceId + ".jpg";
106
-		TaPerson taPerson = new TaPerson();
107
-		taPerson.setAvatar(fileName);
108
-		taPerson.setStatus(StatusUtils.Normal);
109
-		taPerson.setCreateDate(localDateTime);
110
-		taPerson.setLastVisiteDate(localDateTime);
111
-		taPerson.setLastVisiteDevice(deviceId);
112
-		taPerson.setTypeId(StatusUtils.Normal);
113
-		taPersonService.save(taPerson);
114
-		//入来访人员库
115
-		TaDevice taDevice = taDeviceService.getById(deviceId);
116
-		TaVisitingLog taVisitingLog = new TaVisitingLog();
117
-		taVisitingLog.setPersonId(taPerson.getPersonId());
118
-		taVisitingLog.setVisiteDate(localDateTime);
119
-		taVisitingLog.setDeviceId(taDevice.getDeviceId());
120
-		taVisitingLog.setDeviceName(taDevice.getDeviceName());
121
-		taVisitingLog.setAvatar(fileName);
122
-		visitingLogService.save(taVisitingLog);
123
-
124
-		//推送消息给前端
125
-		sendPersionInfo(taPerson.getPersonId(),deviceId);
126
-		
127
-		//分发人脸到各个相机
128
-		RestTemplate restTemplate = new RestTemplate();
129
-		
130
-		QueryWrapper<TaDevice> queryWrapper = new QueryWrapper<>();
131
-		queryWrapper.eq("status",StatusUtils.Normal);
132
-		List<TaDevice> taDeviceList = taDeviceService.list(queryWrapper);
133
-		byte[] finalData = data;
134
-		taDeviceList.stream().forEach(e -> {
135
-			try {
136
-				String cameraUrl = e.getApi() + "/video/" + taPerson.getPersonId();
137
-				HttpHeaders headers = new HttpHeaders();
138
-				headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
139
-				
140
-				HttpEntity httpEntity = new HttpEntity(finalData);
141
-				restTemplate.exchange(cameraUrl, HttpMethod.POST, httpEntity, String.class);
142
-			}catch (Exception ee){
143
-			
200
+
201
+		if (null == words || "".equals(words)) {
202
+			// 当前分类下不一定维护了欢迎词
203
+			QueryWrapper<TaVisitingWords> query = new QueryWrapper<>();
204
+			query.eq("device_id", deviceId);
205
+			query.eq("type_id", taPerson.getTypeId());
206
+			taVisitingWords = visitingWordsService.getOne(query);
207
+			if (null == taVisitingWords) {
208
+				return;
144 209
 			}
145
-		});
146
-	}
147
-	
148
-	private void sendPersionInfo(Integer personId, String deviceId) {
149
-		//推送给前端
150
-		TaPerson newPerson = taPersonService.getById(personId);
151
-		QueryWrapper<TaVisitingWords> queryWrapperWords = new QueryWrapper<>();
152
-		queryWrapperWords.eq("device_id",deviceId);
153
-		queryWrapperWords.eq("type_id",newPerson.getTypeId());
154
-		TaVisitingWords taVisitingWords = visitingWordsService.getOne(queryWrapperWords);
155
-
156
-		Integer sex = "2".equals(newPerson.getSex()) ? 2 : 1;
157
-		String personName = newPerson.getName();
158
-		if (null == personName) {
159
-			personName = "";
210
+
211
+			words = taVisitingWords.getWords();
160 212
 		}
161 213
 
162
-		String words = taVisitingWords.getWords().replace("{{name}}", personName).replace("{{sex}}", sex == 2 ? "女士" : "先生");
214
+
215
+		words = words.replace("{{name}}", personName).replace("{{sex}}", sex == 2 ? "女士" : "先生");
163 216
 		taVisitingWords.setWords(words);
164 217
 
165 218
 		Map<String,Object> map = new HashMap<>();
166
-		map.put("person",newPerson);
219
+		map.put("person",taPerson);
167 220
 		map.put("taVisitingWords",taVisitingWords);
168
-
169 221
 		map.put("audio", xfYun.voice( personName + "," + words, sex  == 2 ? 1 : 2));
170 222
 		try {
171 223
 			WebSocketServer.sendInfo(JSONObject.toJSONString(map),deviceId);
@@ -174,71 +226,83 @@ public class CameraController {
174 226
 		}
175 227
 	}
176 228
 
177
-	@ApiOperation(value = "人脸识别成功", notes = "人脸识别成功")
178
-	@PostMapping(value = "/familiar/{deviceId}/{personId}")
179
-	public void familiar(@PathVariable String deviceId,
180
-	                     @PathVariable Integer personId,HttpServletRequest request){
181
-		//根据persionId和deviceId获取人员的数据
182
-		TaPerson taPerson = taPersonService.getById(personId);
183
-		//查看此人是否需要显示
184
-		TaPersonType taPersonType = taPersonTypeService.getById(taPerson.getTypeId());
185
-		if (!taPersonType.getNeedShow()){
186
-			return;
187
-		}
188
-		SysParam sysParam = iSysParamService.getById("dispatch-time-limit");
189
-		LocalDateTime localDateTime = LocalDateTime.now();
190
-		//相同设备号才有五分钟的可能并且判断当前时间减去最后到访时间 是否大于五分钟(可配置的)
191
-		Duration duration = Duration.between(taPerson.getLastVisiteDate(),localDateTime);
192
-		if (taPerson.getLastVisiteDevice().equals(deviceId) && duration.toMinutes() < Long.valueOf(sysParam.getValue())){
193
-			return;
194
-		}
195
-		//获取图片
196
-		long nowTime = System.currentTimeMillis();
197
-		String path = huijuFiles + "camera";
198
-		File tempFile = new File(path);
199
-		if (!tempFile.exists()) {
200
-			tempFile.mkdirs();
229
+	// 获取上传单文件
230
+	private boolean getMultipartFile(MultipartFile f, String newFname) {
231
+		if (null == f || f.isEmpty()) {
232
+			log.error("========================没有获取到抓拍图片");
233
+			return false;
234
+		} else {
235
+			log.info("=======================成功获取到抓拍数据流");
201 236
 		}
202
-		
203
-		//人脸识别失败的情况下下载人脸图片
237
+
238
+		File localDir = new File(huijuFiles + "camera");
239
+		if (!localDir.exists()) localDir.mkdirs();
240
+
204 241
 		try {
205
-			int lenth = request.getContentLength();
206
-			ServletInputStream iii = request.getInputStream();
207
-			
208
-			//下载文件
209
-			FileOutputStream fos=new FileOutputStream(tempFile.getPath() + File.separator + nowTime + "_" + deviceId + ".jpg");
210
-			byte[] buffer=new byte[1024];
211
-			int len=0;
212
-			while((len=iii.read(buffer))!=-1){
213
-				fos.write(buffer, 0, len);
214
-				
215
-				fos.flush();
216
-			}
217
-			fos.close();
218
-			iii.close();
219
-		}catch (Exception e){
242
+			byte[] fBytes = f.getBytes();
243
+			ByteBuffer buf = ByteBuffer.wrap(fBytes);
244
+			FileChannel fc = new FileOutputStream(huijuFiles + newFname).getChannel();
245
+			fc.write(buf);
246
+			fc.close();
247
+		} catch (Exception e) {
220 248
 			e.printStackTrace();
249
+			log.error("读取抓拍图片失败: " + e.getMessage());
250
+			return false;
251
+		}
252
+
253
+		log.info("成功落地抓拍图: " + huijuFiles + newFname);
254
+
255
+		return true;
256
+	}
257
+
258
+	private TaPerson saveNewPerson(TaSnapshotPerson taSnapshotPerson) {
259
+		TaPerson person = new TaPerson();
260
+		person.setTypeId(NEW_PERSON);
261
+		person.setAvatar(taSnapshotPerson.getAvatar());
262
+		person.setStatus(StatusUtils.Normal);
263
+		person.setLastVisiteDate(taSnapshotPerson.getCreateDate());
264
+		person.setLastVisiteDevice(taSnapshotPerson.getDeviceId());
265
+		person.setSex(taSnapshotPerson.getSex().toString());
266
+
267
+		boolean rtn = taPersonService.save(person);
268
+		if (!rtn) {
269
+			return null;
221 270
 		}
222
-		
223
-		//入人员库
224
-		String fileName = "/camera/" + nowTime + "_" + deviceId + ".jpg";
225
-		
226
-		//更新最后到访时间和设备
227
-		TaPerson lastTaPerson = new TaPerson();
228
-		lastTaPerson.setPersonId(personId);
229
-		lastTaPerson.setLastVisiteDate(localDateTime);
230
-		lastTaPerson.setLastVisiteDevice(deviceId);
231
-		taPersonService.updateById(lastTaPerson);
232
-		//入来访人员库
233
-		TaDevice taDevice = taDeviceService.getById(deviceId);
271
+
272
+		// 更新 real_id
273
+		UpdateWrapper<TaPerson> wrapper = new UpdateWrapper<>();
274
+		wrapper.set("real_id", person.getPersonId());
275
+		wrapper.eq("person_id", person.getPersonId());
276
+		taPersonService.update(new TaPerson(), wrapper);
277
+
278
+		taSnapshotPerson.setPersonId(person.getPersonId());
279
+		person.setRealId(person.getPersonId());
280
+		return person;
281
+	}
282
+
283
+	//
284
+	private TaVisitingLog saveVisitingLog(TaPerson taPerson, TaSnapshotPerson taSnapshotPerson) {
234 285
 		TaVisitingLog taVisitingLog = new TaVisitingLog();
235
-		taVisitingLog.setPersonId(personId);
236
-		taVisitingLog.setVisiteDate(localDateTime);
286
+		TaDevice taDevice = taDeviceService.getById(taSnapshotPerson.getDeviceId());
287
+
288
+		taVisitingLog.setPersonId(taPerson.getPersonId());
289
+		taVisitingLog.setRealPerson(taPerson.getRealId());
290
+		taVisitingLog.setAvatar(taPerson.getAvatar());
237 291
 		taVisitingLog.setDeviceId(taDevice.getDeviceId());
238 292
 		taVisitingLog.setDeviceName(taDevice.getDeviceName());
239
-		taVisitingLog.setAvatar(fileName);
240
-		visitingLogService.save(taVisitingLog);
241
-		//推送消息给前端
242
-		sendPersionInfo(taPerson.getPersonId(),deviceId);
293
+		taVisitingLog.setVisiteDate(LocalDateTime.now());
294
+		taVisitingLog.setName(taPerson.getName());
295
+
296
+		// 反更新最后来访时间
297
+		taPerson.setLastVisiteDate(taVisitingLog.getVisiteDate());
298
+		taPerson.setLastVisiteDevice(taDevice.getDeviceId());
299
+		UpdateWrapper<TaPerson> wrapper = new UpdateWrapper<>();
300
+		wrapper.set("last_visite_date", taVisitingLog.getVisiteDate());
301
+		wrapper.set("last_visite_device", taDevice.getDeviceId());
302
+		wrapper.eq("person_id", taPerson.getPersonId());
303
+		taPersonService.update(taPerson, wrapper);
304
+
305
+		boolean rtn = visitingLogService.save(taVisitingLog);
306
+		return !rtn ? null : taVisitingLog;
243 307
 	}
244 308
 }

+ 112
- 1
src/main/java/com.huiju.welcome/controller/SysUserController.java Ver fichero

@@ -1,9 +1,13 @@
1 1
 package com.huiju.welcome.controller;
2 2
 
3 3
 
4
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
5
+import com.baomidou.mybatisplus.core.metadata.IPage;
6
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
4 7
 import com.huiju.welcome.common.base.BaseController;
5 8
 import com.huiju.welcome.common.base.ResponseBean;
6 9
 import com.huiju.welcome.model.SysUser;
10
+import com.huiju.welcome.model.TaPerson;
7 11
 import com.huiju.welcome.service.ISysUserService;
8 12
 import com.huiju.welcome.utils.Encrypt;
9 13
 import com.huiju.welcome.utils.StatusUtils;
@@ -16,6 +20,9 @@ import org.springframework.web.bind.annotation.*;
16 20
 
17 21
 import javax.servlet.http.HttpServletRequest;
18 22
 import javax.servlet.http.HttpSession;
23
+import java.time.LocalDateTime;
24
+import java.time.format.DateTimeFormatter;
25
+import java.util.List;
19 26
 
20 27
 /**
21 28
  * <p>
@@ -92,7 +99,7 @@ public class SysUserController extends BaseController {
92 99
 
93 100
     @ApiOperation(value = "获取用户信息", notes = "获取用户信息")
94 101
     @RequestMapping(value = "/user", method = RequestMethod.GET)
95
-    public ResponseBean get(HttpServletRequest request) {
102
+    public ResponseBean user(HttpServletRequest request) {
96 103
         ResponseBean responseBean = new ResponseBean();
97 104
         HttpSession httpSession = request.getSession();
98 105
 
@@ -105,6 +112,110 @@ public class SysUserController extends BaseController {
105 112
         return responseBean;
106 113
     }
107 114
 
115
+    @ApiOperation(value = "获取用户信息", notes = "获取用户信息")
116
+    @ApiImplicitParams({
117
+            @ApiImplicitParam(paramType = "query", dataType = "int", name = "pageNum", value = "当前页"),
118
+            @ApiImplicitParam(paramType = "query", dataType = "int", name = "pageSize", value = "每页数量"),
119
+            @ApiImplicitParam(paramType = "query", dataType = "String", name = "name", value = "姓名"),
120
+            @ApiImplicitParam(paramType = "query", dataType = "String", name = "phone", value = "手机号"),
121
+            @ApiImplicitParam(paramType = "query", dataType = "int", name = "isSales", value = "是否销售"),
122
+    })
123
+    @RequestMapping(value = "/sysuser", method = RequestMethod.GET)
124
+    public ResponseBean list(
125
+            @RequestParam Integer pageNum,
126
+            @RequestParam  Integer pageSize,
127
+            String name,
128
+            String phone,
129
+            Integer isSales,
130
+            HttpServletRequest request
131
+    ) {
132
+        ResponseBean responseBean = new ResponseBean();
133
+
134
+        Page<SysUser> pg = new Page<>();
135
+        pg.setCurrent(pageNum);
136
+        pg.setSize(pageSize);
137
+        QueryWrapper<SysUser> queryWrapper = new QueryWrapper<>();
138
+        queryWrapper.orderByDesc("create_date");
139
+        queryWrapper.gt("user_id", 1); // 去掉管理员
140
+
141
+        if (null != name && !"".equals(name)) {
142
+            queryWrapper.like("nickname", name);
143
+        }
144
+
145
+        if (null != phone && !"".equals(phone)) {
146
+            queryWrapper.eq("phone", phone);
147
+        }
148
+
149
+        if (null != isSales && isSales.intValue() > 0 ) {
150
+            queryWrapper.eq("is_sales", isSales);
151
+        }
152
+
153
+        // 取消传递密码字段
154
+        IPage<SysUser> nwPg = sysUserService.page(pg, queryWrapper);
155
+        List<SysUser> usrList = nwPg.getRecords();
156
+        for (SysUser usr : usrList) {
157
+            usr.setPassword("");
158
+        }
159
+
160
+        responseBean.addSuccess(nwPg);
161
+        return responseBean;
162
+    }
163
+
164
+    @ApiOperation(value = "获取用户信息", notes = "获取用户信息")
165
+    @ApiImplicitParams({
166
+            @ApiImplicitParam(paramType = "path", dataType = "int", name = "id", value = "用户详情")
167
+    })
168
+    @RequestMapping(value = "/sysuser/{id}", method = RequestMethod.GET)
169
+    public ResponseBean get(@PathVariable Integer id, HttpServletRequest request) {
170
+        ResponseBean responseBean = new ResponseBean();
171
+
172
+        if (id.intValue() < 2) {
173
+            responseBean.addError(HttpStatus.SC_NOT_FOUND, "错误的用户ID");
174
+            return responseBean;
175
+        }
176
+
177
+        SysUser sysUser = sysUserService.getById(id);
178
+        sysUser.setPassword("");
179
+
180
+        responseBean.addSuccess(sysUser);
181
+        return responseBean;
182
+    }
183
+
184
+    @ApiOperation(value = "新增人员", notes = "新增人员")
185
+    @ApiImplicitParams({
186
+            @ApiImplicitParam(paramType = "body", dataType = "SysUser", name = "sysUser", value = "用户详情")
187
+    })
188
+    @RequestMapping(value = "/sysuser", method = RequestMethod.POST)
189
+    public ResponseBean create(@RequestBody SysUser sysUser, HttpServletRequest request) {
190
+        ResponseBean responseBean = new ResponseBean();
191
+
192
+        sysUser.setCreateDate(LocalDateTime.now());
193
+
194
+        boolean success = sysUserService.save(sysUser);
195
+        if (!success) {
196
+            responseBean.addError(HttpStatus.SC_INTERNAL_SERVER_ERROR, "新增用户失败");
197
+            return responseBean;
198
+        }
199
+
200
+        return responseBean;
201
+    }
202
+
203
+    @ApiOperation(value = "编辑人员", notes = "编辑人员")
204
+    @ApiImplicitParams({
205
+            @ApiImplicitParam(paramType = "body", dataType = "SysUser", name = "sysUser", value = "用户详情")
206
+    })
207
+    @RequestMapping(value = "/sysuser", method = RequestMethod.PUT)
208
+    public ResponseBean update(@RequestBody SysUser sysUser, HttpServletRequest request) {
209
+        ResponseBean responseBean = new ResponseBean();
210
+        boolean success = sysUserService.updateById(sysUser);
211
+        if (!success) {
212
+            responseBean.addError(HttpStatus.SC_INTERNAL_SERVER_ERROR, "更新用户失败");
213
+            return responseBean;
214
+        }
215
+
216
+        return responseBean;
217
+    }
218
+
108 219
     private boolean checkPassword(String password, SysUser user)  {
109 220
         String passwd = Encrypt.md5(password, user.getUserId().toString());
110 221
         if (null == passwd || !passwd.equals(user.getPassword())) {

+ 108
- 0
src/main/java/com.huiju.welcome/controller/TaDeviceController.java Ver fichero

@@ -1,12 +1,18 @@
1 1
 package com.huiju.welcome.controller;
2 2
 
3 3
 
4
+import com.alibaba.fastjson.JSON;
4 5
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
6
+import com.baomidou.mybatisplus.core.metadata.IPage;
5 7
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
8
+import com.huiju.welcome.common.WebSocketServer;
6 9
 import com.huiju.welcome.common.base.BaseController;
7 10
 import com.huiju.welcome.common.base.ResponseBean;
8 11
 import com.huiju.welcome.model.TaDevice;
12
+import com.huiju.welcome.model.TaPerson;
13
+import com.huiju.welcome.service.ICameraService;
9 14
 import com.huiju.welcome.service.ITaDeviceService;
15
+import com.huiju.welcome.service.ITaPersonService;
10 16
 import com.huiju.welcome.utils.StatusUtils;
11 17
 import io.swagger.annotations.ApiImplicitParam;
12 18
 import io.swagger.annotations.ApiImplicitParams;
@@ -19,7 +25,11 @@ import org.springframework.web.bind.annotation.RequestParam;
19 25
 import org.springframework.web.bind.annotation.RestController;
20 26
 
21 27
 import javax.servlet.http.HttpServletRequest;
28
+import java.io.IOException;
22 29
 import java.time.LocalDateTime;
30
+import java.util.HashMap;
31
+import java.util.List;
32
+import java.util.Map;
23 33
 
24 34
 /**
25 35
  * <p>
@@ -35,6 +45,12 @@ public class TaDeviceController extends BaseController {
35 45
     @Autowired
36 46
     ITaDeviceService taDeviceService;
37 47
 
48
+    @Autowired
49
+    ITaPersonService taPersonService;
50
+
51
+    @Autowired
52
+    private ICameraService cameraService;
53
+
38 54
     @ApiOperation(value = "获取设备列表", notes = "获取设备列表")
39 55
     @ApiImplicitParams({
40 56
             @ApiImplicitParam(paramType = "query", dataType = "int", name = "pageNum", value = "当前页"),
@@ -54,6 +70,98 @@ public class TaDeviceController extends BaseController {
54 70
         return responseBean;
55 71
     }
56 72
 
73
+    @ApiOperation(value = "批量下发人脸", notes = "批量下发人脸")
74
+    @ApiImplicitParams({
75
+            @ApiImplicitParam(paramType="query", dataType="Integer", name="from", value="人员ID"),
76
+            @ApiImplicitParam(paramType="query", dataType="Integer", name="lastNum", value="上次处理个数"),
77
+            @ApiImplicitParam(paramType="query", dataType="String", name="deviceId", value="设备 id"),
78
+            @ApiImplicitParam(paramType="query", dataType="String", name="wsId", value="websocket id"),
79
+    })
80
+    @RequestMapping(value = "/device/person", method = RequestMethod.POST)
81
+    public ResponseBean DispatchBatch(@RequestParam String deviceId, Integer from, Integer lastNum, String wsId, HttpServletRequest request) {
82
+        ResponseBean responseBean = new ResponseBean();
83
+
84
+        if (null == from) from = 1;
85
+        if (null == lastNum) lastNum = 0;
86
+
87
+        TaDevice taDevice = taDeviceService.getById(deviceId);
88
+        if (null == taDevice) {
89
+            responseBean.addError(HttpStatus.SC_BAD_REQUEST, "设备不存在");
90
+            return responseBean;
91
+        }
92
+
93
+        // 获取所有的人员
94
+        QueryWrapper<TaPerson> wrapper = new QueryWrapper<>();
95
+        wrapper.ge("person_id", from);
96
+        wrapper.orderByAsc("person_id");
97
+
98
+        Page<TaPerson> preDef = new Page<>();
99
+        preDef.setCurrent(1);
100
+        preDef.setSize(9999999l); // 代表无限大
101
+
102
+        IPage<TaPerson> pg = taPersonService.page(preDef, wrapper);
103
+        Map<String, Object> msg = new HashMap<>();
104
+        if (null != wsId && !"".equals(wsId) && from.intValue() == 0) {
105
+            msg.put("step", "ready");
106
+            msg.put("total", pg.getTotal());
107
+            try {
108
+                // 通知前端开始处理
109
+                WebSocketServer.sendInfo(JSON.toJSONString(msg), wsId);
110
+            } catch (IOException e) {
111
+                e.printStackTrace();
112
+            }
113
+        }
114
+
115
+        List<TaPerson> personList = pg.getRecords();
116
+        int total = null == personList ? 0 : personList.size();
117
+        if (total > 0) {
118
+            for(TaPerson person: personList) {
119
+                if (null != wsId && !"".equals(wsId)) {
120
+                    msg.clear();
121
+                    msg.put("step", "process");
122
+                    msg.put("current", lastNum);
123
+                    msg.put("id", person.getPersonId());
124
+                    try {
125
+                        // 通知前端当前处理到这个人
126
+                        WebSocketServer.sendInfo(JSON.toJSONString(msg), wsId);
127
+                    } catch (IOException e) {
128
+                        e.printStackTrace();
129
+                    }
130
+                }
131
+
132
+                // 下发
133
+                String result = cameraService.dispatchPerson(person, taDevice);
134
+//                String result = "success";
135
+//                try {
136
+//                    Thread.sleep(50);
137
+//                } catch (InterruptedException e) {
138
+//                    e.printStackTrace();
139
+//                }
140
+
141
+                boolean success = null == result || "".equals(result) || "success".equals(result);
142
+                if (!success) {
143
+                    responseBean.addError(HttpStatus.SC_INTERNAL_SERVER_ERROR, result);
144
+                    return responseBean;
145
+                }
146
+
147
+                lastNum ++;
148
+            }
149
+        }
150
+
151
+        if (null != wsId && !"".equals(wsId)) {
152
+            msg.clear();
153
+            msg.put("step", "finish");
154
+            try {
155
+                // 通知前端所有人已处理完
156
+                WebSocketServer.sendInfo(JSON.toJSONString(msg), wsId);
157
+            } catch (IOException e) {
158
+                e.printStackTrace();
159
+            }
160
+        }
161
+
162
+        return responseBean;
163
+    }
164
+
57 165
 
58 166
     @ApiOperation(value = "设备注册", notes = "设备注册")
59 167
     @ApiImplicitParams({

+ 68
- 29
src/main/java/com.huiju.welcome/controller/TaPersonController.java Ver fichero

@@ -1,12 +1,11 @@
1 1
 package com.huiju.welcome.controller;
2 2
 
3
-
4
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
5 3
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
6 4
 import com.huiju.welcome.common.base.BaseController;
7 5
 import com.huiju.welcome.common.base.ResponseBean;
8 6
 import com.huiju.welcome.model.TaPerson;
9 7
 import com.huiju.welcome.model.TaVisitingLog;
8
+import com.huiju.welcome.service.ICameraService;
10 9
 import com.huiju.welcome.service.ITaDeviceService;
11 10
 import com.huiju.welcome.service.ITaPersonService;
12 11
 import com.huiju.welcome.service.ITaVisitingLogService;
@@ -20,7 +19,9 @@ import org.springframework.beans.factory.annotation.Autowired;
20 19
 import org.springframework.web.bind.annotation.*;
21 20
 
22 21
 import javax.servlet.http.HttpServletRequest;
23
-import java.time.LocalDateTime;
22
+import java.util.ArrayList;
23
+import java.util.HashMap;
24
+import java.util.List;
24 25
 import java.util.Map;
25 26
 
26 27
 /**
@@ -44,6 +45,9 @@ public class TaPersonController extends BaseController {
44 45
     @Autowired
45 46
     ITaDeviceService taDeviceService;
46 47
 
48
+    @Autowired
49
+    private ICameraService cameraService;
50
+
47 51
     @ApiOperation(value = "新增人员", notes = "新增人员")
48 52
     @ApiImplicitParams({
49 53
             @ApiImplicitParam(paramType = "body", dataType = "TaPerson", name = "taPerson", value = "人员详情")
@@ -59,6 +63,13 @@ public class TaPersonController extends BaseController {
59 63
             return responseBean;
60 64
         }
61 65
 
66
+        taPerson.setRealId(taPerson.getPersonId());
67
+        success = taPersonService.updateById(taPerson);
68
+        if (!success) {
69
+            responseBean.addError(HttpStatus.SC_INTERNAL_SERVER_ERROR, "新增人员失败");
70
+            return responseBean;
71
+        }
72
+
62 73
         return responseBean;
63 74
     }
64 75
 
@@ -78,6 +89,23 @@ public class TaPersonController extends BaseController {
78 89
         return responseBean;
79 90
     }
80 91
 
92
+    @ApiOperation(value = "合并人员", notes = "合并人员")
93
+    @ApiImplicitParams({
94
+            @ApiImplicitParam(paramType = "path", dataType = "int", name = "from", value = "待合并人员ID"),
95
+            @ApiImplicitParam(paramType = "body", dataType = "TaPerson", name = "to", value = "合并到人员ID")
96
+    })
97
+    @RequestMapping(value = "/merge/person/{from}", method = RequestMethod.PUT)
98
+    public  ResponseBean merge(@PathVariable Integer from, @RequestBody TaPerson to) {
99
+        ResponseBean responseBean = new ResponseBean();
100
+        boolean success = taPersonService.mergePerson(from, to);
101
+        if (!success) {
102
+            responseBean.addError(HttpStatus.SC_INTERNAL_SERVER_ERROR, "合并人员失败");
103
+            return responseBean;
104
+        }
105
+
106
+        return responseBean;
107
+    }
108
+
81 109
     @ApiOperation(value = "更新人员头像", notes = "更新人员头像")
82 110
     @ApiImplicitParams({
83 111
             @ApiImplicitParam(paramType="path", dataType="Integer", name="personId", value="人员ID"),
@@ -110,9 +138,10 @@ public class TaPersonController extends BaseController {
110 138
     public ResponseBean DispatchProfile(@PathVariable int personId, HttpServletRequest request) {
111 139
         ResponseBean responseBean = new ResponseBean();
112 140
         TaPerson taPerson = taPersonService.getById(personId);
113
-        String success = taPersonService.updateAvatar(taPerson);
114
-        if (!success.equals("success")) {
115
-            responseBean.addError(HttpStatus.SC_INTERNAL_SERVER_ERROR, success);
141
+        String result = cameraService.dispatchPerson(taPerson);
142
+        boolean success = null == result || "".equals(result) || "success".equals(result);
143
+        if (!success) {
144
+            responseBean.addError(HttpStatus.SC_INTERNAL_SERVER_ERROR, result);
116 145
             return responseBean;
117 146
         }
118 147
         return responseBean;
@@ -126,7 +155,10 @@ public class TaPersonController extends BaseController {
126 155
 	public ResponseBean get(@PathVariable int id, HttpServletRequest request) {
127 156
 		ResponseBean responseBean = new ResponseBean();
128 157
 
129
-		Map<String, Object> res = taPersonService.detail(id);
158
+//		Map<String, Object> res = taPersonService.detail(id);
159
+        Map<String, Object> res = new HashMap<>();
160
+        res.put("detail", taPersonService.getById(id));
161
+
130 162
 		responseBean.addSuccess(res);
131 163
 		return responseBean;
132 164
 	}
@@ -135,7 +167,8 @@ public class TaPersonController extends BaseController {
135 167
     @ApiImplicitParams({
136 168
             @ApiImplicitParam(paramType = "query", dataType = "int", name = "pageNum", value = "当前页"),
137 169
             @ApiImplicitParam(paramType = "query", dataType = "int", name = "pageSize", value = "每页数量"),
138
-            @ApiImplicitParam(paramType = "query", dataType = "int", name = "typeId", value = "每页数量"),
170
+            @ApiImplicitParam(paramType = "query", dataType = "int", name = "typeId", value = "类型"),
171
+            @ApiImplicitParam(paramType = "query", dataType = "int", name = "personId", value = "人员ID"),
139 172
             @ApiImplicitParam(paramType = "query", dataType = "String", name = "name", value = "姓名"),
140 173
             @ApiImplicitParam(paramType = "query", dataType = "String", name = "phone", value = "电话"),
141 174
             @ApiImplicitParam(paramType = "query", dataType = "String", name = "beginDate", value = "起始日期"),
@@ -146,6 +179,7 @@ public class TaPersonController extends BaseController {
146 179
             @RequestParam Integer pageNum,
147 180
             @RequestParam  Integer pageSize,
148 181
             Integer typeId,
182
+            Integer personId,
149 183
             String name,
150 184
             String phone,
151 185
             String beginDate,
@@ -154,35 +188,40 @@ public class TaPersonController extends BaseController {
154 188
     ) {
155 189
         ResponseBean responseBean = new ResponseBean();
156 190
 
157
-        Page<TaPerson> pg = new Page<>();
158
-        pg.setCurrent(pageNum);
159
-        pg.setSize(pageSize);
160
-        QueryWrapper<TaPerson> queryWrapper = new QueryWrapper<>();
161
-        queryWrapper.orderByDesc("last_visite_date");
162
-        queryWrapper.eq("status", StatusUtils.Normal);
191
+        Page<TaPerson> page = new Page<>(pageNum, pageSize);
163 192
 
164
-        if (null != name && !"".equals(name)) {
165
-            queryWrapper.like("name", name);
166
-        }
193
+        if (null != typeId && typeId < 1) typeId = null;
194
+        if (null != personId && personId < 1) personId = null;
195
+        if (null != name && "".equals(name)) name = null;
196
+        if (null != phone && "".equals(phone)) phone = null;
197
+        if (null != beginDate && "".equals(beginDate)) beginDate = null;
198
+        if (null != endDate && "".equals(endDate)) endDate = null;
167 199
 
168
-        if (null != phone && !"".equals(phone)) {
169
-            queryWrapper.eq("phone", phone);
170
-        }
200
+        responseBean.addSuccess(taPersonService.getRealPersonList(page, personId, typeId, name, phone, beginDate, endDate));
171 201
 
172
-        if (null != beginDate && !"".equals(beginDate)) {
173
-            queryWrapper.gt("last_visite_date", LocalDateTime.parse(beginDate));
174
-        }
202
+        return responseBean;
203
+    }
175 204
 
176
-        if (null != endDate && !"".equals(endDate)) {
177
-            queryWrapper.gt("last_visite_date", LocalDateTime.parse(endDate));
178
-        }
205
+    @ApiOperation(value = "统计人员", notes = "统计人员")
206
+    @RequestMapping(value = "/stats/person", method = RequestMethod.GET)
207
+    public ResponseBean statsPerson() {
208
+        ResponseBean responseBean = new ResponseBean();
179 209
 
180
-        if (typeId.intValue() > 0 ) {
181
-            queryWrapper.eq("type_id", typeId);
210
+        List<Map<String, String>> person = taPersonService.statsPerson();
211
+        if (null == person) {
212
+            person = new ArrayList<>();
182 213
         }
214
+        if (person.size() == 0) {
215
+            Map<String, String> mp = new HashMap<>();
216
+            person.add(mp);
217
+        }
218
+
219
+        Long regularClients = taVisitingLogService.getRegularClientTodayAmount();
220
+        if (null ==  regularClients) regularClients = 0l;
183 221
 
184
-        responseBean.addSuccess(taPersonService.page(pg, queryWrapper));
222
+        person.get(0).put("regular", String.valueOf(regularClients));
185 223
 
224
+        responseBean.addSuccess(person);
186 225
         return responseBean;
187 226
     }
188 227
 }

+ 54
- 0
src/main/java/com.huiju.welcome/controller/TaSnapshotPersonController.java Ver fichero

@@ -0,0 +1,54 @@
1
+package com.huiju.welcome.controller;
2
+
3
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
4
+import com.huiju.welcome.common.base.ResponseBean;
5
+import com.huiju.welcome.model.TaSnapshotPerson;
6
+import com.huiju.welcome.service.ITaSnapshotPersonService;
7
+import io.swagger.annotations.ApiImplicitParam;
8
+import io.swagger.annotations.ApiImplicitParams;
9
+import io.swagger.annotations.ApiOperation;
10
+import org.springframework.beans.factory.annotation.Autowired;
11
+import org.springframework.web.bind.annotation.RequestMapping;
12
+import org.springframework.web.bind.annotation.RequestMethod;
13
+import org.springframework.web.bind.annotation.RequestParam;
14
+import org.springframework.web.bind.annotation.RestController;
15
+
16
+import javax.servlet.http.HttpServletRequest;
17
+
18
+/**
19
+ * <p>
20
+ *  前端控制器
21
+ * </p>
22
+ *
23
+ * @author jobob
24
+ * @since 2019-03-14
25
+ */
26
+@RestController
27
+@RequestMapping("/")
28
+public class TaSnapshotPersonController {
29
+
30
+    @Autowired
31
+    private ITaSnapshotPersonService taSnapshotPersonService;
32
+
33
+
34
+    @ApiOperation(value = "获取抓拍列表", notes = "获取抓拍列表")
35
+    @ApiImplicitParams({
36
+            @ApiImplicitParam(paramType = "query", dataType = "int", name = "pageNum", value = "当前页"),
37
+            @ApiImplicitParam(paramType = "query", dataType = "int", name = "pageSize", value = "每页数量"),
38
+            @ApiImplicitParam(paramType = "query", dataType = "String", name = "deviceId", value = "设备ID"),
39
+            @ApiImplicitParam(paramType = "query", dataType = "String", name = "startDate", value = "开始日期"),
40
+            @ApiImplicitParam(paramType = "query", dataType = "String", name = "endDate", value = "结束日期")
41
+    })
42
+    @RequestMapping(value = "/snapshot", method = RequestMethod.GET)
43
+    public ResponseBean list(@RequestParam Integer pageNum, @RequestParam  Integer pageSize, @RequestParam  String deviceId, String startDate, String endDate, HttpServletRequest request) {
44
+        ResponseBean responseBean = new ResponseBean();
45
+
46
+        if (null != startDate && "".equals(startDate)) startDate = null;
47
+        if (null != endDate && "".equals(endDate)) endDate = null;
48
+
49
+        Page<TaSnapshotPerson> page = new Page<>(pageNum, pageSize);
50
+        responseBean.addSuccess(taSnapshotPersonService.getSnapshotList(page, deviceId, startDate, endDate));
51
+
52
+        return responseBean;
53
+    }
54
+}

+ 46
- 12
src/main/java/com.huiju.welcome/controller/TaVisitingLogController.java Ver fichero

@@ -5,7 +5,9 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
5 5
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
6 6
 import com.huiju.welcome.common.base.BaseController;
7 7
 import com.huiju.welcome.common.base.ResponseBean;
8
+import com.huiju.welcome.model.TaPerson;
8 9
 import com.huiju.welcome.model.TaVisitingLog;
10
+import com.huiju.welcome.service.ITaPersonService;
9 11
 import com.huiju.welcome.service.ITaVisitingLogService;
10 12
 import io.swagger.annotations.ApiImplicitParam;
11 13
 import io.swagger.annotations.ApiImplicitParams;
@@ -15,6 +17,8 @@ import org.springframework.beans.factory.annotation.Autowired;
15 17
 import org.springframework.web.bind.annotation.*;
16 18
 
17 19
 import javax.servlet.http.HttpServletRequest;
20
+import java.time.LocalDateTime;
21
+import java.time.format.DateTimeFormatter;
18 22
 
19 23
 /**
20 24
  * <p>
@@ -30,6 +34,9 @@ public class TaVisitingLogController extends BaseController {
30 34
     @Autowired
31 35
     private ITaVisitingLogService taVisitingLogService;
32 36
 
37
+    @Autowired
38
+    private ITaPersonService taPersonService;
39
+
33 40
     @ApiOperation(value = "编辑访问记录", notes = "编辑访问记录")
34 41
     @ApiImplicitParams({
35 42
             @ApiImplicitParam(paramType = "body", dataType = "TaVisitingLog", name = "taVisitingLog", value = "访问记录")
@@ -38,6 +45,20 @@ public class TaVisitingLogController extends BaseController {
38 45
     public ResponseBean update(@RequestBody TaVisitingLog taVisitingLog, HttpServletRequest request) {
39 46
         ResponseBean responseBean = new ResponseBean();
40 47
 
48
+        Integer sales = taVisitingLog.getSalesId();
49
+        if (null != sales && sales.intValue() > 0) {
50
+            // 更新人员主表
51
+            TaPerson taPerson = new TaPerson();
52
+            taPerson.setPersonId(taVisitingLog.getPersonId());
53
+            taPerson.setLastSales(sales);
54
+            taPerson.setLastSalesName(taVisitingLog.getSalesName());
55
+            boolean success = taPersonService.updateSales(taPerson);
56
+            if (!success) {
57
+                responseBean.addError(HttpStatus.SC_INTERNAL_SERVER_ERROR, "更新内容失败, 请重试");
58
+                return responseBean;
59
+            }
60
+        }
61
+
41 62
         boolean success = taVisitingLogService.updateById(taVisitingLog);
42 63
         if (!success) {
43 64
             responseBean.addError(HttpStatus.SC_INTERNAL_SERVER_ERROR, "更新内容失败, 请重试");
@@ -48,34 +69,47 @@ public class TaVisitingLogController extends BaseController {
48 69
         return responseBean;
49 70
     }
50 71
 
51
-    @ApiOperation(value = "获取人员列表", notes = "获取人员列表")
72
+    @ApiOperation(value = "获取访问列表", notes = "获取访问列表")
52 73
     @ApiImplicitParams({
53 74
             @ApiImplicitParam(paramType = "query", dataType = "int", name = "pageNum", value = "当前页"),
54 75
             @ApiImplicitParam(paramType = "query", dataType = "int", name = "pageSize", value = "每页数量"),
55
-            @ApiImplicitParam(paramType = "query", dataType = "int", name = "typeId", value = "每页数量"),
56 76
             @ApiImplicitParam(paramType = "query", dataType = "int", name = "personId", value = "人员ID"),
77
+            @ApiImplicitParam(paramType = "query", dataType = "String", name = "beginDate", value = "起始日期"),
78
+            @ApiImplicitParam(paramType = "query", dataType = "String", name = "endDate", value = "结束日期"),
57 79
     })
58 80
     @RequestMapping(value = "/visitinglog", method = RequestMethod.GET)
59 81
     public ResponseBean list(
60 82
             @RequestParam Integer pageNum,
61 83
             @RequestParam  Integer pageSize,
62 84
             Integer personId,
85
+            String beginDate,
86
+            String endDate,
63 87
             HttpServletRequest request) {
64
-
65 88
         ResponseBean responseBean = new ResponseBean();
66 89
 
67
-        Page<TaVisitingLog> pg = new Page<>();
68
-        pg.setCurrent(pageNum);
69
-        pg.setSize(pageSize);
70
-        QueryWrapper<TaVisitingLog> queryWrapper = new QueryWrapper<>();
71
-        queryWrapper.orderByDesc("visite_date");
90
+        if (null != personId && personId < 1) personId = null;
91
+        if (null != beginDate && "".equals(beginDate)) beginDate = null;
92
+        if (null != endDate && "".equals(endDate)) endDate = null;
72 93
 
73
-        if (null != personId) {
74
-            queryWrapper.eq("person_id", personId);
75
-        }
94
+        Page<TaVisitingLog> page = new Page<>(pageNum, pageSize);
95
+        responseBean.addSuccess(taVisitingLogService.getVisitingList(page, beginDate, endDate, personId));
76 96
 
77
-        responseBean.addSuccess(taVisitingLogService.page(pg, queryWrapper));
97
+        return responseBean;
98
+    }
99
+
100
+    @ApiOperation(value = "日访问量统计", notes = "日访问量统计")
101
+    @ApiImplicitParams({
102
+            @ApiImplicitParam(paramType = "query", dataType = "String", name = "startDate", value = "起始日期"),
103
+            @ApiImplicitParam(paramType = "query", dataType = "String", name = "endDate", value = "结束日期"),
104
+    })
105
+    @RequestMapping(value = "/stats/daily/visitinglog", method = RequestMethod.GET)
106
+    public ResponseBean visitingDailyAmout(@RequestParam String startDate, @RequestParam String endDate, HttpServletRequest request) {
107
+        ResponseBean responseBean = new ResponseBean();
108
+        DateTimeFormatter df = DateTimeFormatter.ISO_LOCAL_DATE_TIME;
109
+        LocalDateTime startDt = LocalDateTime.parse(startDate, df);
110
+        LocalDateTime endDt = LocalDateTime.parse(endDate, df);
78 111
 
112
+        responseBean.addSuccess(taVisitingLogService.getVisitingDailyAmount(startDt, endDt));
79 113
         return responseBean;
80 114
     }
81 115
 }

+ 1
- 0
src/main/java/com.huiju.welcome/interceptor/AccessInterceptor.java Ver fichero

@@ -28,6 +28,7 @@ public class AccessInterceptor implements HandlerInterceptor {
28 28
             "/familiar",
29 29
             "/stranger",
30 30
             "/screen",
31
+            "/camera",
31 32
             "/websocket"
32 33
     };
33 34
 

+ 18
- 0
src/main/java/com.huiju.welcome/mapper/TaCustomWordsMapper.java Ver fichero

@@ -0,0 +1,18 @@
1
+package com.huiju.welcome.mapper;
2
+
3
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4
+import com.huiju.welcome.model.TaCustomWords;
5
+import org.apache.ibatis.annotations.Mapper;
6
+
7
+/**
8
+ * <p>
9
+ *  Mapper 接口
10
+ * </p>
11
+ *
12
+ * @author jobob
13
+ * @since 2019-03-12
14
+ */
15
+@Mapper
16
+public interface TaCustomWordsMapper extends BaseMapper<TaCustomWords> {
17
+
18
+}

+ 13
- 1
src/main/java/com.huiju.welcome/mapper/TaPersonMapper.java Ver fichero

@@ -1,10 +1,13 @@
1 1
 package com.huiju.welcome.mapper;
2 2
 
3 3
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4
+import com.baomidou.mybatisplus.core.metadata.IPage;
5
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
4 6
 import com.huiju.welcome.model.TaPerson;
5 7
 import org.apache.ibatis.annotations.Mapper;
6 8
 import org.apache.ibatis.annotations.Param;
7 9
 
10
+import java.util.List;
8 11
 import java.util.Map;
9 12
 
10 13
 /**
@@ -18,6 +21,15 @@ import java.util.Map;
18 21
 @Mapper
19 22
 public interface TaPersonMapper extends BaseMapper<TaPerson> {
20 23
     boolean updatePersonAvatar(TaPerson taPerson);
21
-	
22 24
 	Map<String, String> getDetailInfo(@Param("personId") Integer personId, @Param("deviceId") String deviceId);
25
+	List<Map<String, String>> statsPerson();
26
+	IPage<TaPerson> getRealPersonList(
27
+			Page<TaPerson> page,
28
+			@Param("personId") Integer personId,
29
+			@Param("typeId") Integer typeId,
30
+			@Param("name") String name,
31
+			@Param("phone") String phone,
32
+			@Param("beginDate") String beginDate,
33
+			@Param("endDate") String endDate
34
+	);
23 35
 }

+ 22
- 0
src/main/java/com.huiju.welcome/mapper/TaSnapshotPersonMapper.java Ver fichero

@@ -0,0 +1,22 @@
1
+package com.huiju.welcome.mapper;
2
+
3
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4
+import com.baomidou.mybatisplus.core.metadata.IPage;
5
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
6
+import com.huiju.welcome.model.TaSnapshotPerson;
7
+import org.apache.ibatis.annotations.Mapper;
8
+import org.apache.ibatis.annotations.Param;
9
+
10
+
11
+/**
12
+ * <p>
13
+ *  Mapper 接口
14
+ * </p>
15
+ *
16
+ * @author jobob
17
+ * @since 2019-03-12
18
+ */
19
+@Mapper
20
+public interface TaSnapshotPersonMapper extends BaseMapper<TaSnapshotPerson> {
21
+    IPage<TaSnapshotPerson> getSnapshotList(Page<TaSnapshotPerson> page, @Param("deviceId") String deviceId, @Param("startDate") String startDate, @Param("endDate") String endDate);
22
+}

+ 11
- 0
src/main/java/com.huiju.welcome/mapper/TaVisitingLogMapper.java Ver fichero

@@ -1,8 +1,15 @@
1 1
 package com.huiju.welcome.mapper;
2 2
 
3 3
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4
+import com.baomidou.mybatisplus.core.metadata.IPage;
5
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
4 6
 import com.huiju.welcome.model.TaVisitingLog;
5 7
 import org.apache.ibatis.annotations.Mapper;
8
+import org.apache.ibatis.annotations.Param;
9
+
10
+import java.time.LocalDateTime;
11
+import java.util.List;
12
+import java.util.Map;
6 13
 
7 14
 /**
8 15
  * <p>
@@ -14,5 +21,9 @@ import org.apache.ibatis.annotations.Mapper;
14 21
  */
15 22
 @Mapper
16 23
 public interface TaVisitingLogMapper extends BaseMapper<TaVisitingLog> {
24
+    List<Map<String, String>> getVisitingDailyAmount(@Param("startDate") LocalDateTime startDate, @Param("endDate") LocalDateTime endDate);
25
+
26
+    List<Map<String, Long>> getRegularClientTodayAmount();
17 27
 
28
+    IPage<TaVisitingLog> getVisitingList(Page page, @Param("startDate") String startDate, @Param("endDate") String endDate, @Param("personId") Integer personId);
18 29
 }

+ 9
- 0
src/main/java/com.huiju.welcome/model/SysUser.java Ver fichero

@@ -7,6 +7,7 @@ import lombok.EqualsAndHashCode;
7 7
 import lombok.experimental.Accessors;
8 8
 
9 9
 import java.io.Serializable;
10
+import java.time.LocalDateTime;
10 11
 
11 12
 /**
12 13
  * <p>
@@ -34,5 +35,13 @@ public class SysUser implements Serializable {
34 35
 
35 36
     private Integer status;
36 37
 
38
+    private String openid;
37 39
 
40
+    private Boolean isSales;
41
+
42
+    private String wxId;
43
+
44
+    private LocalDateTime createDate;
45
+
46
+    private String phone;
38 47
 }

+ 29
- 0
src/main/java/com.huiju.welcome/model/TaCustomWords.java Ver fichero

@@ -0,0 +1,29 @@
1
+package com.huiju.welcome.model;
2
+
3
+import lombok.Data;
4
+import lombok.EqualsAndHashCode;
5
+import lombok.experimental.Accessors;
6
+
7
+import java.io.Serializable;
8
+
9
+/**
10
+ * <p>
11
+ * 
12
+ * </p>
13
+ *
14
+ * @author jobob
15
+ * @since 2019-03-12
16
+ */
17
+@Data
18
+@EqualsAndHashCode(callSuper = false)
19
+@Accessors(chain = true)
20
+public class TaCustomWords implements Serializable {
21
+
22
+    private static final long serialVersionUID = 1L;
23
+
24
+    private String deviceId;
25
+
26
+    private Integer personId;
27
+
28
+    private String words;
29
+}

+ 9
- 0
src/main/java/com.huiju.welcome/model/TaPerson.java Ver fichero

@@ -51,4 +51,13 @@ public class TaPerson implements Serializable {
51 51
     
52 52
     private String lastVisiteDevice;
53 53
 
54
+    private String words;
55
+
56
+    private Integer lastSales;
57
+
58
+    private String lastSalesName;
59
+
60
+    private String intention;
61
+
62
+    private Integer realId;
54 63
 }

+ 54
- 0
src/main/java/com.huiju.welcome/model/TaSnapshotPerson.java Ver fichero

@@ -0,0 +1,54 @@
1
+package com.huiju.welcome.model;
2
+
3
+
4
+import com.baomidou.mybatisplus.annotation.IdType;
5
+import com.baomidou.mybatisplus.annotation.TableField;
6
+import com.baomidou.mybatisplus.annotation.TableId;
7
+import lombok.Data;
8
+import lombok.EqualsAndHashCode;
9
+import lombok.experimental.Accessors;
10
+
11
+import java.io.Serializable;
12
+import java.time.LocalDateTime;
13
+
14
+@Data
15
+@EqualsAndHashCode(callSuper = false)
16
+@Accessors(chain = true)
17
+public class TaSnapshotPerson  implements Serializable {
18
+
19
+    private static final long serialVersionUID = 1L;
20
+
21
+    @TableId(value = "snapshot_id", type = IdType.AUTO)
22
+    private Integer snapshotId;
23
+
24
+    private LocalDateTime createDate;
25
+
26
+    private Integer personId;
27
+
28
+    private String avatar;
29
+
30
+    private String deviceId;
31
+
32
+    private Integer matchPerson;
33
+
34
+    private Float similarity;
35
+
36
+    @TableField("`status`")
37
+    private Integer status;
38
+
39
+    private Integer score;
40
+
41
+    private Integer sex;
42
+
43
+    private Integer age;
44
+
45
+    private Integer ageDeviation;
46
+
47
+    private Integer hasGlasses;
48
+
49
+    @TableField(exist = false)
50
+    private String matchName;
51
+
52
+    @TableField(exist = false)
53
+    private String matchAvatar;
54
+}

+ 8
- 0
src/main/java/com.huiju.welcome/model/TaVisitingLog.java Ver fichero

@@ -50,4 +50,12 @@ public class TaVisitingLog implements Serializable {
50 50
     private Integer visitNum;
51 51
 
52 52
     private String visitPurpose;
53
+
54
+    private Integer salesId;
55
+
56
+    private String salesName;
57
+
58
+    private String intention;
59
+
60
+    private Integer realPerson;
53 61
 }

+ 1
- 1
src/main/java/com.huiju.welcome/model/TaVisitingWords.java Ver fichero

@@ -31,5 +31,5 @@ public class TaVisitingWords implements Serializable {
31 31
 
32 32
     private Integer status;
33 33
 
34
-
34
+    private Double weight;
35 35
 }

+ 8
- 0
src/main/java/com.huiju.welcome/service/ICameraService.java Ver fichero

@@ -0,0 +1,8 @@
1
+package com.huiju.welcome.service;
2
+
3
+import com.huiju.welcome.model.TaDevice;
4
+import com.huiju.welcome.model.TaPerson;
5
+
6
+public interface ICameraService {
7
+    String dispatchPerson(TaPerson taPerson, TaDevice ...devices);
8
+}

+ 16
- 0
src/main/java/com.huiju.welcome/service/ITaCustomWordsService.java Ver fichero

@@ -0,0 +1,16 @@
1
+package com.huiju.welcome.service;
2
+
3
+import com.baomidou.mybatisplus.extension.service.IService;
4
+import com.huiju.welcome.model.TaCustomWords;
5
+
6
+/**
7
+ * <p>
8
+ *  服务类
9
+ * </p>
10
+ *
11
+ * @author jobob
12
+ * @since 2019-03-12
13
+ */
14
+public interface ITaCustomWordsService extends IService<TaCustomWords> {
15
+
16
+}

+ 21
- 1
src/main/java/com.huiju.welcome/service/ITaPersonService.java Ver fichero

@@ -1,8 +1,12 @@
1 1
 package com.huiju.welcome.service;
2 2
 
3
+import com.baomidou.mybatisplus.core.metadata.IPage;
4
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
3 5
 import com.baomidou.mybatisplus.extension.service.IService;
6
+import com.huiju.welcome.model.TaDevice;
4 7
 import com.huiju.welcome.model.TaPerson;
5 8
 
9
+import java.util.List;
6 10
 import java.util.Map;
7 11
 
8 12
 /**
@@ -15,9 +19,25 @@ import java.util.Map;
15 19
  */
16 20
 public interface ITaPersonService extends IService<TaPerson> {
17 21
 
18
-    String updateAvatar(TaPerson taPerson);
22
+    String updateAvatar(TaPerson taPerson,TaDevice...dev);
19 23
 
20 24
     Map<String,Object> detail(int id);
21 25
 	
22 26
 	Map<String, String> getDetailInfo(Integer personId, String deviceId);
27
+
28
+    List<Map<String, String>> statsPerson();
29
+
30
+    boolean updateSales(TaPerson taPerson);
31
+
32
+    boolean mergePerson(Integer fromPerson, TaPerson toPerson);
33
+
34
+    IPage<TaPerson> getRealPersonList(
35
+            Page<TaPerson> page,
36
+            Integer personId,
37
+            Integer typeId,
38
+            String name,
39
+            String phone,
40
+            String beginDate,
41
+            String endDate
42
+    );
23 43
 }

+ 19
- 0
src/main/java/com.huiju.welcome/service/ITaSnapshotPersonService.java Ver fichero

@@ -0,0 +1,19 @@
1
+package com.huiju.welcome.service;
2
+
3
+import com.baomidou.mybatisplus.core.metadata.IPage;
4
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
5
+import com.baomidou.mybatisplus.extension.service.IService;
6
+import com.huiju.welcome.model.TaSnapshotPerson;
7
+
8
+
9
+/**
10
+ * <p>
11
+ *  服务类
12
+ * </p>
13
+ *
14
+ * @author jobob
15
+ * @since 2019-03-12
16
+ */
17
+public interface ITaSnapshotPersonService extends IService<TaSnapshotPerson> {
18
+    IPage<TaSnapshotPerson> getSnapshotList(Page<TaSnapshotPerson> page, String deviceId, String startDate, String endDate);
19
+}

+ 10
- 0
src/main/java/com.huiju.welcome/service/ITaVisitingLogService.java Ver fichero

@@ -1,8 +1,14 @@
1 1
 package com.huiju.welcome.service;
2 2
 
3
+import com.baomidou.mybatisplus.core.metadata.IPage;
4
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
3 5
 import com.baomidou.mybatisplus.extension.service.IService;
4 6
 import com.huiju.welcome.model.TaVisitingLog;
5 7
 
8
+import java.time.LocalDateTime;
9
+import java.util.List;
10
+import java.util.Map;
11
+
6 12
 /**
7 13
  * <p>
8 14
  *  服务类
@@ -12,5 +18,9 @@ import com.huiju.welcome.model.TaVisitingLog;
12 18
  * @since 2019-03-12
13 19
  */
14 20
 public interface ITaVisitingLogService extends IService<TaVisitingLog> {
21
+    List<Map<String, String>> getVisitingDailyAmount(LocalDateTime startDate, LocalDateTime endDate);
22
+
23
+    Long getRegularClientTodayAmount();
15 24
 
25
+    IPage<TaVisitingLog> getVisitingList(Page<TaVisitingLog> page, String startDate, String endDate, Integer personId);
16 26
 }

+ 62
- 0
src/main/java/com.huiju.welcome/service/impl/CameraServiceImpl.java Ver fichero

@@ -0,0 +1,62 @@
1
+package com.huiju.welcome.service.impl;
2
+
3
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
4
+import com.huiju.welcome.model.TaDevice;
5
+import com.huiju.welcome.model.TaPerson;
6
+import com.huiju.welcome.service.ICameraService;
7
+import com.huiju.welcome.service.ITaDeviceService;
8
+import com.huiju.welcome.utils.Encrypt;
9
+import com.huiju.welcome.utils.StatusUtils;
10
+import org.springframework.beans.factory.annotation.Autowired;
11
+import org.springframework.stereotype.Service;
12
+
13
+import java.net.HttpURLConnection;
14
+import java.net.URL;
15
+import java.util.Arrays;
16
+import java.util.List;
17
+
18
+@Service
19
+public class CameraServiceImpl implements ICameraService {
20
+    @Autowired
21
+    private ITaDeviceService taDeviceService;
22
+
23
+    @Override
24
+    public String dispatchPerson(TaPerson taPerson, TaDevice... devices) {
25
+        List<TaDevice> taDeviceList = null;
26
+        if (null == devices || devices.length == 0) {
27
+            QueryWrapper<TaDevice> queryWrapper = new QueryWrapper<>();
28
+            queryWrapper.eq("status",StatusUtils.Normal);
29
+            taDeviceList = taDeviceService.list(queryWrapper);
30
+        } else {
31
+            taDeviceList = Arrays.asList(devices);
32
+        }
33
+
34
+        //分发人脸到各个相机
35
+        for(TaDevice device: taDeviceList) {
36
+            try {
37
+                String api = device.getApi() + "/person/" + taPerson.getPersonId();
38
+                byte[] data = ("image=" + Encrypt.urlEncode(taPerson.getAvatar())).getBytes("UTF-8");
39
+
40
+                HttpURLConnection conn = (HttpURLConnection) new URL(api).openConnection();
41
+                conn.setRequestMethod("POST");
42
+                conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
43
+                conn.setRequestProperty("Content-Length", String.valueOf(data.length));
44
+                conn.setDoInput(true);
45
+                conn.setDoOutput(true);
46
+                conn.setUseCaches(false);
47
+                conn.getOutputStream().write(data);
48
+
49
+                if (conn.getResponseCode() == 200) {
50
+                    System.out.println("========下发人脸完成=======");
51
+                } else {
52
+                    System.out.println("========下发人脸失败=======" + conn.getResponseMessage());
53
+                }
54
+            } catch (Exception e){
55
+                e.printStackTrace();
56
+                return "连接设备(" + device.getDeviceId() + ")人脸下发服务 失败: "+ e.getMessage();
57
+            }
58
+        }
59
+
60
+        return "";
61
+    }
62
+}

+ 20
- 0
src/main/java/com.huiju.welcome/service/impl/TaCustomWordsServiceImpl.java Ver fichero

@@ -0,0 +1,20 @@
1
+package com.huiju.welcome.service.impl;
2
+
3
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
4
+import com.huiju.welcome.mapper.TaCustomWordsMapper;
5
+import com.huiju.welcome.model.TaCustomWords;
6
+import com.huiju.welcome.service.ITaCustomWordsService;
7
+import org.springframework.stereotype.Service;
8
+
9
+/**
10
+ * <p>
11
+ *  服务实现类
12
+ * </p>
13
+ *
14
+ * @author jobob
15
+ * @since 2019-03-12
16
+ */
17
+@Service
18
+public class TaCustomWordsServiceImpl extends ServiceImpl<TaCustomWordsMapper, TaCustomWords> implements ITaCustomWordsService {
19
+
20
+}

+ 73
- 11
src/main/java/com.huiju.welcome/service/impl/TaPersonServiceImpl.java Ver fichero

@@ -2,6 +2,9 @@ package com.huiju.welcome.service.impl;
2 2
 
3 3
 import com.alibaba.fastjson.JSONObject;
4 4
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
5
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
6
+import com.baomidou.mybatisplus.core.metadata.IPage;
7
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
5 8
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
6 9
 import com.huiju.welcome.mapper.TaDeviceMapper;
7 10
 import com.huiju.welcome.mapper.TaPersonMapper;
@@ -26,9 +29,7 @@ import org.springframework.web.client.RestTemplate;
26 29
 import java.io.ByteArrayOutputStream;
27 30
 import java.io.File;
28 31
 import java.io.FileInputStream;
29
-import java.util.HashMap;
30
-import java.util.List;
31
-import java.util.Map;
32
+import java.util.*;
32 33
 
33 34
 /**
34 35
  * <p>
@@ -57,20 +58,32 @@ public class TaPersonServiceImpl extends ServiceImpl<TaPersonMapper, TaPerson> i
57 58
     private String huijuFiles;
58 59
 
59 60
     @Override
60
-    public String updateAvatar(TaPerson taPerson) {
61
+    public String updateAvatar(TaPerson taPerson, TaDevice ...dev) {
61 62
         String state = "";
63
+
64
+        List<TaDevice> taDeviceList = null;
65
+        if (null == dev || dev.length == 0) {
66
+            ByteArrayOutputStream bos = new ByteArrayOutputStream(1000);
67
+            QueryWrapper<TaDevice> queryWrapper = new QueryWrapper<>();
68
+            queryWrapper.eq("status", StatusUtils.Normal);
69
+            taDeviceList = taDeviceMapper.selectList(queryWrapper);
70
+        } else {
71
+            taDeviceList = Arrays.asList(dev);
72
+        }
73
+
62 74
         try {
63 75
             //分发人脸到各个相机
64 76
             RestTemplate restTemplate = new RestTemplate();
65 77
             //获取文件流
66
-            FileInputStream fileInputStream = new FileInputStream(new File(huijuFiles + taPerson.getAvatar()));
78
+            String avatar = taPerson.getAvatar();
79
+            if (avatar.startsWith("/")) {
80
+                avatar = avatar.substring(1);
81
+            }
82
+
83
+            FileInputStream fileInputStream = new FileInputStream(new File(huijuFiles + avatar));
67 84
             byte[] byt = new byte[fileInputStream.available()];
68 85
             fileInputStream.read(byt);
69
-        
70
-            ByteArrayOutputStream bos = new ByteArrayOutputStream(1000);
71
-            QueryWrapper<TaDevice> queryWrapper = new QueryWrapper<>();
72
-            queryWrapper.eq("status", StatusUtils.Normal);
73
-            List<TaDevice> taDeviceList = taDeviceMapper.selectList(queryWrapper);
86
+
74 87
             for(TaDevice taDevice : taDeviceList){
75 88
                 String cameraUrl = taDevice.getApi() + "/video/" + taPerson.getPersonId();
76 89
                 HttpHeaders headers = new HttpHeaders();
@@ -99,7 +112,7 @@ public class TaPersonServiceImpl extends ServiceImpl<TaPersonMapper, TaPerson> i
99 112
         TaPerson taPerson = getById(id);
100 113
 
101 114
         QueryWrapper<TaVisitingLog> queryWrapper = new QueryWrapper<>();
102
-        queryWrapper.eq("person_id", id);
115
+        queryWrapper.eq("real_person", taPerson.getRealId());
103 116
         queryWrapper.orderByDesc("visite_date");
104 117
 
105 118
         List<TaVisitingLog> logs = taVisitingLogService.list(queryWrapper);
@@ -120,4 +133,53 @@ public class TaPersonServiceImpl extends ServiceImpl<TaPersonMapper, TaPerson> i
120 133
     public Map<String, String> getDetailInfo(Integer personId, String deviceId) {
121 134
         return taPersonMapper.getDetailInfo(personId,deviceId);
122 135
     }
136
+
137
+    @Override
138
+    public List<Map<String, String>> statsPerson() {
139
+        return taPersonMapper.statsPerson();
140
+    }
141
+
142
+    @Override
143
+    public boolean updateSales(TaPerson taPerson) {
144
+        UpdateWrapper<TaPerson> wrapper = new UpdateWrapper<>();
145
+        wrapper.eq("person_id", taPerson.getPersonId());
146
+        wrapper.isNull("last_sales");
147
+
148
+        return taPersonMapper.update(taPerson, wrapper) >= 0;
149
+    }
150
+
151
+    @Override
152
+    public boolean mergePerson(Integer fromPerson, TaPerson toPerson) {
153
+        // 合并基础信息
154
+        UpdateWrapper<TaPerson> wrapper = new UpdateWrapper<>();
155
+        wrapper.set("name", toPerson.getName());
156
+        wrapper.set("sex", toPerson.getSex());
157
+        wrapper.set("type_id", toPerson.getTypeId());
158
+        wrapper.set("phone", toPerson.getPhone());
159
+        wrapper.set("email", toPerson.getEmail());
160
+        wrapper.set("remark", toPerson.getRemark());
161
+        wrapper.set("real_id", toPerson.getRealId());
162
+        wrapper.set("words", toPerson.getWords());
163
+        wrapper.eq("person_id", fromPerson);
164
+
165
+        boolean success = taPersonMapper.update(new TaPerson(), wrapper) >= 0;
166
+        if (!success) return false;
167
+
168
+        wrapper.eq("person_id", toPerson.getPersonId());
169
+        success = taPersonMapper.update(new TaPerson(), wrapper) >= 0;
170
+        if (!success) return false;
171
+
172
+        // 合并访问记录
173
+        TaVisitingLog taVisitingLog = new TaVisitingLog();
174
+        taVisitingLog.setRealPerson(toPerson.getRealId());
175
+        taVisitingLog.setPersonId(fromPerson);
176
+        UpdateWrapper<TaVisitingLog> wrapper2 = new UpdateWrapper<>();
177
+        wrapper2.eq("person_id", fromPerson);
178
+        return taVisitingLogService.update(taVisitingLog, wrapper2);
179
+    }
180
+
181
+    @Override
182
+    public IPage<TaPerson> getRealPersonList(Page<TaPerson> page, Integer personId, Integer typeId, String name, String phone, String beginDate, String endDate) {
183
+        return taPersonMapper.getRealPersonList(page, personId, typeId, name, phone, beginDate, endDate);
184
+    }
123 185
 }

+ 29
- 0
src/main/java/com.huiju.welcome/service/impl/TaSnapshotPersonImpl.java Ver fichero

@@ -0,0 +1,29 @@
1
+package com.huiju.welcome.service.impl;
2
+
3
+import com.baomidou.mybatisplus.core.metadata.IPage;
4
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
5
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
6
+import com.huiju.welcome.mapper.TaSnapshotPersonMapper;
7
+import com.huiju.welcome.model.TaSnapshotPerson;
8
+import com.huiju.welcome.service.ITaSnapshotPersonService;
9
+import org.springframework.beans.factory.annotation.Autowired;
10
+import org.springframework.stereotype.Service;
11
+
12
+/**
13
+ * <p>
14
+ *  服务实现类
15
+ * </p>
16
+ *
17
+ * @author jobob
18
+ * @since 2019-03-12
19
+ */
20
+@Service
21
+public class TaSnapshotPersonImpl extends ServiceImpl<TaSnapshotPersonMapper, TaSnapshotPerson> implements ITaSnapshotPersonService {
22
+    @Autowired
23
+    private TaSnapshotPersonMapper taSnapshotPersonMapper;
24
+
25
+    @Override
26
+    public IPage<TaSnapshotPerson> getSnapshotList(Page<TaSnapshotPerson> page, String deviceId, String startDate, String endDate) {
27
+        return taSnapshotPersonMapper.getSnapshotList(page, deviceId, startDate, endDate);
28
+    }
29
+}

+ 27
- 0
src/main/java/com.huiju.welcome/service/impl/TaVisitingLogServiceImpl.java Ver fichero

@@ -1,11 +1,18 @@
1 1
 package com.huiju.welcome.service.impl;
2 2
 
3
+import com.baomidou.mybatisplus.core.metadata.IPage;
4
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
3 5
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
4 6
 import com.huiju.welcome.mapper.TaVisitingLogMapper;
5 7
 import com.huiju.welcome.model.TaVisitingLog;
6 8
 import com.huiju.welcome.service.ITaVisitingLogService;
9
+import org.springframework.beans.factory.annotation.Autowired;
7 10
 import org.springframework.stereotype.Service;
8 11
 
12
+import java.time.LocalDateTime;
13
+import java.util.List;
14
+import java.util.Map;
15
+
9 16
 /**
10 17
  * <p>
11 18
  *  服务实现类
@@ -16,4 +23,24 @@ import org.springframework.stereotype.Service;
16 23
  */
17 24
 @Service
18 25
 public class TaVisitingLogServiceImpl extends ServiceImpl<TaVisitingLogMapper, TaVisitingLog> implements ITaVisitingLogService {
26
+
27
+    @Autowired
28
+    private TaVisitingLogMapper taVisitingLogMapper;
29
+
30
+    public List<Map<String, String>> getVisitingDailyAmount(LocalDateTime startDate, LocalDateTime endDate) {
31
+        return taVisitingLogMapper.getVisitingDailyAmount(startDate, endDate);
32
+    }
33
+
34
+    @Override
35
+    public Long getRegularClientTodayAmount() {
36
+        List<Map<String, Long>> res = taVisitingLogMapper.getRegularClientTodayAmount();
37
+        if (null == res || res.size() == 0) return 0l;
38
+
39
+        return res.get(0).get("total");
40
+    }
41
+
42
+    @Override
43
+    public IPage<TaVisitingLog> getVisitingList(Page<TaVisitingLog> page, String startDate, String endDate, Integer personId) {
44
+        return taVisitingLogMapper.getVisitingList(page, startDate, endDate, personId);
45
+    }
19 46
 }

+ 0
- 33
src/main/java/com.huiju.welcome/utils/AMap.java Ver fichero

@@ -1,33 +0,0 @@
1
-package com.huiju.welcome.utils;
2
-
3
-import org.springframework.beans.factory.annotation.Value;
4
-import org.springframework.boot.context.properties.ConfigurationProperties;
5
-import org.springframework.http.HttpMethod;
6
-import org.springframework.stereotype.Component;
7
-import org.springframework.web.client.RestTemplate;
8
-
9
-@Component
10
-@ConfigurationProperties(prefix = "file")
11
-public class AMap {
12
-    @Value("${amap.key}")
13
-    private String key;
14
-
15
-    @Value("${amap.weather.api}")
16
-    private String url;
17
-
18
-    @Value("${amap.weather.method}")
19
-    private String method;
20
-
21
-    @Value("${amap.weather.city}")
22
-    private String city;
23
-
24
-    @Value("${amap.weather.extensions}")
25
-    private String extensions;
26
-
27
-    public String weather() {
28
-        RestTemplate restTemplate = new RestTemplate();
29
-        String uri = url + "?key=" + key + "&city="+city+"&extensions="+ extensions;
30
-
31
-        return restTemplate.exchange(uri,HttpMethod.resolve(method), null,String.class).getBody();
32
-    }
33
-}

+ 0
- 2
src/main/java/com.huiju.welcome/utils/XFYun.java Ver fichero

@@ -6,9 +6,7 @@ import org.springframework.beans.factory.annotation.Value;
6 6
 import org.springframework.boot.context.properties.ConfigurationProperties;
7 7
 import org.springframework.stereotype.Component;
8 8
 
9
-import java.io.ByteArrayOutputStream;
10 9
 import java.io.File;
11
-import java.io.IOException;
12 10
 import java.io.InputStream;
13 11
 import java.net.HttpURLConnection;
14 12
 import java.net.URL;

+ 7
- 1
src/main/resources/application.yml Ver fichero

@@ -1,7 +1,7 @@
1 1
 spring:
2 2
   datasource:
3 3
     driver-class-name: com.mysql.cj.jdbc.Driver
4
-    url: jdbc:mysql://47.101.36.130:3306/welcome2.0?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&serverTimezone=GMT%2B8
4
+    url: jdbc:mysql://127.0.0.1:3306/welcome3?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&serverTimezone=GMT%2B8
5 5
     username: welcome
6 6
     password: welcome
7 7
   servlet:
@@ -18,6 +18,12 @@ mybatis-plus:
18 18
     call-setters-on-nulls: true
19 19
   mapper-locations: classpath:mapper/*.xml
20 20
 
21
+# 科大讯飞语音合成
22
+xfyun:
23
+  huijuapi: http://ycapi.jcjyhn.com/welcome-api/
24
+huiju:
25
+  files: E:\\files\\
26
+
21 27
 # 阿里云市场 - 免费天气
22 28
 # https://market.aliyun.com/products/56928004/cmapi014123.html?spm=5176.2020520132.101.2.34e17218FhSo5V#sku=yuncode812300000
23 29
 saweather:

+ 1
- 1
src/main/resources/mapper/SysUserMapper.xml Ver fichero

@@ -1,5 +1,5 @@
1 1
 <?xml version="1.0" encoding="UTF-8"?>
2 2
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
3
-<mapper namespace="com.welcome.huiju.mapper.SysUserMapper">
3
+<mapper namespace="com.huiju.welcome.mapper.SysUserMapper">
4 4
 
5 5
 </mapper>

+ 1
- 1
src/main/resources/mapper/TaContentLibMapper.xml Ver fichero

@@ -1,5 +1,5 @@
1 1
 <?xml version="1.0" encoding="UTF-8"?>
2 2
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
3
-<mapper namespace="com.welcome.huiju.mapper.TaContentLibMapper">
3
+<mapper namespace="com.huiju.welcome.mapper.TaContentLibMapper">
4 4
 
5 5
 </mapper>

+ 4
- 0
src/main/resources/mapper/TaCustomWordsMapper.xml Ver fichero

@@ -0,0 +1,4 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
3
+<mapper namespace="com.huiju.welcome.mapper.TaCustomWordsMapper">
4
+</mapper>

+ 1
- 1
src/main/resources/mapper/TaDeviceMapper.xml Ver fichero

@@ -1,5 +1,5 @@
1 1
 <?xml version="1.0" encoding="UTF-8"?>
2 2
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
3
-<mapper namespace="com.welcome.huiju.mapper.TaDeviceMapper">
3
+<mapper namespace="com.huiju.welcome.mapper.TaDeviceMapper">
4 4
 
5 5
 </mapper>

+ 2
- 2
src/main/resources/mapper/TaFirstpageContentMapper.xml Ver fichero

@@ -1,8 +1,8 @@
1 1
 <?xml version="1.0" encoding="UTF-8"?>
2 2
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
3
-<mapper namespace="com.welcome.huiju.mapper.TaFirstpageContentMapper">
3
+<mapper namespace="com.huiju.welcome.mapper.TaFirstpageContentMapper">
4 4
 
5
-    <select id="getFirstpageContent" resultType="com.welcome.huiju.model.TaContentLib">
5
+    <select id="getFirstpageContent" resultType="com.huiju.welcome.model.TaContentLib">
6 6
         SELECT
7 7
             t.content,
8 8
             t.content_type AS contentType,

+ 1
- 1
src/main/resources/mapper/TaFirstpageMapper.xml Ver fichero

@@ -1,5 +1,5 @@
1 1
 <?xml version="1.0" encoding="UTF-8"?>
2 2
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
3
-<mapper namespace="com.welcome.huiju.mapper.TaFirstpageMapper">
3
+<mapper namespace="com.huiju.welcome.mapper.TaFirstpageMapper">
4 4
 
5 5
 </mapper>

+ 2
- 2
src/main/resources/mapper/TaFirstpageNoticeMapper.xml Ver fichero

@@ -1,8 +1,8 @@
1 1
 <?xml version="1.0" encoding="UTF-8"?>
2 2
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
3
-<mapper namespace="com.welcome.huiju.mapper.TaFirstpageNoticeMapper">
3
+<mapper namespace="com.huiju.welcome.mapper.TaFirstpageNoticeMapper">
4 4
 
5
-    <select id="getFirstpageNotice" resultType="com.welcome.huiju.model.TaNotice">
5
+    <select id="getFirstpageNotice" resultType="com.huiju.welcome.model.TaNotice">
6 6
         SELECT
7 7
             t.content,
8 8
             t.create_date AS createDate,

+ 1
- 1
src/main/resources/mapper/TaImagesMapper.xml Ver fichero

@@ -1,5 +1,5 @@
1 1
 <?xml version="1.0" encoding="UTF-8"?>
2 2
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
3
-<mapper namespace="com.welcome.huiju.mapper.TaImagesMapper">
3
+<mapper namespace="com.huiju.welcome.mapper.TaImagesMapper">
4 4
 
5 5
 </mapper>

+ 1
- 1
src/main/resources/mapper/TaNoticeMapper.xml Ver fichero

@@ -1,5 +1,5 @@
1 1
 <?xml version="1.0" encoding="UTF-8"?>
2 2
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
3
-<mapper namespace="com.welcome.huiju.mapper.TaNoticeMapper">
3
+<mapper namespace="com.huiju.welcome.mapper.TaNoticeMapper">
4 4
 
5 5
 </mapper>

+ 49
- 2
src/main/resources/mapper/TaPersonMapper.xml Ver fichero

@@ -1,7 +1,7 @@
1 1
 <?xml version="1.0" encoding="UTF-8"?>
2 2
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
3
-<mapper namespace="com.welcome.huiju.mapper.TaPersonMapper">
4
-    <update id="updatePersonAvatar" statementType="PREPARED" parameterType="com.welcome.huiju.model.TaPerson">
3
+<mapper namespace="com.huiju.welcome.mapper.TaPersonMapper">
4
+    <update id="updatePersonAvatar" statementType="PREPARED" parameterType="com.huiju.welcome.model.TaPerson">
5 5
         UPDATE ta_person
6 6
         SET avatar = #{avatar}
7 7
         WHERE
@@ -19,4 +19,51 @@
19 19
         WHERE
20 20
             t.person_id = #{personId}
21 21
     </select>
22
+
23
+    <select id="statsPerson" resultType="Map">
24
+        SELECT
25
+            count(distinct t.real_id) AS total,
26
+            sum(
27
+                IF (
28
+                    to_days(t.create_date) = to_days(now())
29
+                    OR to_days(t.last_visite_date) = to_days(now()),
30
+                    1,
31
+                    0
32
+                )
33
+            ) AS today
34
+        FROM
35
+            `ta_person` t
36
+        JOIN ta_person_type s USING (type_id)
37
+        WHERE
38
+            s.need_show = 1
39
+    </select>
40
+
41
+    <select id="getRealPersonList" resultType="com.huiju.welcome.model.TaPerson">
42
+        SELECT t.*
43
+        FROM ta_person t
44
+        JOIN ta_person s USING (person_id)
45
+        <where>
46
+            <if test='personId != null'>
47
+                t.person_id = #{personId}
48
+            </if>
49
+            <if test='typeId != null'>
50
+                AND t.type_id = #{typeId}
51
+            </if>
52
+            <if test='name != null'>
53
+                AND t.name like concat('%', #{name}, '%')
54
+            </if>
55
+            <if test='phone != null'>
56
+                AND t.phone = #{phone}
57
+            </if>
58
+            <if test='beginDate != null'>
59
+                AND t.last_visite_date &gt;= str_to_date(#{beginDate}, '%Y-%m-%dT%T')
60
+            </if>
61
+            <if test='endDate != null'>
62
+                AND t.last_visite_date &lt;= str_to_date(#{endDate}, '%Y-%m-%dT%T')
63
+            </if>
64
+        </where>
65
+        GROUP BY t.real_id
66
+        ORDER BY t.last_visite_date DESC
67
+    </select>
68
+
22 69
 </mapper>

+ 1
- 1
src/main/resources/mapper/TaPersonTypeMapper.xml Ver fichero

@@ -1,5 +1,5 @@
1 1
 <?xml version="1.0" encoding="UTF-8"?>
2 2
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
3
-<mapper namespace="com.welcome.huiju.mapper.TaPersonTypeMapper">
3
+<mapper namespace="com.huiju.welcome.mapper.TaPersonTypeMapper">
4 4
 
5 5
 </mapper>

+ 25
- 0
src/main/resources/mapper/TaSnapshotPerson.xml Ver fichero

@@ -0,0 +1,25 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
3
+<mapper namespace="com.huiju.welcome.mapper.TaSnapshotPersonMapper">
4
+    <select id="getSnapshotList" resultType="com.huiju.welcome.model.TaSnapshotPerson">
5
+        SELECT
6
+            t.*,
7
+            m.`name` AS matchName,
8
+            m.avatar AS matchAvatar
9
+        FROM ta_snapshot_person t
10
+        LEFT JOIN ta_person s ON t.match_person = s.person_id
11
+        LEFT JOIN ta_person m on s.real_id = m.person_id
12
+        <where>
13
+            <if test="null != deviceId">
14
+                t.device_id = #{deviceId}
15
+            </if>
16
+            <if test="null != startDate">
17
+                AND t.create_date &gt;= str_to_date(#{startDate}, '%Y-%m-%dT%T')
18
+            </if>
19
+            <if test="null != endDate">
20
+                AND t.create_date &lt;= str_to_date(#{endDate}, '%Y-%m-%dT%T')
21
+            </if>
22
+        </where>
23
+        ORDER BY t.create_date desc
24
+    </select>
25
+</mapper>

+ 1
- 1
src/main/resources/mapper/TaSyncLogMapper.xml Ver fichero

@@ -1,5 +1,5 @@
1 1
 <?xml version="1.0" encoding="UTF-8"?>
2 2
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
3
-<mapper namespace="com.welcome.huiju.mapper.TaSyncLogMapper">
3
+<mapper namespace="com.huiju.welcome.mapper.TaSyncLogMapper">
4 4
 
5 5
 </mapper>

+ 78
- 1
src/main/resources/mapper/TaVisitingLogMapper.xml Ver fichero

@@ -1,5 +1,82 @@
1 1
 <?xml version="1.0" encoding="UTF-8"?>
2 2
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
3
-<mapper namespace="com.welcome.huiju.mapper.TaVisitingLogMapper">
3
+<mapper namespace="com.huiju.welcome.mapper.TaVisitingLogMapper">
4
+    <select id="getVisitingList" resultType="com.huiju.welcome.model.TaVisitingLog">
5
+        SELECT
6
+            t.log_id,
7
+            t.person_id,
8
+            t.visite_date,
9
+            t.car_style,
10
+            t.license_plate_num,
11
+            t.channel,
12
+            t.remark,
13
+            t.device_id,
14
+            t.device_name,
15
+            t.avatar,
16
+            t.visit_num,
17
+            t.visit_purpose,
18
+            t.sales_id,
19
+            t.sales_name,
20
+            t.real_person,
21
+            t.intention,
22
+            s.`name`
23
+        FROM
24
+            ta_visiting_log t
25
+        LEFT JOIN ta_person s ON t.real_person = s.real_id
26
+        <where>
27
+            <if test="null != personId">
28
+                t.real_person = #{personId}
29
+            </if>
30
+            <if test="null != startDate">
31
+                AND t.visite_date &gt;= str_to_date(#{startDate}, '%Y-%m-%dT%T')
32
+            </if>
33
+            <if test="null != endDate">
34
+                AND t.visite_date &lt;= str_to_date(#{endDate}, '%Y-%m-%dT%T')
35
+            </if>
36
+        </where>
37
+        ORDER BY t.visite_date DESC
38
+    </select>
4 39
 
40
+    <select id="getVisitingDailyAmount" resultType="map">
41
+        SELECT
42
+          t.dt as visiteDate,
43
+          sum(IF(s.person_id IS NULL, 0, 1)) as amount
44
+        FROM
45
+          (
46
+            SELECT
47
+              DATE_FORMAT(
48
+                DATE_ADD(
49
+                  #{startDate},
50
+                  INTERVAL rownum DAY
51
+                ),
52
+                '%Y-%m-%d'
53
+            ) AS dt
54
+            FROM sequence
55
+            WHERE rownum &lt; DATEDIFF(#{endDate}, #{startDate}) + 1
56
+        ) t
57
+        LEFT JOIN ta_visiting_log s ON t.dt = DATE_FORMAT(s.visite_date, '%Y-%m-%d')
58
+        GROUP BY    t.dt
59
+    </select>
60
+
61
+    <select id="getRegularClientTodayAmount" resultType="map">
62
+        SELECT
63
+            count(DISTINCT a.real_person) AS total
64
+        FROM
65
+            (
66
+                SELECT
67
+                    t.real_person,
68
+                    t.person_id,
69
+                    count(*)
70
+                FROM
71
+                    ta_visiting_log t
72
+                JOIN ta_person s ON t.person_id = s.person_id
73
+                WHERE
74
+                    TO_DAYS(s.last_visite_date) = TO_DAYS(now())
75
+                GROUP BY
76
+                    t.real_person,
77
+                    TO_DAYS(t.visite_date)
78
+                HAVING
79
+                    count(*) > 1
80
+            ) a
81
+    </select>
5 82
 </mapper>

+ 1
- 2
src/main/resources/mapper/TaVisitingWordsMapper.xml Ver fichero

@@ -1,5 +1,4 @@
1 1
 <?xml version="1.0" encoding="UTF-8"?>
2 2
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
3
-<mapper namespace="com.welcome.huiju.mapper.TaVisitingWordsMapper">
4
-
3
+<mapper namespace="com.huiju.welcome.mapper.TaVisitingWordsMapper">
5 4
 </mapper>

+ 23
- 1
target/classes/application.yml Ver fichero

@@ -1,7 +1,7 @@
1 1
 spring:
2 2
   datasource:
3 3
     driver-class-name: com.mysql.cj.jdbc.Driver
4
-    url: jdbc:mysql://47.101.36.130:3306/welcome2.0?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&serverTimezone=GMT%2B8
4
+    url: jdbc:mysql://127.0.0.1:3306/welcome3?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&serverTimezone=GMT%2B8
5 5
     username: welcome
6 6
     password: welcome
7 7
   servlet:
@@ -17,3 +17,25 @@ mybatis-plus:
17 17
     log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
18 18
     call-setters-on-nulls: true
19 19
   mapper-locations: classpath:mapper/*.xml
20
+
21
+# 科大讯飞语音合成
22
+xfyun:
23
+  huijuapi: http://ycapi.jcjyhn.com/welcome-api/
24
+huiju:
25
+  files: E:\\files\\
26
+
27
+# 阿里云市场 - 免费天气
28
+# https://market.aliyun.com/products/56928004/cmapi014123.html?spm=5176.2020520132.101.2.34e17218FhSo5V#sku=yuncode812300000
29
+saweather:
30
+  appcode: 7be3addb3f79424abe200778db8f9642
31
+  api: http://saweather.market.alicloudapi.com/spot-to-weather
32
+  method: GET
33
+  # 地区
34
+  city: 南京浦口
35
+  # 穿衣指数等 指导数据
36
+  needIndex: 1
37
+  # 其他
38
+  need3HourForcast: 0
39
+  needAlarm: 0
40
+  needHourData: 0
41
+  needMoreDay: 0

+ 1
- 1
target/classes/mapper/SysUserMapper.xml Ver fichero

@@ -1,5 +1,5 @@
1 1
 <?xml version="1.0" encoding="UTF-8"?>
2 2
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
3
-<mapper namespace="com.welcome.huiju.mapper.SysUserMapper">
3
+<mapper namespace="com.huiju.welcome.mapper.SysUserMapper">
4 4
 
5 5
 </mapper>

+ 1
- 1
target/classes/mapper/TaContentLibMapper.xml Ver fichero

@@ -1,5 +1,5 @@
1 1
 <?xml version="1.0" encoding="UTF-8"?>
2 2
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
3
-<mapper namespace="com.welcome.huiju.mapper.TaContentLibMapper">
3
+<mapper namespace="com.huiju.welcome.mapper.TaContentLibMapper">
4 4
 
5 5
 </mapper>

+ 1
- 1
target/classes/mapper/TaDeviceMapper.xml Ver fichero

@@ -1,5 +1,5 @@
1 1
 <?xml version="1.0" encoding="UTF-8"?>
2 2
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
3
-<mapper namespace="com.welcome.huiju.mapper.TaDeviceMapper">
3
+<mapper namespace="com.huiju.welcome.mapper.TaDeviceMapper">
4 4
 
5 5
 </mapper>

+ 2
- 2
target/classes/mapper/TaFirstpageContentMapper.xml Ver fichero

@@ -1,8 +1,8 @@
1 1
 <?xml version="1.0" encoding="UTF-8"?>
2 2
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
3
-<mapper namespace="com.welcome.huiju.mapper.TaFirstpageContentMapper">
3
+<mapper namespace="com.huiju.welcome.mapper.TaFirstpageContentMapper">
4 4
 
5
-    <select id="getFirstpageContent" resultType="com.welcome.huiju.model.TaContentLib">
5
+    <select id="getFirstpageContent" resultType="com.huiju.welcome.model.TaContentLib">
6 6
         SELECT
7 7
             t.content,
8 8
             t.content_type AS contentType,

+ 1
- 1
target/classes/mapper/TaFirstpageMapper.xml Ver fichero

@@ -1,5 +1,5 @@
1 1
 <?xml version="1.0" encoding="UTF-8"?>
2 2
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
3
-<mapper namespace="com.welcome.huiju.mapper.TaFirstpageMapper">
3
+<mapper namespace="com.huiju.welcome.mapper.TaFirstpageMapper">
4 4
 
5 5
 </mapper>

+ 2
- 2
target/classes/mapper/TaFirstpageNoticeMapper.xml Ver fichero

@@ -1,8 +1,8 @@
1 1
 <?xml version="1.0" encoding="UTF-8"?>
2 2
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
3
-<mapper namespace="com.welcome.huiju.mapper.TaFirstpageNoticeMapper">
3
+<mapper namespace="com.huiju.welcome.mapper.TaFirstpageNoticeMapper">
4 4
 
5
-    <select id="getFirstpageNotice" resultType="com.welcome.huiju.model.TaNotice">
5
+    <select id="getFirstpageNotice" resultType="com.huiju.welcome.model.TaNotice">
6 6
         SELECT
7 7
             t.content,
8 8
             t.create_date AS createDate,

+ 1
- 1
target/classes/mapper/TaImagesMapper.xml Ver fichero

@@ -1,5 +1,5 @@
1 1
 <?xml version="1.0" encoding="UTF-8"?>
2 2
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
3
-<mapper namespace="com.welcome.huiju.mapper.TaImagesMapper">
3
+<mapper namespace="com.huiju.welcome.mapper.TaImagesMapper">
4 4
 
5 5
 </mapper>

+ 1
- 1
target/classes/mapper/TaNoticeMapper.xml Ver fichero

@@ -1,5 +1,5 @@
1 1
 <?xml version="1.0" encoding="UTF-8"?>
2 2
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
3
-<mapper namespace="com.welcome.huiju.mapper.TaNoticeMapper">
3
+<mapper namespace="com.huiju.welcome.mapper.TaNoticeMapper">
4 4
 
5 5
 </mapper>

+ 49
- 2
target/classes/mapper/TaPersonMapper.xml Ver fichero

@@ -1,7 +1,7 @@
1 1
 <?xml version="1.0" encoding="UTF-8"?>
2 2
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
3
-<mapper namespace="com.welcome.huiju.mapper.TaPersonMapper">
4
-    <update id="updatePersonAvatar" statementType="PREPARED" parameterType="com.welcome.huiju.model.TaPerson">
3
+<mapper namespace="com.huiju.welcome.mapper.TaPersonMapper">
4
+    <update id="updatePersonAvatar" statementType="PREPARED" parameterType="com.huiju.welcome.model.TaPerson">
5 5
         UPDATE ta_person
6 6
         SET avatar = #{avatar}
7 7
         WHERE
@@ -19,4 +19,51 @@
19 19
         WHERE
20 20
             t.person_id = #{personId}
21 21
     </select>
22
+
23
+    <select id="statsPerson" resultType="Map">
24
+        SELECT
25
+            count(distinct t.real_id) AS total,
26
+            sum(
27
+                IF (
28
+                    to_days(t.create_date) = to_days(now())
29
+                    OR to_days(t.last_visite_date) = to_days(now()),
30
+                    1,
31
+                    0
32
+                )
33
+            ) AS today
34
+        FROM
35
+            `ta_person` t
36
+        JOIN ta_person_type s USING (type_id)
37
+        WHERE
38
+            s.need_show = 1
39
+    </select>
40
+
41
+    <select id="getRealPersonList" resultType="com.huiju.welcome.model.TaPerson">
42
+        SELECT t.*
43
+        FROM ta_person t
44
+        JOIN ta_person s USING (person_id)
45
+        <where>
46
+            <if test='personId != null'>
47
+                t.person_id = #{personId}
48
+            </if>
49
+            <if test='typeId != null'>
50
+                AND t.type_id = #{typeId}
51
+            </if>
52
+            <if test='name != null'>
53
+                AND t.name like concat('%', #{name}, '%')
54
+            </if>
55
+            <if test='phone != null'>
56
+                AND t.phone = #{phone}
57
+            </if>
58
+            <if test='beginDate != null'>
59
+                AND t.last_visite_date &gt;= str_to_date(#{beginDate}, '%Y-%m-%dT%T')
60
+            </if>
61
+            <if test='endDate != null'>
62
+                AND t.last_visite_date &lt;= str_to_date(#{endDate}, '%Y-%m-%dT%T')
63
+            </if>
64
+        </where>
65
+        GROUP BY t.real_id
66
+        ORDER BY t.last_visite_date DESC
67
+    </select>
68
+
22 69
 </mapper>

+ 1
- 1
target/classes/mapper/TaPersonTypeMapper.xml Ver fichero

@@ -1,5 +1,5 @@
1 1
 <?xml version="1.0" encoding="UTF-8"?>
2 2
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
3
-<mapper namespace="com.welcome.huiju.mapper.TaPersonTypeMapper">
3
+<mapper namespace="com.huiju.welcome.mapper.TaPersonTypeMapper">
4 4
 
5 5
 </mapper>

+ 1
- 1
target/classes/mapper/TaSyncLogMapper.xml Ver fichero

@@ -1,5 +1,5 @@
1 1
 <?xml version="1.0" encoding="UTF-8"?>
2 2
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
3
-<mapper namespace="com.welcome.huiju.mapper.TaSyncLogMapper">
3
+<mapper namespace="com.huiju.welcome.mapper.TaSyncLogMapper">
4 4
 
5 5
 </mapper>

+ 78
- 1
target/classes/mapper/TaVisitingLogMapper.xml Ver fichero

@@ -1,5 +1,82 @@
1 1
 <?xml version="1.0" encoding="UTF-8"?>
2 2
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
3
-<mapper namespace="com.welcome.huiju.mapper.TaVisitingLogMapper">
3
+<mapper namespace="com.huiju.welcome.mapper.TaVisitingLogMapper">
4
+    <select id="getVisitingList" resultType="com.huiju.welcome.model.TaVisitingLog">
5
+        SELECT
6
+            t.log_id,
7
+            t.person_id,
8
+            t.visite_date,
9
+            t.car_style,
10
+            t.license_plate_num,
11
+            t.channel,
12
+            t.remark,
13
+            t.device_id,
14
+            t.device_name,
15
+            t.avatar,
16
+            t.visit_num,
17
+            t.visit_purpose,
18
+            t.sales_id,
19
+            t.sales_name,
20
+            t.real_person,
21
+            t.intention,
22
+            s.`name`
23
+        FROM
24
+            ta_visiting_log t
25
+        LEFT JOIN ta_person s ON t.real_person = s.real_id
26
+        <where>
27
+            <if test="null != personId">
28
+                t.real_person = #{personId}
29
+            </if>
30
+            <if test="null != startDate">
31
+                AND t.visite_date &gt;= str_to_date(#{startDate}, '%Y-%m-%dT%T')
32
+            </if>
33
+            <if test="null != endDate">
34
+                AND t.visite_date &lt;= str_to_date(#{endDate}, '%Y-%m-%dT%T')
35
+            </if>
36
+        </where>
37
+        ORDER BY t.visite_date DESC
38
+    </select>
4 39
 
40
+    <select id="getVisitingDailyAmount" resultType="map">
41
+        SELECT
42
+          t.dt as visiteDate,
43
+          sum(IF(s.person_id IS NULL, 0, 1)) as amount
44
+        FROM
45
+          (
46
+            SELECT
47
+              DATE_FORMAT(
48
+                DATE_ADD(
49
+                  #{startDate},
50
+                  INTERVAL rownum DAY
51
+                ),
52
+                '%Y-%m-%d'
53
+            ) AS dt
54
+            FROM sequence
55
+            WHERE rownum &lt; DATEDIFF(#{endDate}, #{startDate}) + 1
56
+        ) t
57
+        LEFT JOIN ta_visiting_log s ON t.dt = DATE_FORMAT(s.visite_date, '%Y-%m-%d')
58
+        GROUP BY    t.dt
59
+    </select>
60
+
61
+    <select id="getRegularClientTodayAmount" resultType="map">
62
+        SELECT
63
+            count(DISTINCT a.real_person) AS total
64
+        FROM
65
+            (
66
+                SELECT
67
+                    t.real_person,
68
+                    t.person_id,
69
+                    count(*)
70
+                FROM
71
+                    ta_visiting_log t
72
+                JOIN ta_person s ON t.person_id = s.person_id
73
+                WHERE
74
+                    TO_DAYS(s.last_visite_date) = TO_DAYS(now())
75
+                GROUP BY
76
+                    t.real_person,
77
+                    TO_DAYS(t.visite_date)
78
+                HAVING
79
+                    count(*) > 1
80
+            ) a
81
+    </select>
5 82
 </mapper>

+ 1
- 2
target/classes/mapper/TaVisitingWordsMapper.xml Ver fichero

@@ -1,5 +1,4 @@
1 1
 <?xml version="1.0" encoding="UTF-8"?>
2 2
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
3
-<mapper namespace="com.welcome.huiju.mapper.TaVisitingWordsMapper">
4
-
3
+<mapper namespace="com.huiju.welcome.mapper.TaVisitingWordsMapper">
5 4
 </mapper>

+ 95
- 0
target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst Ver fichero

@@ -0,0 +1,95 @@
1
+com\huiju\welcome\controller\TaVisitingWordsController.class
2
+com\huiju\welcome\service\impl\TaNoticeServiceImpl.class
3
+com\huiju\welcome\config\AccessConfig.class
4
+com\huiju\welcome\service\impl\TaVisitingLogServiceImpl.class
5
+com\huiju\welcome\controller\CameraController.class
6
+com\huiju\welcome\service\ITaPersonTypeService.class
7
+com\huiju\welcome\MainbizApplication.class
8
+com\huiju\welcome\service\impl\TaSyncLogServiceImpl.class
9
+com\huiju\welcome\config\MybatisPlusConfig.class
10
+com\huiju\welcome\controller\TaNoticeController.class
11
+com\huiju\welcome\mapper\TaPersonMapper.class
12
+com\huiju\welcome\model\SysParam.class
13
+com\huiju\welcome\service\impl\SysUserServiceImpl.class
14
+com\huiju\welcome\controller\TaSnapshotPersonController.class
15
+com\huiju\welcome\service\ITaDeviceService.class
16
+com\huiju\welcome\common\base\ResponseBean.class
17
+com\huiju\welcome\utils\StatusUtils.class
18
+com\huiju\welcome\model\TaNotice.class
19
+com\huiju\welcome\interceptor\AccessInterceptor.class
20
+com\huiju\welcome\mapper\SysUserMapper.class
21
+com\huiju\welcome\model\TaVisitingLog.class
22
+com\huiju\welcome\mapper\TaSnapshotPersonMapper.class
23
+com\huiju\welcome\service\impl\TaSnapshotPersonImpl.class
24
+com\huiju\welcome\controller\TaVisitingLogController.class
25
+com\huiju\welcome\model\TaVisitingWords.class
26
+com\huiju\welcome\model\TaFirstpage.class
27
+com\huiju\welcome\model\TaSnapshotPerson.class
28
+com\huiju\welcome\service\ITaFirstpageService.class
29
+com\huiju\welcome\controller\SysUserController.class
30
+com\huiju\welcome\service\impl\TaVisitingWordsServiceImpl.class
31
+com\huiju\welcome\service\ITaCustomWordsService.class
32
+com\huiju\welcome\controller\TaFirstpageController.class
33
+com\huiju\welcome\model\TaSyncLog.class
34
+com\huiju\welcome\utils\Encrypt.class
35
+com\huiju\welcome\service\impl\TaDeviceServiceImpl.class
36
+com\huiju\welcome\model\TaPersonType.class
37
+com\huiju\welcome\common\WebSocketServer.class
38
+com\huiju\welcome\controller\TaPersonTypeController.class
39
+com\huiju\welcome\service\impl\TaContentLibServiceImpl.class
40
+com\huiju\welcome\service\impl\TaCustomWordsServiceImpl.class
41
+com\huiju\welcome\service\ISysUserService.class
42
+com\huiju\welcome\service\ITaFirstpageNoticeService.class
43
+com\huiju\welcome\service\ITaContentLibService.class
44
+com\huiju\welcome\service\ISysParamService.class
45
+com\huiju\welcome\service\ITaNoticeService.class
46
+com\huiju\welcome\mapper\TaFirstpageContentMapper.class
47
+com\huiju\welcome\controller\TaFirstpageContentController.class
48
+com\huiju\welcome\service\ITaSnapshotPersonService.class
49
+com\huiju\welcome\common\base\BaseController.class
50
+com\huiju\welcome\utils\XFYun.class
51
+com\huiju\welcome\service\ITaSyncLogService.class
52
+com\huiju\welcome\mapper\TaFirstpageMapper.class
53
+com\huiju\welcome\service\ITaFirstpageContentService.class
54
+com\huiju\welcome\mapper\TaVisitingLogMapper.class
55
+com\huiju\welcome\model\TaContentLib.class
56
+com\huiju\welcome\controller\AudioController.class
57
+com\huiju\welcome\mapper\SysParamMapper.class
58
+com\huiju\welcome\common\uuid\IdGen$IdGenHolder.class
59
+com\huiju\welcome\mapper\TaFirstpageNoticeMapper.class
60
+com\huiju\welcome\model\TaPerson.class
61
+com\huiju\welcome\model\TaCustomWords.class
62
+com\huiju\welcome\model\TaFirstpageNotice.class
63
+com\huiju\welcome\controller\ImgController.class
64
+com\huiju\welcome\config\WebSocketConfig.class
65
+com\huiju\welcome\service\impl\TaFirstpageServiceImpl.class
66
+com\huiju\welcome\mapper\TaCustomWordsMapper.class
67
+com\huiju\welcome\mapper\TaContentLibMapper.class
68
+com\huiju\welcome\common\uuid\IdGen.class
69
+com\huiju\welcome\mapper\TaDeviceMapper.class
70
+com\huiju\welcome\model\TaFirstpageContent.class
71
+com\huiju\welcome\service\impl\TaFirstpageContentServiceImpl.class
72
+com\huiju\welcome\utils\FileUtil.class
73
+com\huiju\welcome\service\ICameraService.class
74
+com\huiju\welcome\mapper\TaVisitingWordsMapper.class
75
+com\huiju\welcome\service\impl\TaPersonServiceImpl.class
76
+com\huiju\welcome\service\impl\CameraServiceImpl.class
77
+com\huiju\welcome\service\impl\TaFirstpageNoticeServiceImpl.class
78
+com\huiju\welcome\model\TaDevice.class
79
+com\huiju\welcome\service\ITaPersonService.class
80
+com\huiju\welcome\service\impl\TaPersonTypeServiceImpl.class
81
+com\huiju\welcome\controller\TaContentLibController.class
82
+com\huiju\welcome\mapper\TaSyncLogMapper.class
83
+com\huiju\welcome\controller\TaDeviceController.class
84
+com\huiju\welcome\service\impl\SysParamServiceImpl.class
85
+com\huiju\welcome\utils\SAWeather.class
86
+com\huiju\welcome\controller\TaPersonController.class
87
+com\huiju\welcome\controller\TaSyncLogController.class
88
+com\huiju\welcome\service\ITaVisitingLogService.class
89
+com\huiju\welcome\model\TaImages.class
90
+com\huiju\welcome\controller\SysParamController.class
91
+com\huiju\welcome\service\ITaVisitingWordsService.class
92
+com\huiju\welcome\model\SysUser.class
93
+com\huiju\welcome\mapper\TaPersonTypeMapper.class
94
+com\huiju\welcome\mapper\TaNoticeMapper.class
95
+com\huiju\welcome\controller\TaFirstpageNoticeController.class

+ 11
- 1
target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst Ver fichero

@@ -4,12 +4,15 @@ E:\JavaProjects\welcome3.0\service\src\main\java\com.huiju.welcome\controller\Ta
4 4
 E:\JavaProjects\welcome3.0\service\src\main\java\com.huiju.welcome\service\impl\TaFirstpageContentServiceImpl.java
5 5
 E:\JavaProjects\welcome3.0\service\src\main\java\com.huiju.welcome\controller\TaFirstpageNoticeController.java
6 6
 E:\JavaProjects\welcome3.0\service\src\main\java\com.huiju.welcome\controller\TaNoticeController.java
7
+E:\JavaProjects\welcome3.0\service\src\main\java\com.huiju.welcome\mapper\TaCustomWordsMapper.java
8
+E:\JavaProjects\welcome3.0\service\src\main\java\com.huiju.welcome\service\ICameraService.java
7 9
 E:\JavaProjects\welcome3.0\service\src\main\java\com.huiju.welcome\service\ITaPersonService.java
8 10
 E:\JavaProjects\welcome3.0\service\src\main\java\com.huiju.welcome\mapper\TaNoticeMapper.java
9 11
 E:\JavaProjects\welcome3.0\service\src\main\java\com.huiju.welcome\MainbizApplication.java
10 12
 E:\JavaProjects\welcome3.0\service\src\main\java\com.huiju.welcome\service\impl\TaNoticeServiceImpl.java
11 13
 E:\JavaProjects\welcome3.0\service\src\main\java\com.huiju.welcome\mapper\TaFirstpageMapper.java
12 14
 E:\JavaProjects\welcome3.0\service\src\main\java\com.huiju.welcome\model\TaImages.java
15
+E:\JavaProjects\welcome3.0\service\src\main\java\com.huiju.welcome\mapper\TaSnapshotPersonMapper.java
13 16
 E:\JavaProjects\welcome3.0\service\src\main\java\com.huiju.welcome\service\impl\TaVisitingLogServiceImpl.java
14 17
 E:\JavaProjects\welcome3.0\service\src\main\java\com.huiju.welcome\mapper\TaContentLibMapper.java
15 18
 E:\JavaProjects\welcome3.0\service\src\main\java\com.huiju.welcome\model\TaPersonType.java
@@ -25,12 +28,13 @@ E:\JavaProjects\welcome3.0\service\src\main\java\com.huiju.welcome\service\impl\
25 28
 E:\JavaProjects\welcome3.0\service\src\main\java\com.huiju.welcome\mapper\TaDeviceMapper.java
26 29
 E:\JavaProjects\welcome3.0\service\src\main\java\com.huiju.welcome\common\base\ResponseBean.java
27 30
 E:\JavaProjects\welcome3.0\service\src\main\java\com.huiju.welcome\controller\ImgController.java
31
+E:\JavaProjects\welcome3.0\service\src\main\java\com.huiju.welcome\service\ITaCustomWordsService.java
28 32
 E:\JavaProjects\welcome3.0\service\src\main\java\com.huiju.welcome\service\ITaDeviceService.java
29
-E:\JavaProjects\welcome3.0\service\src\main\java\com.huiju.welcome\utils\AMap.java
30 33
 E:\JavaProjects\welcome3.0\service\src\main\java\com.huiju.welcome\mapper\SysParamMapper.java
31 34
 E:\JavaProjects\welcome3.0\service\src\main\java\com.huiju.welcome\utils\SAWeather.java
32 35
 E:\JavaProjects\welcome3.0\service\src\main\java\com.huiju.welcome\controller\TaFirstpageController.java
33 36
 E:\JavaProjects\welcome3.0\service\src\main\java\com.huiju.welcome\model\TaSyncLog.java
37
+E:\JavaProjects\welcome3.0\service\src\main\java\com.huiju.welcome\model\TaSnapshotPerson.java
34 38
 E:\JavaProjects\welcome3.0\service\src\main\java\com.huiju.welcome\config\WebSocketConfig.java
35 39
 E:\JavaProjects\welcome3.0\service\src\main\java\com.huiju.welcome\mapper\TaFirstpageNoticeMapper.java
36 40
 E:\JavaProjects\welcome3.0\service\src\main\java\com.huiju.welcome\service\ITaContentLibService.java
@@ -41,11 +45,13 @@ E:\JavaProjects\welcome3.0\service\src\main\java\com.huiju.welcome\controller\Au
41 45
 E:\JavaProjects\welcome3.0\service\src\main\java\com.huiju.welcome\mapper\SysUserMapper.java
42 46
 E:\JavaProjects\welcome3.0\service\src\main\java\com.huiju.welcome\model\TaVisitingLog.java
43 47
 E:\JavaProjects\welcome3.0\service\src\main\java\com.huiju.welcome\common\uuid\IdGen.java
48
+E:\JavaProjects\welcome3.0\service\src\main\java\com.huiju.welcome\service\impl\TaCustomWordsServiceImpl.java
44 49
 E:\JavaProjects\welcome3.0\service\src\main\java\com.huiju.welcome\service\ISysParamService.java
45 50
 E:\JavaProjects\welcome3.0\service\src\main\java\com.huiju.welcome\service\ISysUserService.java
46 51
 E:\JavaProjects\welcome3.0\service\src\main\java\com.huiju.welcome\model\TaVisitingWords.java
47 52
 E:\JavaProjects\welcome3.0\service\src\main\java\com.huiju.welcome\service\impl\TaFirstpageServiceImpl.java
48 53
 E:\JavaProjects\welcome3.0\service\src\main\java\com.huiju.welcome\service\impl\TaVisitingWordsServiceImpl.java
54
+E:\JavaProjects\welcome3.0\service\src\main\java\com.huiju.welcome\model\TaCustomWords.java
49 55
 E:\JavaProjects\welcome3.0\service\src\main\java\com.huiju.welcome\model\TaContentLib.java
50 56
 E:\JavaProjects\welcome3.0\service\src\main\java\com.huiju.welcome\service\impl\SysParamServiceImpl.java
51 57
 E:\JavaProjects\welcome3.0\service\src\main\java\com.huiju.welcome\service\ITaVisitingWordsService.java
@@ -64,12 +70,15 @@ E:\JavaProjects\welcome3.0\service\src\main\java\com.huiju.welcome\model\TaDevic
64 70
 E:\JavaProjects\welcome3.0\service\src\main\java\com.huiju.welcome\service\impl\TaSyncLogServiceImpl.java
65 71
 E:\JavaProjects\welcome3.0\service\src\main\java\com.huiju.welcome\mapper\TaFirstpageContentMapper.java
66 72
 E:\JavaProjects\welcome3.0\service\src\main\java\com.huiju.welcome\service\ITaFirstpageService.java
73
+E:\JavaProjects\welcome3.0\service\src\main\java\com.huiju.welcome\service\impl\CameraServiceImpl.java
67 74
 E:\JavaProjects\welcome3.0\service\src\main\java\com.huiju.welcome\controller\TaVisitingWordsController.java
68 75
 E:\JavaProjects\welcome3.0\service\src\main\java\com.huiju.welcome\config\AccessConfig.java
69 76
 E:\JavaProjects\welcome3.0\service\src\main\java\com.huiju.welcome\mapper\TaSyncLogMapper.java
70 77
 E:\JavaProjects\welcome3.0\service\src\main\java\com.huiju.welcome\model\SysUser.java
78
+E:\JavaProjects\welcome3.0\service\src\main\java\com.huiju.welcome\service\ITaSnapshotPersonService.java
71 79
 E:\JavaProjects\welcome3.0\service\src\main\java\com.huiju.welcome\common\base\BaseController.java
72 80
 E:\JavaProjects\welcome3.0\service\src\main\java\com.huiju.welcome\service\impl\TaPersonServiceImpl.java
81
+E:\JavaProjects\welcome3.0\service\src\main\java\com.huiju.welcome\controller\TaSnapshotPersonController.java
73 82
 E:\JavaProjects\welcome3.0\service\src\main\java\com.huiju.welcome\model\TaNotice.java
74 83
 E:\JavaProjects\welcome3.0\service\src\main\java\com.huiju.welcome\service\impl\TaContentLibServiceImpl.java
75 84
 E:\JavaProjects\welcome3.0\service\src\main\java\com.huiju.welcome\mapper\TaVisitingWordsMapper.java
@@ -80,5 +89,6 @@ E:\JavaProjects\welcome3.0\service\src\main\java\com.huiju.welcome\mapper\TaPers
80 89
 E:\JavaProjects\welcome3.0\service\src\main\java\com.huiju.welcome\controller\TaFirstpageContentController.java
81 90
 E:\JavaProjects\welcome3.0\service\src\main\java\com.huiju.welcome\controller\TaPersonController.java
82 91
 E:\JavaProjects\welcome3.0\service\src\main\java\com.huiju.welcome\model\TaFirstpageContent.java
92
+E:\JavaProjects\welcome3.0\service\src\main\java\com.huiju.welcome\service\impl\TaSnapshotPersonImpl.java
83 93
 E:\JavaProjects\welcome3.0\service\src\main\java\com.huiju.welcome\service\ITaPersonTypeService.java
84 94
 E:\JavaProjects\welcome3.0\service\src\main\java\com.huiju.welcome\utils\XFYun.java