102 Commits
b402f734b2
...
144c296eb0
162 changed files with 8685 additions and 258 deletions
-
8.idea/.gitignore
-
22.idea/compiler.xml
-
10.idea/encodings.xml
-
20.idea/jarRepositories.xml
-
9.idea/lottery.iml
-
14.idea/misc.xml
-
8.idea/modules.xml
-
124.idea/uiDesigner.xml
-
6.idea/vcs.xml
-
BINlottery-system/.idea/.cache/.Apifox_Helper/.toolWindow.db
-
13lottery-system/.idea/ApifoxUploaderProjectSetting.xml
-
17lottery-system/.idea/dataSources.xml
-
25lottery-system/lottery-common/pom.xml
-
14lottery-system/lottery-common/src/main/java/com/lottery/constant/RedisCacheConstant.java
-
20lottery-system/lottery-common/src/main/java/com/lottery/exception/Accountexception.java
-
15lottery-system/lottery-common/src/main/java/com/lottery/exception/BaseException.java
-
23lottery-system/lottery-common/src/main/java/com/lottery/exception/BusinessException.java
-
23lottery-system/lottery-common/src/main/java/com/lottery/exception/GlobalException.java
-
138lottery-system/lottery-common/src/main/java/com/lottery/exception/GlobalExceptionHandler.java
-
21lottery-system/lottery-common/src/main/java/com/lottery/exception/SomeException.java
-
27lottery-system/lottery-common/src/main/java/com/lottery/propertise/jwtPropertice.java
-
19lottery-system/lottery-common/src/main/java/com/lottery/result/Result.java
-
101lottery-system/lottery-common/src/main/java/com/lottery/utils/ExcelUtil.java
-
56lottery-system/lottery-common/src/main/java/com/lottery/utils/HttpUtils.java
-
74lottery-system/lottery-common/src/main/java/com/lottery/utils/JwtUtil.java
-
30lottery-system/lottery-common/src/main/java/com/lottery/utils/LoginHttpUtils.java
-
68lottery-system/lottery-common/src/main/java/com/lottery/utils/ValidationUtils.java
-
20lottery-system/lottery-pojo/pom.xml
-
21lottery-system/lottery-pojo/src/main/java/com/lottery/dto/ActivityDto.java
-
27lottery-system/lottery-pojo/src/main/java/com/lottery/dto/ActivityTimeDto.java
-
29lottery-system/lottery-pojo/src/main/java/com/lottery/dto/AdminLogin.java
-
26lottery-system/lottery-pojo/src/main/java/com/lottery/dto/ApiUrlResp.java
-
32lottery-system/lottery-pojo/src/main/java/com/lottery/dto/FixUserDto.java
-
35lottery-system/lottery-pojo/src/main/java/com/lottery/dto/FundingActivityDto.java
-
26lottery-system/lottery-pojo/src/main/java/com/lottery/dto/FundingRecordDto.java
-
30lottery-system/lottery-pojo/src/main/java/com/lottery/dto/FundingUserDto.java
-
44lottery-system/lottery-pojo/src/main/java/com/lottery/dto/GradeDto.java
-
19lottery-system/lottery-pojo/src/main/java/com/lottery/dto/PageSimpleDto.java
-
51lottery-system/lottery-pojo/src/main/java/com/lottery/dto/Prize.java
-
36lottery-system/lottery-pojo/src/main/java/com/lottery/dto/PrizeDto.java
-
19lottery-system/lottery-pojo/src/main/java/com/lottery/dto/SimpleQueryDto.java
-
26lottery-system/lottery-pojo/src/main/java/com/lottery/dto/StartLotteryDto.java
-
29lottery-system/lottery-pojo/src/main/java/com/lottery/dto/UserByJwcodeDto.java
-
24lottery-system/lottery-pojo/src/main/java/com/lottery/dto/UserByJwcodePageDto.java
-
35lottery-system/lottery-pojo/src/main/java/com/lottery/dto/UserDto.java
-
26lottery-system/lottery-pojo/src/main/java/com/lottery/dto/UserImportDto.java
-
21lottery-system/lottery-pojo/src/main/java/com/lottery/dto/UserLoginDto.java
-
25lottery-system/lottery-pojo/src/main/java/com/lottery/dto/UserQueryDto.java
-
27lottery-system/lottery-pojo/src/main/java/com/lottery/dto/VriableAddDto.java
-
34lottery-system/lottery-pojo/src/main/java/com/lottery/dto/WinUserExportDto.java
-
26lottery-system/lottery-pojo/src/main/java/com/lottery/dto/WinUserQueryDto.java
-
39lottery-system/lottery-pojo/src/main/java/com/lottery/entity/Activity.java
-
32lottery-system/lottery-pojo/src/main/java/com/lottery/entity/FundingData.java
-
45lottery-system/lottery-pojo/src/main/java/com/lottery/entity/FundingExport.java
-
36lottery-system/lottery-pojo/src/main/java/com/lottery/entity/FundingUser.java
-
52lottery-system/lottery-pojo/src/main/java/com/lottery/entity/Grade.java
-
30lottery-system/lottery-pojo/src/main/java/com/lottery/entity/JwcodeTable.java
-
28lottery-system/lottery-pojo/src/main/java/com/lottery/entity/Market.java
-
30lottery-system/lottery-pojo/src/main/java/com/lottery/entity/Prize.java
-
11lottery-system/lottery-pojo/src/main/java/com/lottery/entity/User.java
-
36lottery-system/lottery-pojo/src/main/java/com/lottery/entity/UserDetail.java
-
16lottery-system/lottery-pojo/src/main/java/com/lottery/entity/WinnerRecord.java
-
23lottery-system/lottery-pojo/src/main/java/com/lottery/vo/AdminLoginVo.java
-
21lottery-system/lottery-pojo/src/main/java/com/lottery/vo/ApiFundingTimeVo.java
-
16lottery-system/lottery-pojo/src/main/java/com/lottery/vo/ApiFundingVO.java
-
23lottery-system/lottery-pojo/src/main/java/com/lottery/vo/ApimarketVo.java
-
26lottery-system/lottery-pojo/src/main/java/com/lottery/vo/FundingActivityVo.java
-
23lottery-system/lottery-pojo/src/main/java/com/lottery/vo/FundingDataVO.java
-
20lottery-system/lottery-pojo/src/main/java/com/lottery/vo/FundingUserNewVo.java
-
26lottery-system/lottery-pojo/src/main/java/com/lottery/vo/FundingUserVo.java
-
27lottery-system/lottery-pojo/src/main/java/com/lottery/vo/FundingVo.java
-
18lottery-system/lottery-pojo/src/main/java/com/lottery/vo/GradeSimpleVo.java
-
33lottery-system/lottery-pojo/src/main/java/com/lottery/vo/GradeVo.java
-
23lottery-system/lottery-pojo/src/main/java/com/lottery/vo/ImportResultVo.java
-
26lottery-system/lottery-pojo/src/main/java/com/lottery/vo/LoginUserVo.java
-
21lottery-system/lottery-pojo/src/main/java/com/lottery/vo/LotteryVo.java
-
21lottery-system/lottery-pojo/src/main/java/com/lottery/vo/MarketVo.java
-
37lottery-system/lottery-pojo/src/main/java/com/lottery/vo/PageInfo.java
-
38lottery-system/lottery-pojo/src/main/java/com/lottery/vo/PrizeAndGradeVo.java
-
33lottery-system/lottery-pojo/src/main/java/com/lottery/vo/PrizeVo.java
-
29lottery-system/lottery-pojo/src/main/java/com/lottery/vo/UserLoginVo.java
-
19lottery-system/lottery-pojo/src/main/java/com/lottery/vo/UserVo.java
-
35lottery-system/lottery-pojo/src/main/java/com/lottery/vo/WinUserVo.java
-
56lottery-system/lottery-service/pom.xml
-
11lottery-system/lottery-service/src/main/java/com/lottery/LotteryApplication.java
-
128lottery-system/lottery-service/src/main/java/com/lottery/admin/controller/AdminGradeController.java
-
50lottery-system/lottery-service/src/main/java/com/lottery/admin/controller/AdminIsLoginController.java
-
89lottery-system/lottery-service/src/main/java/com/lottery/admin/controller/AdminPrizeController.java
-
200lottery-system/lottery-service/src/main/java/com/lottery/admin/controller/AdminUserController.java
-
57lottery-system/lottery-service/src/main/java/com/lottery/admin/controller/AdminWInController.java
-
183lottery-system/lottery-service/src/main/java/com/lottery/admin/controller/FundingController.java
-
29lottery-system/lottery-service/src/main/java/com/lottery/admin/controller/TongBuController.java
-
33lottery-system/lottery-service/src/main/java/com/lottery/admin/mapper/AdminGradeMapper.java
-
26lottery-system/lottery-service/src/main/java/com/lottery/admin/mapper/AdminIsLoginMapper.java
-
27lottery-system/lottery-service/src/main/java/com/lottery/admin/mapper/AdminPrizeMapper.java
-
27lottery-system/lottery-service/src/main/java/com/lottery/admin/mapper/AdminUserDetailMapper.java
-
55lottery-system/lottery-service/src/main/java/com/lottery/admin/mapper/AdminUserMapper.java
-
21lottery-system/lottery-service/src/main/java/com/lottery/admin/mapper/AdminWinMapper.java
-
102lottery-system/lottery-service/src/main/java/com/lottery/admin/mapper/IFundingMapper.java
-
45lottery-system/lottery-service/src/main/java/com/lottery/admin/service/AdminGradeService.java
@ -0,0 +1,8 @@ |
|||
# Default ignored files |
|||
/shelf/ |
|||
/workspace.xml |
|||
# Editor-based HTTP Client requests |
|||
/httpRequests/ |
|||
# Datasource local storage ignored files |
|||
/dataSources/ |
|||
/dataSources.local.xml |
@ -0,0 +1,22 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<project version="4"> |
|||
<component name="CompilerConfiguration"> |
|||
<annotationProcessing> |
|||
<profile name="Maven default annotation processors profile" enabled="true"> |
|||
<sourceOutputDir name="target/generated-sources/annotations" /> |
|||
<sourceTestOutputDir name="target/generated-test-sources/test-annotations" /> |
|||
<outputRelativeToContentRoot value="true" /> |
|||
<module name="lottery-service" /> |
|||
<module name="lottery-common" /> |
|||
<module name="lottery-pojo" /> |
|||
</profile> |
|||
</annotationProcessing> |
|||
</component> |
|||
<component name="JavacSettings"> |
|||
<option name="ADDITIONAL_OPTIONS_OVERRIDE"> |
|||
<module name="lottery-common" options="-parameters" /> |
|||
<module name="lottery-pojo" options="-parameters" /> |
|||
<module name="lottery-service" options="-parameters" /> |
|||
</option> |
|||
</component> |
|||
</project> |
@ -0,0 +1,10 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<project version="4"> |
|||
<component name="Encoding"> |
|||
<file url="file://$PROJECT_DIR$/lottery-system/lottery-common/src/main/java" charset="UTF-8" /> |
|||
<file url="file://$PROJECT_DIR$/lottery-system/lottery-pojo/src/main/java" charset="UTF-8" /> |
|||
<file url="file://$PROJECT_DIR$/lottery-system/lottery-service/src/main/java" charset="UTF-8" /> |
|||
<file url="file://$PROJECT_DIR$/lottery-system/src/main/java" charset="UTF-8" /> |
|||
<file url="file://$PROJECT_DIR$/lottery-system/src/main/resources" charset="UTF-8" /> |
|||
</component> |
|||
</project> |
@ -0,0 +1,20 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<project version="4"> |
|||
<component name="RemoteRepositoriesConfiguration"> |
|||
<remote-repository> |
|||
<option name="id" value="central" /> |
|||
<option name="name" value="Maven Central repository" /> |
|||
<option name="url" value="https://repo1.maven.org/maven2" /> |
|||
</remote-repository> |
|||
<remote-repository> |
|||
<option name="id" value="jboss.community" /> |
|||
<option name="name" value="JBoss Community repository" /> |
|||
<option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" /> |
|||
</remote-repository> |
|||
<remote-repository> |
|||
<option name="id" value="central" /> |
|||
<option name="name" value="Central Repository" /> |
|||
<option name="url" value="https://maven.aliyun.com/repository/public" /> |
|||
</remote-repository> |
|||
</component> |
|||
</project> |
@ -0,0 +1,9 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<module type="JAVA_MODULE" version="4"> |
|||
<component name="NewModuleRootManager" inherit-compiler-output="true"> |
|||
<exclude-output /> |
|||
<content url="file://$MODULE_DIR$" /> |
|||
<orderEntry type="inheritedJdk" /> |
|||
<orderEntry type="sourceFolder" forTests="false" /> |
|||
</component> |
|||
</module> |
@ -0,0 +1,14 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<project version="4"> |
|||
<component name="ExternalStorageConfigurationManager" enabled="true" /> |
|||
<component name="MavenProjectsManager"> |
|||
<option name="originalFiles"> |
|||
<list> |
|||
<option value="$PROJECT_DIR$/lottery-system/pom.xml" /> |
|||
</list> |
|||
</option> |
|||
</component> |
|||
<component name="ProjectRootManager" version="2" project-jdk-name="11" project-jdk-type="JavaSDK"> |
|||
<output url="file://$PROJECT_DIR$/out" /> |
|||
</component> |
|||
</project> |
@ -0,0 +1,8 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<project version="4"> |
|||
<component name="ProjectModuleManager"> |
|||
<modules> |
|||
<module fileurl="file://$PROJECT_DIR$/.idea/lottery.iml" filepath="$PROJECT_DIR$/.idea/lottery.iml" /> |
|||
</modules> |
|||
</component> |
|||
</project> |
@ -0,0 +1,124 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<project version="4"> |
|||
<component name="Palette2"> |
|||
<group name="Swing"> |
|||
<item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false"> |
|||
<default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" /> |
|||
</item> |
|||
<item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false"> |
|||
<default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" /> |
|||
</item> |
|||
<item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.svg" removable="false" auto-create-binding="false" can-attach-label="false"> |
|||
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" /> |
|||
</item> |
|||
<item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.svg" removable="false" auto-create-binding="false" can-attach-label="true"> |
|||
<default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" /> |
|||
</item> |
|||
<item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.svg" removable="false" auto-create-binding="true" can-attach-label="false"> |
|||
<default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" /> |
|||
<initial-values> |
|||
<property name="text" value="Button" /> |
|||
</initial-values> |
|||
</item> |
|||
<item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.svg" removable="false" auto-create-binding="true" can-attach-label="false"> |
|||
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" /> |
|||
<initial-values> |
|||
<property name="text" value="RadioButton" /> |
|||
</initial-values> |
|||
</item> |
|||
<item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.svg" removable="false" auto-create-binding="true" can-attach-label="false"> |
|||
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" /> |
|||
<initial-values> |
|||
<property name="text" value="CheckBox" /> |
|||
</initial-values> |
|||
</item> |
|||
<item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.svg" removable="false" auto-create-binding="false" can-attach-label="false"> |
|||
<default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" /> |
|||
<initial-values> |
|||
<property name="text" value="Label" /> |
|||
</initial-values> |
|||
</item> |
|||
<item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.svg" removable="false" auto-create-binding="true" can-attach-label="true"> |
|||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1"> |
|||
<preferred-size width="150" height="-1" /> |
|||
</default-constraints> |
|||
</item> |
|||
<item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.svg" removable="false" auto-create-binding="true" can-attach-label="true"> |
|||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1"> |
|||
<preferred-size width="150" height="-1" /> |
|||
</default-constraints> |
|||
</item> |
|||
<item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.svg" removable="false" auto-create-binding="true" can-attach-label="true"> |
|||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1"> |
|||
<preferred-size width="150" height="-1" /> |
|||
</default-constraints> |
|||
</item> |
|||
<item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.svg" removable="false" auto-create-binding="true" can-attach-label="true"> |
|||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3"> |
|||
<preferred-size width="150" height="50" /> |
|||
</default-constraints> |
|||
</item> |
|||
<item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.svg" removable="false" auto-create-binding="true" can-attach-label="true"> |
|||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3"> |
|||
<preferred-size width="150" height="50" /> |
|||
</default-constraints> |
|||
</item> |
|||
<item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.svg" removable="false" auto-create-binding="true" can-attach-label="true"> |
|||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3"> |
|||
<preferred-size width="150" height="50" /> |
|||
</default-constraints> |
|||
</item> |
|||
<item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.svg" removable="false" auto-create-binding="true" can-attach-label="true"> |
|||
<default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" /> |
|||
</item> |
|||
<item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.svg" removable="false" auto-create-binding="true" can-attach-label="false"> |
|||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3"> |
|||
<preferred-size width="150" height="50" /> |
|||
</default-constraints> |
|||
</item> |
|||
<item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.svg" removable="false" auto-create-binding="true" can-attach-label="false"> |
|||
<default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3"> |
|||
<preferred-size width="150" height="50" /> |
|||
</default-constraints> |
|||
</item> |
|||
<item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.svg" removable="false" auto-create-binding="true" can-attach-label="false"> |
|||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3"> |
|||
<preferred-size width="150" height="50" /> |
|||
</default-constraints> |
|||
</item> |
|||
<item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.svg" removable="false" auto-create-binding="true" can-attach-label="false"> |
|||
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3"> |
|||
<preferred-size width="200" height="200" /> |
|||
</default-constraints> |
|||
</item> |
|||
<item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.svg" removable="false" auto-create-binding="false" can-attach-label="false"> |
|||
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3"> |
|||
<preferred-size width="200" height="200" /> |
|||
</default-constraints> |
|||
</item> |
|||
<item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.svg" removable="false" auto-create-binding="true" can-attach-label="true"> |
|||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" /> |
|||
</item> |
|||
<item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.svg" removable="false" auto-create-binding="true" can-attach-label="false"> |
|||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" /> |
|||
</item> |
|||
<item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.svg" removable="false" auto-create-binding="false" can-attach-label="false"> |
|||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" /> |
|||
</item> |
|||
<item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.svg" removable="false" auto-create-binding="true" can-attach-label="false"> |
|||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" /> |
|||
</item> |
|||
<item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.svg" removable="false" auto-create-binding="false" can-attach-label="false"> |
|||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1"> |
|||
<preferred-size width="-1" height="20" /> |
|||
</default-constraints> |
|||
</item> |
|||
<item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.svg" removable="false" auto-create-binding="false" can-attach-label="false"> |
|||
<default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" /> |
|||
</item> |
|||
<item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.svg" removable="false" auto-create-binding="true" can-attach-label="false"> |
|||
<default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" /> |
|||
</item> |
|||
</group> |
|||
</component> |
|||
</project> |
@ -0,0 +1,6 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<project version="4"> |
|||
<component name="VcsDirectoryMappings"> |
|||
<mapping directory="" vcs="Git" /> |
|||
</component> |
|||
</project> |
@ -0,0 +1,13 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<project version="4"> |
|||
<component name="ApifoxUploaderProjectSetting"> |
|||
<option name="apiAccessToken" value="APS-xj8kOQmafbg1T5dq6bs6LJfHku7PRk9n" /> |
|||
<option name="apiProjectIds"> |
|||
<array> |
|||
<option value="<byte-array>rO0ABXNyADZjb20uaXRhbmdjZW50LmlkZWEucGx1Z2luLmFwaS5hY2NvdW50LlByb2plY3RBbmRNb2R1bGUAAAAAAAAAAQIAFVoABmVuYWJsZUwACG1vZHVsZUlkdAASTGphdmEvbGFuZy9TdHJpbmc7TAAGb3RoZXIxcQB+AAFMAAdvdGhlcjEwcQB+AAFMAAdvdGhlcjExcQB+AAFMAAdvdGhlcjEycQB+AAFMAAZvdGhlcjJxAH4AAUwABm90aGVyM3EAfgABTAAGb3RoZXI0cQB+AAFMAAZvdGhlcjVxAH4AAUwABm90aGVyNnEAfgABTAAGb3RoZXI3cQB+AAFMAAZvdGhlcjhxAH4AAUwABm90aGVyOXEAfgABTAAKcGF0aEJlZm9yZXEAfgABTAANcHJvamVjdEZvbGRlcnEAfgABTAAPcHJvamVjdEZvbGRlcklkcQB+AAFMAAlwcm9qZWN0SWRxAH4AAUwAC3Byb2plY3ROYW1lcQB+AAFMAAxzY2hlbWFGb2xkZXJxAH4AAUwACHNjaGVtYUlkcQB+AAF4cAF0AA9sb3R0ZXJ5LXNlcnZpY2V0AABwcHBxAH4ABHQAC2JyYW5jaC1tYWludAAM6buY6K6k5qih5Z2XcHBwcHBxAH4ABHQACeagueebruW9lXQAATB0AAc2ODIyNTU4dAAM5Liq5Lq66aG555uucQB+AAdxAH4ACA==</byte-array>" /> |
|||
</array> |
|||
</option> |
|||
<option name="treeNodes" value="<byte-array>rO0ABXNyABdqYXZhLnV0aWwuTGlua2VkSGFzaE1hcDTATlwQbMD7AgABWgALYWNjZXNzT3JkZXJ4cgARamF2YS51dGlsLkhhc2hNYXAFB9rBwxZg0QMAAkYACmxvYWRGYWN0b3JJAAl0aHJlc2hvbGR4cD9AAAAAAAAMdwgAAAAQAAAAAXQABzM2OTM2NjhzcgAuY29tLml0YW5nY2VudC5pZGVhLnBsdWdpbi5hcGkuYWNjb3VudC5UcmVlTm9kZQAAAAAAAAABAgAQTAAHYWxsUGF0aHQAEkxqYXZhL2xhbmcvU3RyaW5nO1sAFGJyYW5jaEFuZFZlcnNpb25JdGVtdABLW0xjb20vaXRhbmdjZW50L2lkZWEvcGx1Z2luL2RpYWxvZy9jb21wb25lbnQvYWNjb3VudC9BY2NvdW50UmlnaHRQYW5lbEl0ZW07TAAUYnJhbmNoSWRBbmRWZXJzaW9uSWRxAH4ABUwACGNoaWxkcmVudAAPTGphdmEvdXRpbC9NYXA7TAAKZm9sZGVyVHlwZXEAfgAFTAAIZnVsbFBhdGhxAH4ABUwAA2tleXEAfgAFWwAJbW9kZWxJdGVtcQB+AAZMAAhtb2R1bGVJZHEAfgAFTAAEbmFtZXEAfgAFTAAIcGFyZW50SWRxAH4ABUwACXByb2plY3RJZHEAfgAFTAALcHJvamVjdE5hbWVxAH4ABUwABnRlYW1JZHEAfgAFTAAIdGVhbU5hbWVxAH4ABUwABHR5cGV0ADBMY29tL2l0YW5nY2VudC9pZGVhL3BsdWdpbi9hcGkvYWNjb3VudC9Ob2RlVHlwZTt4cHQADOS4quS6uuWboumYn3Bwc3EAfgAAP0AAAAAAAAx3CAAAABAAAAABdAAHNjgyMjU1OHNxAH4ABHQAGeS4quS6uuWboumYny/kuKrkurrpobnnm65wcHNxAH4AAD9AAAAAAAAAdwgAAAAQAAAAAHgAcHBxAH4ADHBwdAAW5Liq5Lq66aG555uuICg2ODIyNTU4KXQABzM2OTM2NjhxAH4ADHQADOS4quS6uumhueebrnEAfgARcH5yAC5jb20uaXRhbmdjZW50LmlkZWEucGx1Z2luLmFwaS5hY2NvdW50Lk5vZGVUeXBlAAAAAAAAAAASAAB4cgAOamF2YS5sYW5nLkVudW0AAAAAAAAAABIAAHhwdAAHUFJPSkVDVHgAcHBxAH4AA3BwcQB+AApwcHBxAH4AA3EAfgAKfnEAfgATdAAEVEVBTXgA</byte-array>" /> |
|||
<option name="treeNodesJTree" value="<byte-array>rO0ABXNyACFqYXZheC5zd2luZy50cmVlLkRlZmF1bHRUcmVlTW9kZWynvpEmGsXl2QMAA1oAEmFza3NBbGxvd3NDaGlsZHJlbkwADGxpc3RlbmVyTGlzdHQAJUxqYXZheC9zd2luZy9ldmVudC9FdmVudExpc3RlbmVyTGlzdDtMAARyb290dAAbTGphdmF4L3N3aW5nL3RyZWUvVHJlZU5vZGU7eHAAc3IAI2phdmF4LnN3aW5nLmV2ZW50LkV2ZW50TGlzdGVuZXJMaXN0kUjMLXPfDt4DAAB4cHB4c3IAJ2phdmF4LnN3aW5nLnRyZWUuRGVmYXVsdE11dGFibGVUcmVlTm9kZcRYv/zyqHHgAwADWgAOYWxsb3dzQ2hpbGRyZW5MAAhjaGlsZHJlbnQAEkxqYXZhL3V0aWwvVmVjdG9yO0wABnBhcmVudHQAIkxqYXZheC9zd2luZy90cmVlL011dGFibGVUcmVlTm9kZTt4cAFzcgAQamF2YS51dGlsLlZlY3RvctmXfVuAO68BAwADSQARY2FwYWNpdHlJbmNyZW1lbnRJAAxlbGVtZW50Q291bnRbAAtlbGVtZW50RGF0YXQAE1tMamF2YS9sYW5nL09iamVjdDt4cAAAAAAAAAABdXIAE1tMamF2YS5sYW5nLk9iamVjdDuQzlifEHMpbAIAAHhwAAAACnNxAH4ABgFzcQB+AAoAAAAAAAAAAXVxAH4ADQAAAApzcQB+AAYBcHEAfgAPdXEAfgANAAAAAnQACnVzZXJPYmplY3RzcgAuY29tLml0YW5nY2VudC5pZGVhLnBsdWdpbi5hcGkuYWNjb3VudC5UcmVlTm9kZQAAAAAAAAABAgAQTAAHYWxsUGF0aHQAEkxqYXZhL2xhbmcvU3RyaW5nO1sAFGJyYW5jaEFuZFZlcnNpb25JdGVtdABLW0xjb20vaXRhbmdjZW50L2lkZWEvcGx1Z2luL2RpYWxvZy9jb21wb25lbnQvYWNjb3VudC9BY2NvdW50UmlnaHRQYW5lbEl0ZW07TAAUYnJhbmNoSWRBbmRWZXJzaW9uSWRxAH4AFkwACGNoaWxkcmVudAAPTGphdmEvdXRpbC9NYXA7TAAKZm9sZGVyVHlwZXEAfgAWTAAIZnVsbFBhdGhxAH4AFkwAA2tleXEAfgAWWwAJbW9kZWxJdGVtcQB+ABdMAAhtb2R1bGVJZHEAfgAWTAAEbmFtZXEAfgAWTAAIcGFyZW50SWRxAH4AFkwACXByb2plY3RJZHEAfgAWTAALcHJvamVjdE5hbWVxAH4AFkwABnRlYW1JZHEAfgAWTAAIdGVhbU5hbWVxAH4AFkwABHR5cGV0ADBMY29tL2l0YW5nY2VudC9pZGVhL3BsdWdpbi9hcGkvYWNjb3VudC9Ob2RlVHlwZTt4cHQAGeS4quS6uuWboumYny/kuKrkurrpobnnm651cgBLW0xjb20uaXRhbmdjZW50LmlkZWEucGx1Z2luLmRpYWxvZy5jb21wb25lbnQuYWNjb3VudC5BY2NvdW50UmlnaHRQYW5lbEl0ZW07KbxSniq4DKkCAAB4cAAAAAFzcgBIY29tLml0YW5nY2VudC5pZGVhLnBsdWdpbi5kaWFsb2cuY29tcG9uZW50LmFjY291bnQuQWNjb3VudFJpZ2h0UGFuZWxJdGVtAAAAAAAAAAECAARaAA9pc01haW5PckRlZmF1bHRMAAhpY29uVHlwZXEAfgAWTAACaWRxAH4AFkwABG5hbWVxAH4AFnhwAXQABmJyYW5jaHQAAHQABG1haW5wc3IAF2phdmEudXRpbC5MaW5rZWRIYXNoTWFwNMBOXBBswPsCAAFaAAthY2Nlc3NPcmRlcnhyABFqYXZhLnV0aWwuSGFzaE1hcAUH2sHDFmDRAwACRgAKbG9hZEZhY3RvckkACXRocmVzaG9sZHhwP0AAAAAAAAB3CAAAABAAAAAAeABwcHQABzY4MjI1NTh1cQB+ABwAAAABc3EAfgAeAXQABW1vZGVscQB+ACF0AAzpu5jorqTmqKHlnZdwdAAW5Liq5Lq66aG555uuICg2ODIyNTU4KXQABzM2OTM2Njh0AAc2ODIyNTU4dAAM5Liq5Lq66aG555uudAAHMzY5MzY2OHB+cgAuY29tLml0YW5nY2VudC5pZGVhLnBsdWdpbi5hcGkuYWNjb3VudC5Ob2RlVHlwZQAAAAAAAAAAEgAAeHIADmphdmEubGFuZy5FbnVtAAAAAAAAAAASAAB4cHQAB1BST0pFQ1R4cHBwcHBwcHBweHEAfgAJdXEAfgANAAAAAnEAfgAUc3EAfgAVdAAM5Liq5Lq65Zui6ZifcHBzcQB+ACM/QAAAAAAAAHcIAAAAEAAAAAB4AHBwdAAHMzY5MzY2OHBwdAAM5Liq5Lq65Zui6ZifcHBwdAAHMzY5MzY2OHQADOS4quS6uuWboumYn35xAH4AMHQABFRFQU14cHBwcHBwcHBweHB1cQB+AA0AAAACcQB+ABRzcQB+ABV0AARSb290cHBwcHB0AAEwcHBxAH4AQHBwcHBwcQB+ADx4c3EAfgAKAAAAAAAAAAJ1cQB+AA0AAAAKdAAEcm9vdHEAfgAJcHBwcHBwcHB4eA==</byte-array>" /> |
|||
</component> |
|||
</project> |
@ -0,0 +1,17 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<project version="4"> |
|||
<component name="DataSourceManagerImpl" format="xml" multifile-model="true"> |
|||
<data-source source="LOCAL" name="lottery_system@localhost" uuid="296b2e99-571b-4184-8fa0-ad8c7969124e"> |
|||
<driver-ref>mysql.8</driver-ref> |
|||
<synchronize>true</synchronize> |
|||
<jdbc-driver>com.mysql.cj.jdbc.Driver</jdbc-driver> |
|||
<jdbc-url>jdbc:mysql://localhost:3306/lottery_system</jdbc-url> |
|||
<jdbc-additional-properties> |
|||
<property name="com.intellij.clouds.kubernetes.db.host.port" /> |
|||
<property name="com.intellij.clouds.kubernetes.db.enabled" value="false" /> |
|||
<property name="com.intellij.clouds.kubernetes.db.container.port" /> |
|||
</jdbc-additional-properties> |
|||
<working-dir>$ProjectFileDir$</working-dir> |
|||
</data-source> |
|||
</component> |
|||
</project> |
@ -0,0 +1,14 @@ |
|||
package com.lottery.constant; |
|||
|
|||
/** |
|||
* @program: lottery |
|||
* @ClassName RedisCacheConstant |
|||
* @description: |
|||
* @author: wwl |
|||
* @create: 2025-07-15 17:59 |
|||
* @Version 1.0 |
|||
**/ |
|||
public class RedisCacheConstant { |
|||
|
|||
public static final String ALL_USER_CACHE = "all_user_cache"; |
|||
} |
@ -0,0 +1,20 @@ |
|||
package com.lottery.exception; |
|||
|
|||
/** |
|||
* @program: lottery-system |
|||
* @ClassName Accountexception |
|||
* @description: |
|||
* @author: wwl |
|||
* @create: 2025-07-12 10:56 |
|||
* @Version 1.0 |
|||
**/ |
|||
public class Accountexception extends BaseException{ |
|||
|
|||
public Accountexception(){ |
|||
|
|||
} |
|||
|
|||
public Accountexception(String massage){ |
|||
super(massage); |
|||
} |
|||
} |
@ -0,0 +1,15 @@ |
|||
package com.lottery.exception; |
|||
|
|||
/** |
|||
* 业务异常 |
|||
*/ |
|||
public class BaseException extends RuntimeException { |
|||
|
|||
public BaseException() { |
|||
} |
|||
|
|||
public BaseException(String msg) { |
|||
super(msg); |
|||
} |
|||
|
|||
} |
@ -0,0 +1,23 @@ |
|||
package com.lottery.exception; |
|||
|
|||
/** |
|||
* @program: lottery-system |
|||
* @ClassName BusinessException |
|||
* @description: |
|||
* @author:jihaipeng |
|||
* @create: 2025−07-21 17:09 |
|||
* @Version 1.0 |
|||
**/ |
|||
|
|||
public class BusinessException extends RuntimeException { |
|||
private int code; // 错误码(如 400) |
|||
|
|||
public BusinessException(int code, String message) { |
|||
super(message); |
|||
this.code = code; |
|||
} |
|||
|
|||
public int getCode() { |
|||
return code; |
|||
} |
|||
} |
@ -0,0 +1,23 @@ |
|||
package com.lottery.exception; |
|||
|
|||
import org.springframework.web.bind.annotation.ControllerAdvice; |
|||
|
|||
/** |
|||
* @program: lottery-system |
|||
* @ClassName GolbalException |
|||
* @description: |
|||
* @author:jihaipeng |
|||
* @create: 2025−07-14 16:43 |
|||
* @Version 1.0 |
|||
**/ |
|||
@ControllerAdvice |
|||
public class GlobalException extends BaseException{ |
|||
public GlobalException(){ |
|||
|
|||
} |
|||
|
|||
public GlobalException(String massage){ |
|||
super(massage); |
|||
} |
|||
|
|||
} |
@ -0,0 +1,138 @@ |
|||
package com.lottery.exception; |
|||
|
|||
import com.lottery.result.Result; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.springframework.http.HttpHeaders; |
|||
import org.springframework.http.ResponseEntity; |
|||
import org.springframework.validation.BindException; |
|||
import org.springframework.validation.FieldError; |
|||
import org.springframework.web.bind.MethodArgumentNotValidException; |
|||
import org.springframework.web.bind.MissingServletRequestParameterException; |
|||
import org.springframework.web.bind.annotation.ExceptionHandler; |
|||
import org.springframework.web.bind.annotation.RestControllerAdvice; |
|||
import org.springframework.web.method.annotation.MethodArgumentTypeMismatchException; |
|||
|
|||
import javax.servlet.http.HttpServletRequest; |
|||
import javax.validation.ConstraintViolation; |
|||
import javax.validation.ConstraintViolationException; |
|||
import java.util.List; |
|||
import java.util.stream.Collectors; |
|||
|
|||
/** |
|||
* 全局异常处理器 |
|||
*/ |
|||
@RestControllerAdvice |
|||
@Slf4j |
|||
public class GlobalExceptionHandler { |
|||
|
|||
/** |
|||
* 处理参数校验异常(统一入口) |
|||
*/ |
|||
@ExceptionHandler({ |
|||
MethodArgumentNotValidException.class, |
|||
BindException.class, |
|||
ConstraintViolationException.class, |
|||
MethodArgumentTypeMismatchException.class, |
|||
MissingServletRequestParameterException.class |
|||
}) |
|||
public Result<Object> handleValidationException(Exception ex) { |
|||
String errorMessage; |
|||
|
|||
if (ex instanceof MethodArgumentNotValidException) { |
|||
errorMessage = handleMethodArgumentNotValid((MethodArgumentNotValidException) ex); |
|||
} else if (ex instanceof BindException) { |
|||
errorMessage = handleBindException((BindException) ex); |
|||
} else if (ex instanceof ConstraintViolationException) { |
|||
errorMessage = handleConstraintViolation((ConstraintViolationException) ex); |
|||
} else if (ex instanceof MethodArgumentTypeMismatchException) { |
|||
errorMessage = handleTypeMismatch((MethodArgumentTypeMismatchException) ex); |
|||
} else if (ex instanceof MissingServletRequestParameterException) { |
|||
errorMessage = handleMissingParameter((MissingServletRequestParameterException) ex); |
|||
} else { |
|||
errorMessage = "参数校验失败"; |
|||
} |
|||
|
|||
log.warn("参数校验异常: {}", errorMessage); |
|||
return Result.failure(400, errorMessage); |
|||
} |
|||
|
|||
/** |
|||
* 处理 MethodArgumentNotValidException |
|||
*/ |
|||
private String handleMethodArgumentNotValid(MethodArgumentNotValidException ex) { |
|||
List<String> errors = ex.getBindingResult().getFieldErrors().stream() |
|||
.map(error -> error.getField() + ": " + error.getDefaultMessage()) |
|||
.collect(Collectors.toList()); |
|||
return String.join(", ", errors); |
|||
} |
|||
|
|||
/** |
|||
* 处理 BindException |
|||
*/ |
|||
private String handleBindException(BindException ex) { |
|||
List<String> errors = ex.getBindingResult().getFieldErrors().stream() |
|||
.map(error -> error.getField() + ": " + error.getDefaultMessage()) |
|||
.collect(Collectors.toList()); |
|||
return String.join(", ", errors); |
|||
} |
|||
|
|||
/** |
|||
* 处理 ConstraintViolationException |
|||
*/ |
|||
private String handleConstraintViolation(ConstraintViolationException ex) { |
|||
List<String> errors = ex.getConstraintViolations().stream() |
|||
.map(ConstraintViolation::getMessage) |
|||
.collect(Collectors.toList()); |
|||
return String.join(", ", errors); |
|||
} |
|||
|
|||
/** |
|||
* 处理类型不匹配异常 |
|||
*/ |
|||
private String handleTypeMismatch(MethodArgumentTypeMismatchException ex) { |
|||
return String.format("参数 '%s' 类型不匹配,期望类型: %s", |
|||
ex.getName(), |
|||
ex.getRequiredType().getSimpleName()); |
|||
} |
|||
|
|||
/** |
|||
* 处理缺失参数异常 |
|||
*/ |
|||
private String handleMissingParameter(MissingServletRequestParameterException ex) { |
|||
return String.format("缺失必填参数: '%s' (类型: %s)", |
|||
ex.getParameterName(), |
|||
ex.getParameterType()); |
|||
} |
|||
|
|||
|
|||
|
|||
// 捕获自定义业务异常 |
|||
// @ExceptionHandler(BusinessException.class) |
|||
// public ResponseEntity<Result> handleBusinessException(BusinessException ex, HttpServletRequest request) { |
|||
// HttpHeaders headers = new HttpHeaders(); |
|||
// headers.set("Access-Control-Allow-Origin", "*"); // 或指定域名 |
|||
// headers.set("Access-Control-Allow-Credentials", "true"); |
|||
// // 构建统一的错误响应 |
|||
// Result<Void> errorResult = Result.failure(ex.getCode(), ex.getMessage()); |
|||
// |
|||
// |
|||
// return ResponseEntity |
|||
// .status(ex.getCode()) // 使用 BusinessException 中的状态码 |
|||
// .headers(headers) |
|||
// .body(errorResult); // 返回 Result 作为响应体 |
|||
// } |
|||
// 捕获自定义业务异常 |
|||
@ExceptionHandler(BusinessException.class) |
|||
public Result<Void> handleBusinessException(BusinessException e) { |
|||
return Result.failure(e.getCode(), e.getMessage()); |
|||
} |
|||
|
|||
/** |
|||
* 处理系统异常 |
|||
*/ |
|||
@ExceptionHandler(Exception.class) |
|||
public Result<String> handleSystemException(Exception e) { |
|||
log.error("系统异常: ", e); |
|||
return Result.failure(500, "系统繁忙,请稍后再试"); |
|||
} |
|||
} |
@ -0,0 +1,21 @@ |
|||
package com.lottery.exception; |
|||
|
|||
/** |
|||
* @program: lottery-system |
|||
* @ClassName SomeException |
|||
* @description: |
|||
* @author: wwl |
|||
* @create: 2025-07-14 15:07 |
|||
* @Version 1.0 |
|||
**/ |
|||
public class SomeException extends BaseException { |
|||
|
|||
|
|||
public SomeException(){ |
|||
|
|||
} |
|||
|
|||
public SomeException(String massage){ |
|||
super(massage); |
|||
} |
|||
} |
@ -0,0 +1,27 @@ |
|||
package com.lottery.propertise; |
|||
|
|||
import lombok.Data; |
|||
import org.springframework.boot.context.properties.ConfigurationProperties; |
|||
import org.springframework.stereotype.Component; |
|||
|
|||
/** |
|||
* @program: lottery-system |
|||
* @ClassName jwtPropertice |
|||
* @description: |
|||
* @author: wwl |
|||
* @create: 2025-07-12 10:31 |
|||
* @Version 1.0 |
|||
**/ |
|||
@Component |
|||
@ConfigurationProperties(prefix = "lottery.jwt") |
|||
@Data |
|||
public class jwtPropertice { |
|||
|
|||
/** |
|||
* 用户jwt相关配置 |
|||
* |
|||
*/ |
|||
private String userSecretKey; |
|||
private long userTtl; |
|||
private String userTokenName; |
|||
} |
@ -0,0 +1,101 @@ |
|||
package com.lottery.utils; |
|||
|
|||
import com.alibaba.excel.annotation.ExcelProperty; |
|||
import org.apache.poi.hssf.usermodel.HSSFWorkbook; |
|||
import org.apache.poi.ss.usermodel.*; |
|||
import org.apache.poi.xssf.usermodel.XSSFWorkbook; |
|||
import org.springframework.web.multipart.MultipartFile; |
|||
|
|||
import java.io.InputStream; |
|||
import java.lang.reflect.Field; |
|||
import java.util.ArrayList; |
|||
import java.util.HashMap; |
|||
import java.util.List; |
|||
import java.util.Map; |
|||
|
|||
/** |
|||
* @program: lottery |
|||
* @ClassName ExcelUtil |
|||
* @description: |
|||
* @author: wwl |
|||
* @create: 2025-07-15 16:32 |
|||
* @Version 1.0 |
|||
**/ |
|||
|
|||
public class ExcelUtil { |
|||
public static <T> List<T> parseExcel(MultipartFile file, Class<T> clazz) throws Exception { |
|||
try (InputStream inputStream = file.getInputStream()) { |
|||
Workbook workbook = WorkbookFactory.create(inputStream); |
|||
Sheet sheet = workbook.getSheetAt(0); |
|||
|
|||
// 获取表头映射 |
|||
Row headerRow = sheet.getRow(0); |
|||
Map<String, Integer> headerMap = new HashMap<>(); |
|||
for (Cell cell : headerRow) { |
|||
headerMap.put(cell.getStringCellValue().trim(), cell.getColumnIndex()); |
|||
} |
|||
|
|||
// 验证必要列是否存在 |
|||
for (Field field : clazz.getDeclaredFields()) { |
|||
ExcelProperty annotation = field.getAnnotation(ExcelProperty.class); |
|||
if (annotation != null && !headerMap.containsKey(annotation.value()[0])) { |
|||
throw new IllegalArgumentException("缺少必要列: " + annotation.value()[0]); |
|||
} |
|||
} |
|||
|
|||
// 读取数据 |
|||
List<T> dataList = new ArrayList<>(); |
|||
for (int i = 1; i <= sheet.getLastRowNum(); i++) { |
|||
Row row = sheet.getRow(i); |
|||
if (row == null) continue; |
|||
|
|||
T dto = clazz.getDeclaredConstructor().newInstance(); |
|||
boolean hasValue = false; |
|||
|
|||
for (Field field : clazz.getDeclaredFields()) { |
|||
ExcelProperty annotation = field.getAnnotation(ExcelProperty.class); |
|||
if (annotation != null) { |
|||
String headerName = annotation.value()[0]; |
|||
Integer colIndex = headerMap.get(headerName); |
|||
if (colIndex != null) { |
|||
Cell cell = row.getCell(colIndex); |
|||
Object value = getCellValue(cell); |
|||
if (value != null) { |
|||
field.setAccessible(true); |
|||
field.set(dto, value); |
|||
hasValue = true; |
|||
} |
|||
} |
|||
} |
|||
} |
|||
|
|||
if (hasValue) { |
|||
dataList.add(dto); |
|||
} |
|||
} |
|||
|
|||
return dataList; |
|||
} |
|||
} |
|||
|
|||
private static Object getCellValue(Cell cell) { |
|||
if (cell == null) return null; |
|||
|
|||
switch (cell.getCellType()) { |
|||
case STRING: |
|||
return cell.getStringCellValue().trim(); |
|||
case NUMERIC: |
|||
if (DateUtil.isCellDateFormatted(cell)) { |
|||
return cell.getDateCellValue(); |
|||
} |
|||
return cell.getNumericCellValue(); |
|||
case BOOLEAN: |
|||
return cell.getBooleanCellValue(); |
|||
case FORMULA: |
|||
return cell.getCellFormula(); |
|||
default: |
|||
return null; |
|||
} |
|||
} |
|||
} |
|||
|
@ -0,0 +1,56 @@ |
|||
package com.lottery.utils; |
|||
import java.net.URI; |
|||
import java.net.URLEncoder; |
|||
import java.net.http.HttpClient; |
|||
import java.net.http.HttpRequest; |
|||
import java.net.http.HttpResponse; |
|||
import java.nio.charset.StandardCharsets; |
|||
import java.util.Map; |
|||
|
|||
public class HttpUtils{ |
|||
|
|||
private static final HttpClient client = HttpClient.newHttpClient(); |
|||
|
|||
/** |
|||
* 发送 POST 请求(urlencoded 格式,仅设置 Content-Type) |
|||
* @param url 接口地址 |
|||
* @param params 请求参数(键值对,自动编码) |
|||
* @return 响应字符串 |
|||
*/ |
|||
public static String postUrlencoded(String url, Map<String, String> params) throws Exception { |
|||
// 1. 构建 urlencoded 请求体 |
|||
StringBuilder requestBody = new StringBuilder(); |
|||
for (Map.Entry<String, String> entry : params.entrySet()) { |
|||
if (requestBody.length() > 0) { |
|||
requestBody.append("&"); |
|||
} |
|||
requestBody.append(URLEncoder.encode(entry.getKey(), StandardCharsets.UTF_8)) |
|||
.append("=") |
|||
.append(URLEncoder.encode(entry.getValue(), StandardCharsets.UTF_8)); |
|||
} |
|||
|
|||
// 2. 创建 HTTP 请求(仅设置 Content-Type) |
|||
HttpRequest request = HttpRequest.newBuilder() |
|||
.uri(URI.create(url)) |
|||
.header("Content-Type", "application/x-www-form-urlencoded") // 仅设置 Content-Type |
|||
.POST(HttpRequest.BodyPublishers.ofString(requestBody.toString())) |
|||
.build(); |
|||
|
|||
// 3. 发送请求并返回响应 |
|||
return sendRequest(request); |
|||
} |
|||
|
|||
/** |
|||
* 发送请求并返回响应 |
|||
*/ |
|||
private static String sendRequest(HttpRequest request) throws Exception { |
|||
HttpResponse<String> response = client.send( |
|||
request, HttpResponse.BodyHandlers.ofString()); |
|||
|
|||
if (response.statusCode() >= 400) { |
|||
throw new RuntimeException("HTTP 错误,状态码: " + response.statusCode() + ", 响应: " + response.body()); |
|||
} |
|||
|
|||
return response.body(); |
|||
} |
|||
} |
@ -0,0 +1,74 @@ |
|||
package com.lottery.utils; |
|||
|
|||
import io.jsonwebtoken.Claims; |
|||
import io.jsonwebtoken.JwtBuilder; |
|||
import io.jsonwebtoken.Jwts; |
|||
import io.jsonwebtoken.SignatureAlgorithm; |
|||
|
|||
import java.nio.charset.StandardCharsets; |
|||
import java.util.Date; |
|||
import java.util.Map; |
|||
|
|||
/** |
|||
* @program: lottery-system |
|||
* @ClassName JwtUtils |
|||
* @description: |
|||
* @author: wwl |
|||
* @create: 2025-07-12 10:25 |
|||
* @Version 1.0 |
|||
**/ |
|||
public class JwtUtil { |
|||
/** |
|||
* 生成jwt |
|||
* 使用Hs256算法, 私匙使用固定秘钥 |
|||
* |
|||
* @param secretKey jwt秘钥 |
|||
* @param ttlMillis jwt过期时间(毫秒) |
|||
* @param claims 设置的信息 |
|||
* @return |
|||
*/ |
|||
public static String createJWT(String secretKey, long ttlMillis, Map<String, Object> claims) { |
|||
// 指定签名的时候使用的签名算法,也就是header那部分 |
|||
SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.HS256; |
|||
|
|||
// 生成JWT的时间 |
|||
long expMillis = System.currentTimeMillis() + ttlMillis; |
|||
Date exp = new Date(expMillis); |
|||
|
|||
// 设置jwt的body |
|||
JwtBuilder builder = Jwts.builder() |
|||
// 如果有私有声明,一定要先设置这个自己创建的私有的声明,这个是给builder的claim赋值,一旦写在标准的声明赋值之后,就是覆盖了那些标准的声明的 |
|||
.setClaims(claims) |
|||
// 设置签名使用的签名算法和签名使用的秘钥 |
|||
.signWith(signatureAlgorithm, secretKey.getBytes(StandardCharsets.UTF_8)) |
|||
// 设置过期时间 |
|||
.setExpiration(exp); |
|||
|
|||
return builder.compact(); |
|||
} |
|||
|
|||
/** |
|||
* Token解密 |
|||
* |
|||
* @param secretKey jwt秘钥 此秘钥一定要保留好在服务端, 不能暴露出去, 否则sign就可以被伪造, 如果对接多个客户端建议改造成多个 |
|||
* @param token 加密后的token |
|||
* @return |
|||
*/ |
|||
public static Claims parseJWT(String secretKey, String token) { |
|||
// 得到DefaultJwtParser |
|||
Claims claims = Jwts.parser() |
|||
// 设置签名的秘钥 |
|||
.setSigningKey(secretKey.getBytes(StandardCharsets.UTF_8)) |
|||
// 设置需要解析的jwt |
|||
.parseClaimsJws(token).getBody(); |
|||
return claims; |
|||
} |
|||
// |
|||
// private static final String SECRET = "willy"; |
|||
// public static Claims parseToken(String token) { |
|||
// return Jwts.parser() |
|||
// .setSigningKey(SECRET) |
|||
// .parseClaimsJws(token) |
|||
// .getBody(); |
|||
// } |
|||
} |
@ -0,0 +1,30 @@ |
|||
//package com.lottery.utils; |
|||
// |
|||
//import org.springframework.stereotype.Component; |
|||
// |
|||
///** |
|||
// * @program: lottery |
|||
// * @ClassName LoginHttpUtils |
|||
// * @description: |
|||
// * @author: wwl |
|||
// * @create: 2025-07-16 10:07 |
|||
// * @Version 1.0 |
|||
// **/ |
|||
// |
|||
//@Component |
|||
//public class LoginHttpUtils { |
|||
// private final RestTemplate restTemplate; |
|||
// |
|||
// public HttpUtil(RestTemplateBuilder restTemplateBuilder) { |
|||
// this.restTemplate = restTemplateBuilder.build(); |
|||
// } |
|||
// |
|||
// public <T> T post(String url, Object request, Class<T> responseType) { |
|||
// HttpHeaders headers = new HttpHeaders(); |
|||
// headers.setContentType(MediaType.APPLICATION_JSON); |
|||
// HttpEntity<Object> entity = new HttpEntity<>(request, headers); |
|||
// |
|||
// ResponseEntity<T> response = restTemplate.postForEntity(url, entity, responseType); |
|||
// return response.getBody(); |
|||
// } |
|||
//} |
@ -0,0 +1,68 @@ |
|||
package com.lottery.utils; |
|||
|
|||
/** |
|||
* @program: lottery-system |
|||
* @ClassName ValidationUtils |
|||
* @description: |
|||
* @author:jihaipeng |
|||
* @create: 2025−07-15 16:26 |
|||
* @Version 1.0 |
|||
**/ |
|||
|
|||
public class ValidationUtils { |
|||
|
|||
/** |
|||
* 校验数值是否满足: |
|||
* 1. 可以小于 0(允许负数) |
|||
* 2. 必须是整数(不能是小数) |
|||
* |
|||
* @param value 待校验的数值(可以是 String 或 Number 类型) |
|||
* @return 是否校验通过 |
|||
*/ |
|||
public static boolean validateInteger(Object value) { |
|||
try { |
|||
// 如果是 String 类型,先尝试转为 Number |
|||
if (value instanceof String) { |
|||
// 去掉可能的空格 |
|||
String strValue = ((String) value).trim(); |
|||
|
|||
// 检查是否为空 |
|||
if (strValue.isEmpty()) { |
|||
return false; |
|||
} |
|||
|
|||
// 尝试解析为 Long(支持更大的整数范围) |
|||
try { |
|||
Long.parseLong(strValue); |
|||
} catch (NumberFormatException e) { |
|||
return false; // 解析失败,说明不是整数 |
|||
} |
|||
} |
|||
// 如果是 Number 类型(Integer、Long 等) |
|||
else if (value instanceof Number) { |
|||
Number num = (Number) value; |
|||
|
|||
// 检查是否是整数(避免浮点数) |
|||
if (num instanceof Double || num instanceof Float) { |
|||
double doubleValue = num.doubleValue(); |
|||
if (doubleValue != Math.floor(doubleValue)) { |
|||
return false; // 有小数部分,不合法 |
|||
} |
|||
} |
|||
|
|||
// 如果是 Integer 或 Long,直接合法 |
|||
return true; |
|||
} |
|||
// 其他类型(如非数值类型) |
|||
else { |
|||
return false; |
|||
} |
|||
|
|||
// 所有检查通过 |
|||
return true; |
|||
|
|||
} catch (Exception e) { |
|||
return false; // 任何异常都视为不合法 |
|||
} |
|||
} |
|||
} |
@ -0,0 +1,21 @@ |
|||
package com.lottery.dto; |
|||
|
|||
import lombok.Data; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
|
|||
import javax.validation.constraints.NotNull; |
|||
|
|||
/** |
|||
* @program: lottery-system |
|||
* @ClassName ActivityDto |
|||
* @description: |
|||
* @author:jihaipeng |
|||
* @create: 2025−07-21 16:07 |
|||
* @Version 1.0 |
|||
**/ |
|||
@Data |
|||
@Slf4j |
|||
public class ActivityDto { |
|||
@NotNull(message = "活动id不能为空") |
|||
private Integer activityId; |
|||
} |
@ -0,0 +1,27 @@ |
|||
package com.lottery.dto; |
|||
|
|||
import lombok.AllArgsConstructor; |
|||
import lombok.Data; |
|||
import lombok.NoArgsConstructor; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
|
|||
import javax.validation.constraints.NotNull; |
|||
|
|||
/** |
|||
* @program: lottery-system |
|||
* @ClassName ActivityTimeDto |
|||
* @description: |
|||
* @author:jihaipeng |
|||
* @create: 2025−07-21 17:47 |
|||
* @Version 1.0 |
|||
**/ |
|||
@Data |
|||
@Slf4j |
|||
@AllArgsConstructor |
|||
@NoArgsConstructor |
|||
public class ActivityTimeDto { |
|||
@NotNull(message = "活动ID不能为空") |
|||
private Integer activityId; |
|||
@NotNull(message = "时间不能为空") |
|||
private Integer time; |
|||
} |
@ -0,0 +1,29 @@ |
|||
package com.lottery.dto; |
|||
|
|||
import lombok.AllArgsConstructor; |
|||
import lombok.Data; |
|||
import lombok.NoArgsConstructor; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
|
|||
import javax.validation.constraints.NotNull; |
|||
import javax.validation.constraints.Size; |
|||
|
|||
/** |
|||
* @program: lottery |
|||
* @ClassName AdminLogin |
|||
* @description: |
|||
* @author: wwl |
|||
* @create: 2025-07-16 10:19 |
|||
* @Version 1.0 |
|||
**/ |
|||
@Data |
|||
@NoArgsConstructor |
|||
@AllArgsConstructor |
|||
@Slf4j |
|||
public class AdminLogin { |
|||
@NotNull(message = "用户名不能为空") |
|||
@Size(min = 8,max = 8,message = "用户名长度为8位") |
|||
private String username; |
|||
@NotNull(message = "密码不能为空") |
|||
private String password; |
|||
} |
@ -0,0 +1,26 @@ |
|||
package com.lottery.dto; |
|||
|
|||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties; |
|||
import lombok.Data; |
|||
|
|||
/** |
|||
* @program: lottery |
|||
* @ClassName ApiUrlResp |
|||
* @description: |
|||
* @author: wwl |
|||
* @create: 2025-07-26 14:12 |
|||
* @Version 1.0 |
|||
**/ |
|||
@Data |
|||
@JsonIgnoreProperties(ignoreUnknown = true) |
|||
public class ApiUrlResp { |
|||
|
|||
private int code; |
|||
private String msg; |
|||
private Data data; |
|||
|
|||
@lombok.Data |
|||
public static class Data { |
|||
private String loc_market; |
|||
} |
|||
} |
@ -0,0 +1,32 @@ |
|||
package com.lottery.dto; |
|||
|
|||
import lombok.Data; |
|||
|
|||
import javax.validation.constraints.NotNull; |
|||
import javax.validation.constraints.Pattern; |
|||
import javax.validation.constraints.Size; |
|||
|
|||
/** |
|||
* @program: lottery |
|||
* @ClassName WinUserDto |
|||
* @description: |
|||
* @author: wwl |
|||
* @create: 2025-07-16 14:01 |
|||
* @Version 1.0 |
|||
**/ |
|||
@Data |
|||
public class FixUserDto { |
|||
|
|||
@NotNull(message = "用户名不能为空") |
|||
@Size(max = 30, message = "姓名长度不能超过30个字符") |
|||
@Pattern(regexp = "^[\\u4e00-\\u9fa5\\u3400-\\u4dbf\\u20000-\\u2a6df\\u2a700-\\u2b73f\\u2b740-\\u2b81f\\u2b820-\\u2ceaf\\uf900-\\ufaffa-zA-Z]+$", |
|||
message = "姓名只能包含中文(简繁体)或英文字符") |
|||
private String username; |
|||
|
|||
@Pattern(regexp = "^\\d{5,12}$", message = "精网号必须是5到12位的数字") |
|||
@NotNull(message = "精网号不能为空") |
|||
private String jwcode; |
|||
|
|||
@NotNull(message = "等级不能为空") |
|||
private Long GradeId; |
|||
} |
@ -0,0 +1,35 @@ |
|||
package com.lottery.dto; |
|||
|
|||
import com.fasterxml.jackson.annotation.JsonFormat; |
|||
import lombok.Data; |
|||
|
|||
import javax.validation.constraints.NotNull; |
|||
import javax.validation.constraints.Size; |
|||
import java.time.LocalDate; |
|||
import java.util.Date; |
|||
|
|||
/** |
|||
* @program: lottery-system |
|||
* @ClassName FundingDataDto |
|||
* @description: |
|||
* @author:jihaipeng |
|||
* @create: 2025−07-14 15:09 |
|||
* @Version 1.0 |
|||
**/ |
|||
@Data |
|||
public class FundingActivityDto { |
|||
|
|||
@NotNull(message = "活动名称不能为空") |
|||
@Size(min = 1, max = 20, message = "活动名称长度必须在 1 到 20 个字符之间") |
|||
private String activityName; // 活动名称 |
|||
@NotNull(message = "市场一不能为空") |
|||
private Integer marketOne; // 市场一(如USA) |
|||
@NotNull(message = "市场二不能为空") |
|||
private Integer marketTwo; // 市场二(如HK) |
|||
@NotNull(message = "活动状态不能为空") |
|||
private Integer status; // 状态(1-启用,0-禁用) |
|||
@NotNull(message = "活动开始时间不能为空") |
|||
private LocalDate startTime; // 活动开始时间 |
|||
@NotNull(message = "活动结束时间不能为空") |
|||
private LocalDate endTime; // 活动结束时间 |
|||
} |
@ -0,0 +1,26 @@ |
|||
package com.lottery.dto; |
|||
|
|||
|
|||
|
|||
import lombok.Data; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
|
|||
import javax.validation.constraints.NotNull; |
|||
|
|||
/** |
|||
* @program: lottery-system |
|||
* @ClassName FundingRecordDto |
|||
* @description: |
|||
* @author:jihaipeng |
|||
* @create: 2025−07-15 14:27 |
|||
* @Version 1.0 |
|||
**/ |
|||
@Slf4j |
|||
@Data |
|||
public class FundingRecordDto { |
|||
|
|||
@NotNull(message = "活动ID不能为空") |
|||
private Integer activityId; |
|||
@NotNull(message = "市场标识不能为空") |
|||
private Integer marketSign; |
|||
} |
@ -0,0 +1,30 @@ |
|||
package com.lottery.dto; |
|||
|
|||
|
|||
import lombok.Data; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
|
|||
import javax.validation.constraints.NotNull; |
|||
import java.time.LocalDateTime; |
|||
|
|||
/** |
|||
* @program: lottery-system |
|||
* @ClassName FundingUserDto |
|||
* @description: |
|||
* @author:jihaipeng |
|||
* @create: 2025−07-15 10:47 |
|||
* @Version 1.0 |
|||
**/ |
|||
@Slf4j |
|||
@Data |
|||
public class FundingUserDto { |
|||
|
|||
@NotNull(message = "活动ID不能为空") |
|||
public Integer activityId; |
|||
|
|||
private Integer marketSign; // 市场标识(usa/hk) |
|||
private String username; // 用户名 |
|||
private String jwcode; // 用户唯一码 |
|||
private Integer page=1; |
|||
private Integer pagesize=10; |
|||
} |
@ -0,0 +1,44 @@ |
|||
package com.lottery.dto; |
|||
|
|||
import com.baomidou.mybatisplus.annotation.TableField; |
|||
import lombok.Data; |
|||
|
|||
import javax.validation.constraints.*; |
|||
|
|||
/** |
|||
* @program: lottery-system |
|||
* @ClassName GradeDto |
|||
* @description: |
|||
* @author: wwl |
|||
* @create: 2025-07-14 14:56 |
|||
* @Version 1.0 |
|||
**/ |
|||
@Data |
|||
public class GradeDto { |
|||
|
|||
private Long id; |
|||
|
|||
|
|||
@NotNull(message = "等级名称不能为空") |
|||
@Size(max = 15, message = "等级名称长度不能超过15个字符") |
|||
@Pattern(regexp = "^[a-zA-Z0-9\\u4e00-\\u9fa5]+$", message = "等级名称只能包含中文、英文和数字") |
|||
private String gradeName; // 等级名称 |
|||
|
|||
@Min(value = 1, message = "数量必须为正数") |
|||
@Max(value = 100000, message = "数量不能超过100000") |
|||
@NotNull(message = "数量不能为空") |
|||
private Integer amount; //等级数量 |
|||
|
|||
|
|||
@Min(value = 0, message = "数量必须为正数") |
|||
@Max(value = 100, message = "数量不能超过100") |
|||
@NotNull(message = "排序数不能为空") |
|||
private Integer sort; |
|||
|
|||
|
|||
@Min(value = 1, message = "数量必须为正数") |
|||
@Max(value = 500, message = "数量不能超过500") |
|||
@NotNull(message = "每轮人数不能为空") |
|||
private Integer perWin; |
|||
|
|||
} |
@ -0,0 +1,19 @@ |
|||
package com.lottery.dto; |
|||
|
|||
import lombok.Data; |
|||
|
|||
/** |
|||
* @program: lottery |
|||
* @ClassName PageSimpleDto |
|||
* @description: |
|||
* @author: wwl |
|||
* @create: 2025-07-22 16:50 |
|||
* @Version 1.0 |
|||
**/ |
|||
@Data |
|||
public class PageSimpleDto { |
|||
|
|||
private Integer pageNum; |
|||
|
|||
private Integer pageSize; |
|||
} |
@ -1,51 +0,0 @@ |
|||
package com.lottery.dto; |
|||
|
|||
/** |
|||
* @program: lottery-system |
|||
* @ClassName Gift |
|||
* @description: |
|||
* @author:jihaipeng |
|||
* @create: 2025−07-10 15:20 |
|||
* @Version 1.0 |
|||
**/ |
|||
import com.baomidou.mybatisplus.annotation.TableName; |
|||
import lombok.AllArgsConstructor; |
|||
import lombok.Data; |
|||
import lombok.NoArgsConstructor; |
|||
|
|||
import java.math.BigDecimal; |
|||
import java.util.Date; |
|||
@Data |
|||
@AllArgsConstructor |
|||
@NoArgsConstructor |
|||
public class Prize { |
|||
// 主键ID |
|||
private Long id; |
|||
|
|||
// 名称 |
|||
private String name; |
|||
|
|||
// 描述 |
|||
private String description; |
|||
|
|||
// 图片URL |
|||
private String imageUrl; |
|||
|
|||
// 库存数量 |
|||
private Integer stock; |
|||
|
|||
// 中奖概率 |
|||
private BigDecimal probability; |
|||
|
|||
// 奖品类型 |
|||
private Integer prizeType; |
|||
|
|||
// 状态 |
|||
private Integer status; |
|||
|
|||
// 创建时间 |
|||
private Date createTime; |
|||
|
|||
// 更新时间 |
|||
private Date updateTime; |
|||
} |
@ -0,0 +1,36 @@ |
|||
package com.lottery.dto; |
|||
|
|||
import lombok.AllArgsConstructor; |
|||
import lombok.Data; |
|||
import lombok.NoArgsConstructor; |
|||
|
|||
import javax.validation.constraints.NotNull; |
|||
import javax.validation.constraints.Pattern; |
|||
import javax.validation.constraints.Size; |
|||
|
|||
/** |
|||
* @program: lottery |
|||
* @ClassName PrizeDto |
|||
* @description: |
|||
* @author: wwl |
|||
* @create: 2025-07-15 11:56 |
|||
* @Version 1.0 |
|||
**/ |
|||
@Data |
|||
@AllArgsConstructor |
|||
@NoArgsConstructor |
|||
public class PrizeDto { |
|||
|
|||
private Long id; |
|||
|
|||
@NotNull(message = "奖品名不能为空") |
|||
@Size(max = 15, message = "奖品名长度不能超过15个字符") |
|||
@Pattern(regexp = "^[\\u4e00-\\u9fa5a-zA-Z0-9]+$", message = "奖品名只能包含中文、英文或数字") |
|||
private String prizeName; |
|||
|
|||
@NotNull(message = "等级不能为空") |
|||
private Long gradeId; |
|||
|
|||
@NotNull(message = "请上传图片") |
|||
private String imageUrl; |
|||
} |
@ -0,0 +1,19 @@ |
|||
package com.lottery.dto; |
|||
|
|||
import lombok.Data; |
|||
|
|||
/** |
|||
* @program: lottery |
|||
* @ClassName SimpleQueryDto |
|||
* @description: |
|||
* @author: wwl |
|||
* @create: 2025-07-24 16:06 |
|||
* @Version 1.0 |
|||
**/ |
|||
@Data |
|||
public class SimpleQueryDto { |
|||
|
|||
private Integer pageNum; |
|||
|
|||
private Integer pageSize; |
|||
} |
@ -0,0 +1,26 @@ |
|||
package com.lottery.dto; |
|||
|
|||
import lombok.Data; |
|||
|
|||
/** |
|||
* @program: lottery |
|||
* @ClassName StartLotteryDto |
|||
* @description: |
|||
* @author: wwl |
|||
* @create: 2025-07-16 16:49 |
|||
* @Version 1.0 |
|||
**/ |
|||
@Data |
|||
public class StartLotteryDto { |
|||
private int perWin; |
|||
|
|||
private Long gradeId; |
|||
|
|||
private Long PrizeId; |
|||
|
|||
private int remainNum; |
|||
|
|||
// private String gradeName; |
|||
|
|||
// private String prizeName; |
|||
} |
@ -0,0 +1,29 @@ |
|||
package com.lottery.dto; |
|||
|
|||
import lombok.AllArgsConstructor; |
|||
import lombok.Data; |
|||
import lombok.NoArgsConstructor; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
|
|||
import javax.validation.constraints.NotNull; |
|||
import javax.validation.constraints.Pattern; |
|||
import javax.validation.constraints.Size; |
|||
|
|||
/** |
|||
* @program: lottery-system |
|||
* @ClassName UserByJwcodeDto |
|||
* @description: |
|||
* @author:jihaipeng |
|||
* @create: 2025−07-22 11:51 |
|||
* @Version 1.0 |
|||
**/ |
|||
@Data |
|||
@AllArgsConstructor |
|||
@NoArgsConstructor |
|||
@Slf4j |
|||
public class UserByJwcodeDto { |
|||
@NotNull(message = "jwcode不能为空") |
|||
@Size(min = 8, max = 8, message = "jwcode必须是8位") |
|||
@Pattern(regexp = "^\\d{8}$", message = "jwcode必须全是数字") |
|||
private String jwcode; |
|||
} |
@ -0,0 +1,24 @@ |
|||
package com.lottery.dto; |
|||
|
|||
import lombok.AllArgsConstructor; |
|||
import lombok.Data; |
|||
import lombok.NoArgsConstructor; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
|
|||
/** |
|||
* @program: lottery-system |
|||
* @ClassName UserByJwcodePageDto |
|||
* @description: |
|||
* @author:jihaipeng |
|||
* @create: 2025−07-22 15:03 |
|||
* @Version 1.0 |
|||
**/ |
|||
@Data |
|||
@AllArgsConstructor |
|||
@NoArgsConstructor |
|||
@Slf4j |
|||
public class UserByJwcodePageDto { |
|||
private String jwcode; |
|||
private int pageNum = 1; |
|||
private int pageSize = 10; |
|||
} |
@ -0,0 +1,35 @@ |
|||
package com.lottery.dto; |
|||
|
|||
import lombok.Builder; |
|||
import lombok.Data; |
|||
|
|||
import javax.validation.constraints.NotNull; |
|||
import javax.validation.constraints.Pattern; |
|||
import javax.validation.constraints.Size; |
|||
|
|||
/** |
|||
* @program: lottery |
|||
* @ClassName UserDto |
|||
* @description: |
|||
* @author: wwl |
|||
* @create: 2025-07-15 15:12 |
|||
* @Version 1.0 |
|||
**/ |
|||
|
|||
@Data |
|||
@Builder |
|||
public class UserDto { |
|||
private int id; |
|||
|
|||
@NotNull(message = "用户名不能为空") |
|||
@Size(max = 30, message = "姓名长度不能超过30个字符") |
|||
@Pattern(regexp = "^[\\u4e00-\\u9fa5\\u3400-\\u4dbf\\u20000-\\u2a6df\\u2a700-\\u2b73f\\u2b740-\\u2b81f\\u2b820-\\u2ceaf\\uf900-\\ufaffa-zA-Z]+$", |
|||
message = "姓名只能包含中文(简繁体)或英文字符") |
|||
private String username; |
|||
|
|||
|
|||
@Size(min = 8, max = 8, message = "jwcode必须是8位") |
|||
@Pattern(regexp = "^\\d{8}$", message = "jwcode必须全是数字") |
|||
@NotNull(message = "精网号不能为空") |
|||
private String jwcode; |
|||
} |
@ -0,0 +1,26 @@ |
|||
package com.lottery.dto; |
|||
|
|||
import com.alibaba.excel.annotation.ExcelProperty; |
|||
import lombok.Data; |
|||
|
|||
import javax.validation.constraints.NotNull; |
|||
import javax.validation.constraints.Pattern; |
|||
import javax.validation.constraints.Size; |
|||
|
|||
/** |
|||
* @program: lottery |
|||
* @ClassName UserImportDto |
|||
* @description: |
|||
* @author: wwl |
|||
* @create: 2025-07-15 16:27 |
|||
* @Version 1.0 |
|||
**/ |
|||
@Data |
|||
public class UserImportDto { |
|||
|
|||
@ExcelProperty("姓名") |
|||
private String username; |
|||
|
|||
@ExcelProperty("精网号") |
|||
private String jwcode; |
|||
} |
@ -0,0 +1,21 @@ |
|||
package com.lottery.dto; |
|||
|
|||
import lombok.Data; |
|||
|
|||
import java.io.Serializable; |
|||
|
|||
/** |
|||
* @program: lottery-system |
|||
* @ClassName UserLoginDto |
|||
* @description: |
|||
* @author: wwl |
|||
* @create: 2025-07-12 10:07 |
|||
* @Version 1.0 |
|||
**/ |
|||
@Data |
|||
public class UserLoginDto implements Serializable { |
|||
|
|||
// private String username; |
|||
|
|||
private String password; |
|||
} |
@ -0,0 +1,25 @@ |
|||
package com.lottery.dto; |
|||
|
|||
import lombok.Data; |
|||
|
|||
/** |
|||
* @program: lottery |
|||
* @ClassName UserQueryDto |
|||
* @description: |
|||
* @author: wwl |
|||
* @create: 2025-07-15 16:03 |
|||
* @Version 1.0 |
|||
**/ |
|||
@Data |
|||
public class UserQueryDto { |
|||
|
|||
private Long gradeId; |
|||
|
|||
private String username; |
|||
|
|||
private String jwcode; |
|||
|
|||
private Integer pageNum; |
|||
|
|||
private Integer pageSize; |
|||
} |
@ -0,0 +1,27 @@ |
|||
package com.lottery.dto; |
|||
|
|||
import lombok.AllArgsConstructor; |
|||
import lombok.Data; |
|||
import lombok.NoArgsConstructor; |
|||
|
|||
import javax.validation.constraints.NotNull; |
|||
|
|||
/** |
|||
* @program: lottery-system |
|||
* @ClassName VriableAdd |
|||
* @description: |
|||
* @author:jihaipeng |
|||
* @create: 2025−07-18 19:17 |
|||
* @Version 1.0 |
|||
**/ |
|||
@Data |
|||
@AllArgsConstructor |
|||
@NoArgsConstructor |
|||
public class VriableAddDto { |
|||
@NotNull(message = "活动ID不能为空") |
|||
private Integer activityId; |
|||
@NotNull(message = "市场不能为空") |
|||
private Integer stock; |
|||
@NotNull(message = "添加数量不能为空") |
|||
private Integer addTotal; |
|||
} |
@ -0,0 +1,34 @@ |
|||
package com.lottery.dto; |
|||
|
|||
import com.alibaba.excel.annotation.ExcelProperty; |
|||
import com.alibaba.excel.annotation.format.DateTimeFormat; |
|||
import lombok.Data; |
|||
|
|||
import java.util.Date; |
|||
|
|||
@Data |
|||
public class WinUserExportDto { |
|||
|
|||
@ExcelProperty("序号") |
|||
private int index; |
|||
|
|||
@ExcelProperty("姓名") |
|||
private String username; |
|||
|
|||
@ExcelProperty("精网号") |
|||
private String jwcode; |
|||
|
|||
@ExcelProperty("中奖等级") |
|||
private String GradeName; |
|||
|
|||
@ExcelProperty("所中礼品") |
|||
private String prizeName; |
|||
|
|||
@ExcelProperty("中奖时间") |
|||
@DateTimeFormat("yyyy-MM-dd HH:mm:ss") |
|||
private Date winTime; |
|||
|
|||
@ExcelProperty("所在地区") |
|||
private String locMarket; |
|||
|
|||
} |
@ -0,0 +1,26 @@ |
|||
package com.lottery.dto; |
|||
|
|||
import lombok.Data; |
|||
|
|||
import javax.persistence.criteria.CriteriaBuilder; |
|||
|
|||
/** |
|||
* @program: lottery |
|||
* @ClassName WinUserQuertDto |
|||
* @description: |
|||
* @author: wwl |
|||
* @create: 2025-07-17 14:12 |
|||
* @Version 1.0 |
|||
**/ |
|||
@Data |
|||
public class WinUserQueryDto { |
|||
private String username; |
|||
|
|||
private String jwcode; |
|||
|
|||
private Long gradeId; |
|||
|
|||
private Integer pageNum; |
|||
|
|||
private Integer pageSize; |
|||
} |
@ -0,0 +1,39 @@ |
|||
package com.lottery.entity; |
|||
|
|||
import com.baomidou.mybatisplus.annotation.*; |
|||
import com.fasterxml.jackson.annotation.JsonFormat; |
|||
import lombok.AllArgsConstructor; |
|||
import lombok.Data; |
|||
import lombok.NoArgsConstructor; |
|||
|
|||
import java.time.LocalDate; |
|||
import java.time.LocalDateTime; |
|||
import java.util.Date; |
|||
|
|||
/** |
|||
* @program: lottery-system |
|||
* @ClassName Activity |
|||
* @description: |
|||
* @author:jihaipeng |
|||
* @create: 2025−07-14 14:17 |
|||
* @Version 1.0 |
|||
**/ |
|||
@Data |
|||
@AllArgsConstructor |
|||
@NoArgsConstructor |
|||
@TableName("activity") |
|||
public class Activity { |
|||
@TableId(type = IdType.AUTO) // 主键自增策略 |
|||
private Integer id; |
|||
|
|||
private String activityName; // 活动名称 |
|||
private Integer marketOne; // 市场一(如USA) |
|||
private Integer marketTwo; // 市场二(如HK) |
|||
private Integer status; // 状态(1-启用,0-禁用) |
|||
@TableField(value = "create_time", fill = FieldFill.INSERT) // 自动填充创建时间 |
|||
private LocalDateTime createdTime; // 创建时间 |
|||
@TableField(value = "create_time", fill = FieldFill.INSERT) // 自动填充创建时间 |
|||
private LocalDateTime updatedTime; // 更新时间 |
|||
private LocalDate startTime; // 活动开始时间 |
|||
private LocalDate endTime; // 活动结束时间 |
|||
} |
@ -0,0 +1,32 @@ |
|||
package com.lottery.entity; |
|||
|
|||
import com.baomidou.mybatisplus.annotation.IdType; |
|||
import com.baomidou.mybatisplus.annotation.TableId; |
|||
import com.baomidou.mybatisplus.annotation.TableName; |
|||
import lombok.AllArgsConstructor; |
|||
import lombok.Data; |
|||
import lombok.NoArgsConstructor; |
|||
|
|||
import java.util.Date; |
|||
|
|||
/** |
|||
* @program: lottery-system |
|||
* @ClassName FundingData |
|||
* @description: |
|||
* @author:jihaipeng |
|||
* @create: 2025−07-14 14:52 |
|||
* @Version 1.0 |
|||
**/ |
|||
@Data |
|||
@AllArgsConstructor |
|||
@NoArgsConstructor |
|||
@TableName("data") |
|||
public class FundingData { |
|||
@TableId(type = IdType.AUTO) // 主键自增策略 |
|||
private Integer id; |
|||
private Integer time; // 统计时间(众筹初始时间) |
|||
private String stock; // 市场(美股/港股) |
|||
private Integer addTotal; // 虚拟参与人数 |
|||
private Integer activityId; // 关联的活动ID |
|||
|
|||
} |
@ -0,0 +1,45 @@ |
|||
package com.lottery.entity; |
|||
|
|||
import com.alibaba.excel.annotation.ExcelProperty; |
|||
import com.baomidou.mybatisplus.annotation.IdType; |
|||
import com.baomidou.mybatisplus.annotation.TableId; |
|||
import com.baomidou.mybatisplus.annotation.TableName; |
|||
import com.fasterxml.jackson.annotation.JsonFormat; |
|||
import lombok.AllArgsConstructor; |
|||
import lombok.Data; |
|||
import lombok.NoArgsConstructor; |
|||
|
|||
import java.time.LocalDateTime; |
|||
|
|||
/** |
|||
* @program: lottery-system |
|||
* @ClassName FundingExport |
|||
* @description: |
|||
* @author:jihaipeng |
|||
* @create: 2025−07-17 10:49 |
|||
* @Version 1.0 |
|||
**/ |
|||
@Data |
|||
@AllArgsConstructor |
|||
@NoArgsConstructor |
|||
public class FundingExport { |
|||
|
|||
@ExcelProperty("用户名") |
|||
private String username; // 用户名 |
|||
@ExcelProperty("精网号") // 定义 Excel 表头为“用户唯一码” |
|||
private String jwcode; // 用户唯一码 |
|||
@ExcelProperty("市场") // 定义 Excel 表头为“市场标识” |
|||
private String text; // 市场标识(usa/hk) |
|||
|
|||
@ExcelProperty("参与时间") // 定义 Excel 表头为“参与时间” |
|||
private LocalDateTime joinTime; // 参与时间 |
|||
// 方法1:通过 @JsonFormat 直接格式化(适用于JSON序列化) |
|||
|
|||
@JsonFormat(pattern = "yyyy年M月d日 HH:mm") |
|||
public LocalDateTime getJoinTime() { |
|||
return joinTime; |
|||
} |
|||
|
|||
@ExcelProperty("所在地区") |
|||
private String locMarket; |
|||
} |
@ -0,0 +1,36 @@ |
|||
package com.lottery.entity; |
|||
|
|||
import com.baomidou.mybatisplus.annotation.IdType; |
|||
import com.baomidou.mybatisplus.annotation.TableId; |
|||
import com.baomidou.mybatisplus.annotation.TableName; |
|||
import lombok.AllArgsConstructor; |
|||
import lombok.Data; |
|||
import lombok.NoArgsConstructor; |
|||
|
|||
import java.time.LocalDate; |
|||
import java.time.LocalDateTime; |
|||
import java.util.Date; |
|||
|
|||
/** |
|||
* @program: lottery-system |
|||
* @ClassName Funding |
|||
* @description: |
|||
* @author:jihaipeng |
|||
* @create: 2025−07-14 14:36 |
|||
* @Version 1.0 |
|||
**/ |
|||
@Data |
|||
@AllArgsConstructor |
|||
@NoArgsConstructor |
|||
@TableName("z_user") |
|||
public class FundingUser { |
|||
@TableId(type = IdType.AUTO) // 主键自增策略 |
|||
private Integer id; |
|||
private String marketSign; // 市场标识(usa/hk) |
|||
private String username; // 用户名 |
|||
private String jwcode; // 用户唯一码 |
|||
private LocalDateTime joinTime; // 参与时间 |
|||
private Integer activityId; // 关联的活动ID |
|||
|
|||
private String LocMarket; //地区 |
|||
} |
@ -0,0 +1,52 @@ |
|||
package com.lottery.entity; |
|||
|
|||
import com.baomidou.mybatisplus.annotation.*; |
|||
import lombok.AllArgsConstructor; |
|||
import lombok.Builder; |
|||
import lombok.Data; |
|||
import lombok.NoArgsConstructor; |
|||
|
|||
import javax.validation.constraints.Max; |
|||
import javax.validation.constraints.Min; |
|||
import java.util.Date; |
|||
|
|||
/** |
|||
* @program: lottery-system |
|||
* @ClassName Grade |
|||
* @description: |
|||
* @author: wwl |
|||
* @create: 2025-07-12 17:31 |
|||
* @Version 1.0 |
|||
**/ |
|||
|
|||
@Data |
|||
@AllArgsConstructor |
|||
@NoArgsConstructor |
|||
@TableName("grade") |
|||
@Builder |
|||
public class Grade { |
|||
|
|||
@TableId(type = IdType.AUTO) // 主键自增策略 |
|||
private Long id; |
|||
|
|||
private String gradeName; // 等级名称 |
|||
|
|||
private int amount; //等级数量 |
|||
|
|||
private int sort; |
|||
|
|||
@TableField("per_win") |
|||
private int perWin; //每轮抽取人数 |
|||
|
|||
@TableField("remain_num") |
|||
private int remainNum; |
|||
|
|||
@TableField("is_del") |
|||
private int isDel; |
|||
|
|||
@TableField(value = "create_time", fill = FieldFill.INSERT) // 自动填充创建时间 |
|||
private Date createTime; |
|||
|
|||
@TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE) // 自动填充更新时间 |
|||
private Date updateTime; |
|||
} |
@ -0,0 +1,30 @@ |
|||
package com.lottery.entity; |
|||
|
|||
import com.baomidou.mybatisplus.annotation.IdType; |
|||
import com.baomidou.mybatisplus.annotation.TableId; |
|||
import com.baomidou.mybatisplus.annotation.TableName; |
|||
import lombok.AllArgsConstructor; |
|||
import lombok.Data; |
|||
import lombok.NoArgsConstructor; |
|||
|
|||
import java.time.LocalDate; |
|||
import java.time.LocalDateTime; |
|||
|
|||
/** |
|||
* @program: lottery-system |
|||
* @ClassName JwcodeTable |
|||
* @description: |
|||
* @author:jihaipeng |
|||
* @create: 2025−07-22 15:11 |
|||
* @Version 1.0 |
|||
**/ |
|||
@Data |
|||
@NoArgsConstructor |
|||
@AllArgsConstructor |
|||
@TableName("jwcode_table") |
|||
public class JwcodeTable { |
|||
@TableId(value = "id", type = IdType.AUTO) // 明确指定主键字段和生成策略 |
|||
private Long id; |
|||
private String jwcode; |
|||
private LocalDateTime createTime; |
|||
} |
@ -0,0 +1,28 @@ |
|||
package com.lottery.entity; |
|||
|
|||
import com.baomidou.mybatisplus.annotation.TableName; |
|||
import lombok.AllArgsConstructor; |
|||
import lombok.Data; |
|||
import lombok.NoArgsConstructor; |
|||
|
|||
/** |
|||
* @program: lottery-system |
|||
* @ClassName market |
|||
* @description: |
|||
* @author:jihaipeng |
|||
* @create: 2025−07-16 12:01 |
|||
* @Version 1.0 |
|||
**/ |
|||
|
|||
@Data |
|||
@AllArgsConstructor |
|||
@NoArgsConstructor |
|||
@TableName("market") |
|||
public class Market { |
|||
private Integer id; |
|||
private String market; |
|||
private String text; |
|||
private String icon; |
|||
private Integer des; |
|||
private Integer flag; |
|||
} |
@ -0,0 +1,36 @@ |
|||
package com.lottery.entity; |
|||
|
|||
import com.baomidou.mybatisplus.annotation.IdType; |
|||
import com.baomidou.mybatisplus.annotation.TableField; |
|||
import com.baomidou.mybatisplus.annotation.TableId; |
|||
import com.baomidou.mybatisplus.annotation.TableName; |
|||
import lombok.AllArgsConstructor; |
|||
import lombok.Data; |
|||
import lombok.NoArgsConstructor; |
|||
|
|||
/** |
|||
* @program: lottery |
|||
* @ClassName UserDetail |
|||
* @description: |
|||
* @author: wwl |
|||
* @create: 2025-07-16 9:32 |
|||
* @Version 1.0 |
|||
**/ |
|||
@Data |
|||
@AllArgsConstructor |
|||
@NoArgsConstructor |
|||
@TableName("user_detail") |
|||
public class UserDetail { |
|||
|
|||
@TableId(type = IdType.AUTO) |
|||
private Long id; // 主键ID(表中未显示但建议添加) |
|||
|
|||
private Long userId; |
|||
|
|||
private Long gradeId; |
|||
|
|||
private int isFixed; |
|||
|
|||
@TableField("is_del") |
|||
private int isDel; |
|||
} |
@ -0,0 +1,23 @@ |
|||
//package com.lottery.vo; |
|||
// |
|||
//import com.alibaba.excel.converters.string.StringErrorConverter; |
|||
//import lombok.Data; |
|||
// |
|||
///** |
|||
// * @program: lottery |
|||
// * @ClassName AdminLoginVo |
|||
// * @description: |
|||
// * @author: wwl |
|||
// * @create: 2025-07-21 11:46 |
|||
// * @Version 1.0 |
|||
// **/ |
|||
//@Data |
|||
//public class AdminLoginVo { |
|||
// |
|||
// private long id; |
|||
// |
|||
// private String username; |
|||
// |
|||
// private String token; |
|||
// |
|||
//} |
@ -0,0 +1,21 @@ |
|||
package com.lottery.vo; |
|||
|
|||
import lombok.Data; |
|||
|
|||
import java.time.LocalDate; |
|||
|
|||
/** |
|||
* @program: lottery-system |
|||
* @ClassName ApiFundingTimeVo |
|||
* @description: |
|||
* @author:jihaipeng |
|||
* @create: 2025−07-16 13:49 |
|||
* @Version 1.0 |
|||
**/ |
|||
@Data |
|||
public class ApiFundingTimeVo { |
|||
private Integer marketOne; |
|||
private Integer marketTwo; |
|||
private LocalDate startTime; |
|||
private LocalDate endTime; |
|||
} |
@ -0,0 +1,16 @@ |
|||
package com.lottery.vo; |
|||
|
|||
import lombok.Data; |
|||
|
|||
import java.time.LocalDate; |
|||
import java.util.List; |
|||
|
|||
|
|||
@Data |
|||
public class ApiFundingVO { |
|||
private Integer activityId; |
|||
private List<ApimarketVo> data; |
|||
private LocalDate startTime; |
|||
private LocalDate endTime; |
|||
private Integer Totalcount; |
|||
} |
@ -0,0 +1,23 @@ |
|||
package com.lottery.vo; |
|||
|
|||
import lombok.Data; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
|
|||
import java.time.LocalDate; |
|||
|
|||
/** |
|||
* @program: lottery-system |
|||
* @ClassName ApimarketVo |
|||
* @description: |
|||
* @author:jihaipeng |
|||
* @create: 2025−07-21 14:10 |
|||
* @Version 1.0 |
|||
**/ |
|||
@Slf4j |
|||
@Data |
|||
public class ApimarketVo { |
|||
private Integer marketId; |
|||
private String market; |
|||
private Integer marketCount; |
|||
private String marketStatus; |
|||
} |
@ -0,0 +1,26 @@ |
|||
package com.lottery.vo; |
|||
|
|||
import lombok.Data; |
|||
|
|||
import java.time.LocalDate; |
|||
import java.util.Date; |
|||
|
|||
/** |
|||
* @program: lottery-system |
|||
* @ClassName FundingDataDto |
|||
* @description: |
|||
* @author:jihaipeng |
|||
* @create: 2025−07-14 15:09 |
|||
* @Version 1.0 |
|||
**/ |
|||
@Data |
|||
public class FundingActivityVo { |
|||
private Integer id; |
|||
private String activityName; // 活动名称 |
|||
|
|||
private String marketOne; // 市场一(如USA) |
|||
private String marketTwo; // 市场二(如HK) |
|||
private Integer status; // 状态(1-启用,0-禁用) |
|||
private LocalDate startTime; // 活动开始时间 |
|||
private LocalDate endTime; // 活动结束时间 |
|||
} |
@ -0,0 +1,23 @@ |
|||
package com.lottery.vo; |
|||
|
|||
import lombok.AllArgsConstructor; |
|||
import lombok.Data; |
|||
import lombok.NoArgsConstructor; |
|||
|
|||
import java.util.List; |
|||
|
|||
/** |
|||
* @program: lottery-system |
|||
* @ClassName FundingDataVO |
|||
* @description: |
|||
* @author:jihaipeng |
|||
* @create: 2025−07-18 11:06 |
|||
* @Version 1.0 |
|||
**/ |
|||
@Data |
|||
@AllArgsConstructor |
|||
@NoArgsConstructor |
|||
public class FundingDataVO { |
|||
private List<FundingVo> data; |
|||
private Integer time; |
|||
} |
@ -0,0 +1,20 @@ |
|||
package com.lottery.vo; |
|||
|
|||
import com.baomidou.mybatisplus.annotation.IdType; |
|||
import com.baomidou.mybatisplus.annotation.TableId; |
|||
import lombok.Data; |
|||
|
|||
import java.time.LocalDateTime; |
|||
|
|||
/** |
|||
* @program: lottery |
|||
* @ClassName FundingUserNewVo |
|||
* @description: |
|||
* @author: wwl |
|||
* @create: 2025-07-26 13:49 |
|||
* @Version 1.0 |
|||
**/ |
|||
@Data |
|||
public class FundingUserNewVo { |
|||
|
|||
} |
@ -0,0 +1,26 @@ |
|||
package com.lottery.vo; |
|||
|
|||
import com.baomidou.mybatisplus.annotation.IdType; |
|||
import com.baomidou.mybatisplus.annotation.TableId; |
|||
import lombok.Data; |
|||
|
|||
import java.time.LocalDateTime; |
|||
|
|||
/** |
|||
* @program: lottery-system |
|||
* @ClassName FundingUserDto |
|||
* @description: |
|||
* @author:jihaipeng |
|||
* @create: 2025−07-15 10:09 |
|||
* @Version 1.0 |
|||
**/ |
|||
@Data |
|||
public class FundingUserVo { |
|||
@TableId(type = IdType.AUTO) // 主键自增策略 |
|||
private Integer id; |
|||
private String text; // 市场标识(usa/hk) |
|||
private String username; // 用户名 |
|||
private String jwcode; // 用户唯一码 |
|||
private LocalDateTime joinTime; // 参与时间 |
|||
private String locMarket; |
|||
} |
@ -0,0 +1,27 @@ |
|||
package com.lottery.vo; |
|||
|
|||
import lombok.AllArgsConstructor; |
|||
import lombok.Data; |
|||
import lombok.NoArgsConstructor; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
|
|||
/** |
|||
* @program: lottery-system |
|||
* @ClassName FundingVo |
|||
* @description: |
|||
* @author:jihaipeng |
|||
* @create: 2025−07-21 16:43 |
|||
* @Version 1.0 |
|||
**/ |
|||
@Data |
|||
@Slf4j |
|||
@AllArgsConstructor |
|||
@NoArgsConstructor |
|||
public class FundingVo { |
|||
private Integer marketId; |
|||
private String market; |
|||
private Integer show; |
|||
private Integer markerVirtual; |
|||
private Integer markerTotal; |
|||
|
|||
} |
@ -0,0 +1,18 @@ |
|||
package com.lottery.vo; |
|||
|
|||
import lombok.Data; |
|||
|
|||
/** |
|||
* @program: lottery |
|||
* @ClassName GradeSimpleVo |
|||
* @description: |
|||
* @author: wwl |
|||
* @create: 2025-07-19 11:50 |
|||
* @Version 1.0 |
|||
**/ |
|||
@Data |
|||
public class GradeSimpleVo { |
|||
|
|||
private String gradeName; |
|||
private int id; |
|||
} |
@ -0,0 +1,33 @@ |
|||
package com.lottery.vo; |
|||
|
|||
import com.baomidou.mybatisplus.annotation.FieldFill; |
|||
import com.baomidou.mybatisplus.annotation.TableField; |
|||
import lombok.Data; |
|||
|
|||
import java.util.Date; |
|||
|
|||
/** |
|||
* @program: lottery-system |
|||
* @ClassName GradeVo |
|||
* @description: |
|||
* @author: wwl |
|||
* @create: 2025-07-12 17:32 |
|||
* @Version 1.0 |
|||
**/ |
|||
@Data |
|||
public class GradeVo { |
|||
|
|||
private Long id; |
|||
|
|||
private String GradeName; // 等级名称 |
|||
|
|||
private int amount; //等级数量 |
|||
|
|||
private int sort; |
|||
|
|||
private int perWin; |
|||
|
|||
private Date createTime; |
|||
|
|||
private Date updateTime; |
|||
} |
@ -0,0 +1,23 @@ |
|||
package com.lottery.vo; |
|||
|
|||
import lombok.Data; |
|||
|
|||
import java.util.List; |
|||
|
|||
/** |
|||
* @program: lottery |
|||
* @ClassName ImportResultVo |
|||
* @description: |
|||
* @author: wwl |
|||
* @create: 2025-07-26 17:10 |
|||
* @Version 1.0 |
|||
**/ |
|||
// 导入结果内部类 |
|||
@Data |
|||
public class ImportResultVo { |
|||
private int successCount; |
|||
private int addedCount; |
|||
private int updatedCount; |
|||
private int skipCount; |
|||
private List<String> invalidJwCodes; |
|||
} |
@ -0,0 +1,26 @@ |
|||
package com.lottery.vo; |
|||
|
|||
import lombok.AllArgsConstructor; |
|||
import lombok.Data; |
|||
import lombok.NoArgsConstructor; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
|
|||
import java.time.LocalDate; |
|||
import java.time.LocalDateTime; |
|||
|
|||
/** |
|||
* @program: lottery-system |
|||
* @ClassName LoginUserVo |
|||
* @description: |
|||
* @author:jihaipeng |
|||
* @create: 2025−07-22 15:00 |
|||
* @Version 1.0 |
|||
**/ |
|||
@Data |
|||
@Slf4j |
|||
@NoArgsConstructor |
|||
@AllArgsConstructor |
|||
public class LoginUserVo { |
|||
private String jwcode; |
|||
private LocalDateTime createTime; |
|||
} |
@ -0,0 +1,21 @@ |
|||
package com.lottery.vo; |
|||
|
|||
import lombok.Data; |
|||
|
|||
import java.util.List; |
|||
|
|||
/** |
|||
* @program: lottery |
|||
* @ClassName lotteryVo |
|||
* @description: |
|||
* @author: wwl |
|||
* @create: 2025-07-19 10:45 |
|||
* @Version 1.0 |
|||
**/ |
|||
|
|||
@Data |
|||
public class LotteryVo { |
|||
|
|||
private List<UserVo> data; // 只包含jwcode和username |
|||
private Boolean round; // 整体是否还有下一轮 |
|||
} |
@ -0,0 +1,21 @@ |
|||
package com.lottery.vo; |
|||
|
|||
import lombok.AllArgsConstructor; |
|||
import lombok.Data; |
|||
import lombok.NoArgsConstructor; |
|||
|
|||
/** |
|||
* @program: lottery-system |
|||
* @ClassName marketVo |
|||
* @description: |
|||
* @author:jihaipeng |
|||
* @create: 2025−07-18 17:37 |
|||
* @Version 1.0 |
|||
**/ |
|||
@Data |
|||
@NoArgsConstructor |
|||
@AllArgsConstructor |
|||
public class MarketVo { |
|||
private Integer id; |
|||
private String market; |
|||
} |
@ -0,0 +1,37 @@ |
|||
package com.lottery.vo; |
|||
|
|||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
|||
import lombok.Data; |
|||
|
|||
import java.io.Serializable; |
|||
import java.util.List; |
|||
|
|||
/** |
|||
* @program: lottery |
|||
* @ClassName PageInfo |
|||
* @description: |
|||
* @author: wwl |
|||
* @create: 2025-07-15 10:20 |
|||
* @Version 1.0 |
|||
**/ |
|||
@Data |
|||
public class PageInfo<T> implements Serializable { |
|||
private static final long serialVersionUID = 1L; |
|||
|
|||
private List<T> list; // 当前页数据 |
|||
private long total; // 总记录数 |
|||
private int pageNum; // 当前页码 |
|||
private int pageSize; // 每页数量 |
|||
private int pages; // 总页数 |
|||
|
|||
// 可以从Page对象构造 |
|||
public static <T> PageInfo<T> of(Page<?> page, List<T> list) { |
|||
PageInfo<T> pageInfo = new PageInfo<>(); |
|||
pageInfo.setList(list); |
|||
pageInfo.setTotal(page.getTotal()); |
|||
pageInfo.setPageNum((int) page.getCurrent()); |
|||
pageInfo.setPageSize((int) page.getSize()); |
|||
pageInfo.setPages((int) page.getPages()); |
|||
return pageInfo; |
|||
} |
|||
} |
@ -0,0 +1,38 @@ |
|||
package com.lottery.vo; |
|||
|
|||
import lombok.Data; |
|||
|
|||
/** |
|||
* @program: lottery-system |
|||
* @ClassName PrizeAndGradeVo |
|||
* @description: |
|||
* @author: wwl |
|||
* @create: 2025-07-14 13:34 |
|||
* @Version 1.0 |
|||
**/ |
|||
@Data |
|||
public class PrizeAndGradeVo { |
|||
|
|||
private String prizeName; |
|||
|
|||
private String imageUrl; |
|||
|
|||
private String GradeName; |
|||
|
|||
private int amount; |
|||
|
|||
private int perWin; |
|||
|
|||
private int remainNum; |
|||
|
|||
private int gradeId; |
|||
|
|||
private int prizeId; |
|||
|
|||
// private Integer isRound; |
|||
// |
|||
// private Integer currentRound; |
|||
|
|||
// 总轮次 |
|||
|
|||
} |
@ -0,0 +1,33 @@ |
|||
package com.lottery.vo; |
|||
|
|||
import lombok.Data; |
|||
|
|||
import java.security.PrivateKey; |
|||
import java.util.Date; |
|||
|
|||
/** |
|||
* @program: lottery-system |
|||
* @ClassName PrizeVo |
|||
* @description: |
|||
* @author: wwl |
|||
* @create: 2025-07-12 16:48 |
|||
* @Version 1.0 |
|||
**/ |
|||
@Data |
|||
public class PrizeVo { |
|||
|
|||
private Long id; |
|||
|
|||
private String PrizeName; |
|||
|
|||
private String imageUrl; |
|||
|
|||
private Long GradeId; |
|||
|
|||
private String gradeName; |
|||
|
|||
private Date createTime; |
|||
|
|||
private Date updateTime; |
|||
|
|||
} |
@ -0,0 +1,29 @@ |
|||
package com.lottery.vo; |
|||
|
|||
import lombok.AllArgsConstructor; |
|||
import lombok.Builder; |
|||
import lombok.Data; |
|||
import lombok.NoArgsConstructor; |
|||
|
|||
import java.io.Serializable; |
|||
|
|||
/** |
|||
* @program: lottery-system |
|||
* @ClassName UserLoginVo |
|||
* @description: |
|||
* @author: wwl |
|||
* @create: 2025-07-12 10:15 |
|||
* @Version 1.0 |
|||
**/ |
|||
@Data |
|||
@Builder |
|||
@AllArgsConstructor |
|||
@NoArgsConstructor |
|||
public class UserLoginVo implements Serializable { |
|||
|
|||
private long id; |
|||
|
|||
private String username; |
|||
|
|||
private String token; |
|||
} |
@ -0,0 +1,19 @@ |
|||
package com.lottery.vo; |
|||
|
|||
/** |
|||
* @program: lottery-system |
|||
* @ClassName UserVo |
|||
* @description: |
|||
* @author: wwl |
|||
* @create: 2025-07-12 15:15 |
|||
* @Version 1.0 |
|||
**/ |
|||
|
|||
import lombok.Data; |
|||
|
|||
@Data |
|||
public class UserVo { |
|||
private Long id; |
|||
private String jwcode; |
|||
private String username; |
|||
} |
@ -0,0 +1,35 @@ |
|||
package com.lottery.vo; |
|||
|
|||
import com.fasterxml.jackson.annotation.JsonFormat; |
|||
import lombok.Data; |
|||
|
|||
import java.util.Date; |
|||
|
|||
/** |
|||
* @program: lottery |
|||
* @ClassName WinUserVo |
|||
* @description: |
|||
* @author: wwl |
|||
* @create: 2025-07-17 14:09 |
|||
* @Version 1.0 |
|||
**/ |
|||
|
|||
@Data |
|||
public class WinUserVo { |
|||
|
|||
private Long id; |
|||
|
|||
private String username; |
|||
|
|||
private String jwcode; |
|||
|
|||
private String gradeName; |
|||
|
|||
private String prizeName; |
|||
|
|||
|
|||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") |
|||
private Date winTime; // 中奖时间; |
|||
|
|||
private String locMarket; |
|||
} |
@ -1,14 +1,25 @@ |
|||
package com.lottery; |
|||
|
|||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
|||
import com.lottery.admin.mapper.AdminUserMapper; |
|||
import com.lottery.entity.User; |
|||
import org.mybatis.spring.annotation.MapperScan; |
|||
import org.springframework.beans.factory.annotation.Autowired; |
|||
import org.springframework.boot.CommandLineRunner; |
|||
import org.springframework.boot.SpringApplication; |
|||
import org.springframework.boot.WebApplicationType; |
|||
import org.springframework.boot.autoconfigure.SpringBootApplication; |
|||
import org.springframework.context.annotation.ComponentScan; |
|||
import org.springframework.transaction.annotation.EnableTransactionManagement; |
|||
|
|||
import javax.swing.*; |
|||
|
|||
@SpringBootApplication |
|||
@MapperScan("com.lottery.*.mapper") |
|||
@EnableTransactionManagement |
|||
public class LotteryApplication { |
|||
public static void main(String[] args) { |
|||
SpringApplication.run(LotteryApplication.class, args); |
|||
} |
|||
|
|||
} |
@ -0,0 +1,128 @@ |
|||
package com.lottery.admin.controller; |
|||
|
|||
import com.lottery.admin.mapper.AdminGradeMapper; |
|||
import com.lottery.admin.service.AdminGradeService; |
|||
import com.lottery.dto.GradeDto; |
|||
import com.lottery.dto.PageSimpleDto; |
|||
import com.lottery.entity.Grade; |
|||
import com.lottery.exception.SomeException; |
|||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
|||
import com.lottery.result.Result; |
|||
import com.lottery.utils.ConvertBeanUtil; |
|||
import com.lottery.vo.GradeSimpleVo; |
|||
import com.lottery.vo.GradeVo; |
|||
import com.lottery.vo.PageInfo; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.slf4j.Logger; |
|||
import org.slf4j.LoggerFactory; |
|||
import org.springframework.beans.factory.annotation.Autowired; |
|||
import org.springframework.stereotype.Service; |
|||
import org.springframework.web.bind.annotation.*; |
|||
|
|||
import javax.validation.Valid; |
|||
import java.util.Date; |
|||
import java.util.List; |
|||
|
|||
|
|||
/** |
|||
* @program: lottery-system |
|||
* @ClassName GradeController |
|||
* @description: |
|||
* @author: wwl |
|||
* @create: 2025-07-14 14:44 |
|||
* @Version 1.0 |
|||
**/ |
|||
|
|||
//TODo 删除等级时 把奖品表关联删除。。删除用户表时,把内定用户表关联删除,,,,增加内定多一个逻辑:如果增加的内定用户已存在表中,增加失败(其实就是一个用户只能内定一个等级) |
|||
|
|||
@RestController |
|||
@RequestMapping("/admin/grade") |
|||
public class AdminGradeController { |
|||
|
|||
@Autowired |
|||
private AdminGradeService adminGradeService; |
|||
|
|||
@Autowired |
|||
private AdminGradeMapper adminGradeMapper; |
|||
|
|||
private final static Logger LOGGER = LoggerFactory.getLogger(AdminGradeController.class); |
|||
|
|||
@PostMapping("/list") |
|||
public Result<PageInfo<GradeVo>> selectGrade(@RequestBody PageSimpleDto pageSimpleDto){ |
|||
if (pageSimpleDto.getPageNum() == null) { |
|||
pageSimpleDto.setPageNum(1); |
|||
} |
|||
|
|||
if (pageSimpleDto.getPageSize() == null) { |
|||
pageSimpleDto.setPageSize(10); |
|||
} |
|||
|
|||
LOGGER.info("列分页查询等级表, 页码: {}, 每页大小: {}", pageSimpleDto.getPageNum(), pageSimpleDto.getPageSize()); |
|||
|
|||
PageInfo<GradeVo> pageSelectGrade = adminGradeService.pageSelectGrade(pageSimpleDto.getPageNum(), pageSimpleDto.getPageSize()); |
|||
return Result.success(pageSelectGrade); |
|||
} |
|||
|
|||
@PostMapping("/details") |
|||
public Result<GradeVo> selectById(@RequestParam Long id){ |
|||
LOGGER.info("根据id查找等级:{}",id); |
|||
return Result.success(ConvertBeanUtil.convert(adminGradeService.getById(id), GradeVo.class)); |
|||
} |
|||
|
|||
@PostMapping("/allGradeName") |
|||
public Result<List<GradeSimpleVo>> selectAllGrade(){ |
|||
LOGGER.info("查询所有等级,仅反等级名和id,为了下拉框"); |
|||
return Result.success(adminGradeService.selectAllGrade()); |
|||
} |
|||
|
|||
@PostMapping("/add") |
|||
public Result add(@RequestBody @Valid GradeDto gradeDto){ |
|||
|
|||
LOGGER.info("新增等级:{}", gradeDto); |
|||
|
|||
LambdaQueryWrapper<Grade> queryWrapper = new LambdaQueryWrapper<>(); |
|||
queryWrapper.eq(Grade::getGradeName, gradeDto.getGradeName()) |
|||
.eq(Grade::getIsDel, 0); |
|||
if (adminGradeService.count(queryWrapper) > 0) { |
|||
return Result.failure("等级已存在,新增失败"); |
|||
} |
|||
|
|||
if (!adminGradeService.saveGrade(gradeDto)) return Result.failure("每轮抽取的人数不能大于总数,"); |
|||
|
|||
return Result.success(); |
|||
} |
|||
|
|||
@PostMapping("/update") |
|||
public Result update(@RequestBody GradeDto gradeDto){ |
|||
|
|||
LOGGER.info("修改等级:{}", gradeDto); |
|||
if (adminGradeService.getById(gradeDto.getId())== null) { |
|||
return Result.failure("修改的id不存在"); |
|||
} |
|||
|
|||
LambdaQueryWrapper<Grade> queryWrapper = new LambdaQueryWrapper<>(); |
|||
queryWrapper.eq(Grade::getGradeName, gradeDto.getGradeName()) |
|||
.eq(Grade::getIsDel, 0) |
|||
.ne(Grade::getId, gradeDto.getId()); |
|||
if (adminGradeService.count(queryWrapper) > 0) { |
|||
return Result.failure("等级已存在,修改失败"); |
|||
} |
|||
|
|||
Grade grade = ConvertBeanUtil.convert(gradeDto, Grade.class); |
|||
grade.setUpdateTime(new Date()); |
|||
grade.setRemainNum(gradeDto.getAmount()); |
|||
|
|||
if (!adminGradeService.updateGradeById(gradeDto)) return Result.failure("每轮抽取人数不能大于总数"); |
|||
return Result.success(); |
|||
} |
|||
|
|||
//TODO |
|||
@PostMapping("/delete") |
|||
public Result delete(@RequestParam Long id){ |
|||
LOGGER.info("删除id为:{} 的等级" ,id); |
|||
if (!adminGradeService.removeGradeById(id)){ |
|||
return Result.failure("删除失败"); |
|||
} |
|||
return Result.success(); |
|||
} |
|||
} |
@ -0,0 +1,50 @@ |
|||
package com.lottery.admin.controller; |
|||
|
|||
import com.baomidou.mybatisplus.core.metadata.IPage; |
|||
import com.lottery.admin.service.AdminIsLoginService; |
|||
import com.lottery.dto.UserByJwcodeDto; |
|||
import com.lottery.dto.UserByJwcodePageDto; |
|||
import com.lottery.result.Result; |
|||
import com.lottery.vo.LoginUserVo; |
|||
import com.lottery.vo.PageInfo; |
|||
import org.springframework.beans.factory.annotation.Autowired; |
|||
import org.springframework.web.bind.annotation.RequestBody; |
|||
import org.springframework.web.bind.annotation.RequestMapping; |
|||
import org.springframework.web.bind.annotation.RestController; |
|||
|
|||
import javax.validation.Valid; |
|||
|
|||
/** |
|||
* @program: lottery-system |
|||
* @ClassName LoginController |
|||
* @description: |
|||
* @author:jihaipeng |
|||
* @create: 2025−07-22 11:15 |
|||
* @Version 1.0 |
|||
**/ |
|||
@RestController |
|||
@RequestMapping("/admin/isLogin") |
|||
public class AdminIsLoginController { |
|||
|
|||
@Autowired |
|||
private AdminIsLoginService adminIsLoginService; |
|||
//添加精网号 |
|||
@RequestMapping("/addUser") |
|||
public Result<String> addUser(@RequestBody @Valid UserByJwcodeDto userDto) { |
|||
return adminIsLoginService.addUser(userDto.getJwcode()); |
|||
} |
|||
|
|||
//删除精网号 |
|||
@RequestMapping("/deleteUser") |
|||
public Result<String> deleteUser(@RequestBody @Valid UserByJwcodeDto userDto) { |
|||
return adminIsLoginService.deleteUser(userDto.getJwcode()); |
|||
} |
|||
|
|||
//分页返回数据 |
|||
@RequestMapping("/selectByJwcode") |
|||
public Result<PageInfo<LoginUserVo>> selectByJwcode(@RequestBody UserByJwcodePageDto userByJwcodePageDto) { |
|||
return adminIsLoginService.selectByJwcode(userByJwcodePageDto.getJwcode(), userByJwcodePageDto.getPageNum(), userByJwcodePageDto.getPageSize(),userByJwcodePageDto.getPageNum()); |
|||
} |
|||
|
|||
|
|||
} |
@ -0,0 +1,89 @@ |
|||
package com.lottery.admin.controller; |
|||
|
|||
import com.lottery.admin.service.AdminPrizeService; |
|||
import com.lottery.dto.PageSimpleDto; |
|||
import com.lottery.dto.PrizeDto; |
|||
import com.lottery.dto.FixUserDto; |
|||
import com.lottery.result.Result; |
|||
import com.lottery.vo.PageInfo; |
|||
import com.lottery.vo.PrizeVo; |
|||
import org.slf4j.Logger; |
|||
import org.slf4j.LoggerFactory; |
|||
import org.springframework.beans.factory.annotation.Autowired; |
|||
import org.springframework.web.bind.annotation.*; |
|||
|
|||
import javax.validation.Valid; |
|||
|
|||
/** |
|||
* @program: lottery |
|||
* @ClassName AdminPrizeController |
|||
* @description: |
|||
* @author: wwl |
|||
* @create: 2025-07-15 10:06 |
|||
* @Version 1.0 |
|||
**/ |
|||
@RestController |
|||
@RequestMapping("/admin/prize") |
|||
public class AdminPrizeController { |
|||
|
|||
@Autowired |
|||
private AdminPrizeService adminPrizeService; |
|||
|
|||
private final static Logger LOGGER = LoggerFactory.getLogger(AdminPrizeController.class); |
|||
|
|||
@PostMapping("list") |
|||
public Result<PageInfo<PrizeVo>> listPrize(@RequestBody PageSimpleDto pageSimpleDto) { |
|||
if (pageSimpleDto.getPageNum() == null) { |
|||
pageSimpleDto.setPageNum(1); |
|||
} |
|||
if (pageSimpleDto.getPageSize() == null) { |
|||
pageSimpleDto.setPageSize(10); |
|||
} |
|||
LOGGER.info("列分页查询l礼品表, 页码: {}, 每页大小: {}", pageSimpleDto.getPageNum(), pageSimpleDto.getPageSize()); |
|||
|
|||
PageInfo<PrizeVo> pageInfo = adminPrizeService.pageListPrize(pageSimpleDto.getPageNum(), pageSimpleDto.getPageSize()); |
|||
return Result.success(pageInfo); |
|||
} |
|||
|
|||
@PostMapping("/details") |
|||
public Result<PrizeVo> selectById(@RequestParam Long id) { |
|||
LOGGER.info("根据id查询奖品:{}",id); |
|||
return Result.success(adminPrizeService.getPrizeById(id)); |
|||
} |
|||
|
|||
//TODO 添加图片oss |
|||
@PostMapping("/add") |
|||
public Result addPrize(@RequestBody @Valid PrizeDto prizeDto) { |
|||
LOGGER.info("新增奖品:{}", prizeDto); |
|||
return adminPrizeService.add(prizeDto); |
|||
} |
|||
|
|||
@PostMapping("/update") |
|||
public Result updatePrize(@RequestBody @Valid PrizeDto prizeDto) { |
|||
LOGGER.info("修改奖品信息:{}",prizeDto); |
|||
|
|||
if (adminPrizeService.getById(prizeDto.getId())== null) { |
|||
return Result.failure("修改的id不存在"); |
|||
} |
|||
|
|||
return adminPrizeService.updatePrize(prizeDto); |
|||
} |
|||
|
|||
@PostMapping("/delete") |
|||
public Result deletePrize(@RequestParam Long id) { |
|||
LOGGER.info("根基id:{},删除奖品",id); |
|||
if (!adminPrizeService.removePrizeById(id)){ |
|||
return Result.failure("删除失败"); |
|||
} |
|||
return Result.success(); |
|||
} |
|||
|
|||
//新增内定 |
|||
@PostMapping("/addFixUser") |
|||
public Result addWinUser(@RequestBody @Valid FixUserDto fixUserDto) throws Exception { |
|||
if(!fixUserDto.getJwcode().startsWith("9")){ |
|||
return Result.failure("添加精网号失败"); |
|||
} |
|||
return adminPrizeService.addWinUser(fixUserDto); |
|||
} |
|||
} |
@ -0,0 +1,200 @@ |
|||
package com.lottery.admin.controller; |
|||
|
|||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
|||
import com.lottery.admin.mapper.AdminUserMapper; |
|||
import com.lottery.admin.service.AdminUserDetailService; |
|||
import com.lottery.admin.service.AdminUserService; |
|||
import com.lottery.dto.AdminLogin; |
|||
import com.lottery.dto.UserDto; |
|||
import com.lottery.dto.UserImportDto; |
|||
import com.lottery.dto.UserQueryDto; |
|||
import com.lottery.entity.User; |
|||
import com.lottery.result.Result; |
|||
import com.lottery.utils.ConvertBeanUtil; |
|||
import com.lottery.utils.ExcelUtil; |
|||
import com.lottery.vo.PageInfo; |
|||
import com.lottery.vo.UserLoginVo; |
|||
import com.lottery.vo.UserVo; |
|||
import org.apache.logging.log4j.util.PerformanceSensitive; |
|||
import org.slf4j.Logger; |
|||
import org.slf4j.LoggerFactory; |
|||
import org.springframework.beans.factory.annotation.Autowired; |
|||
import org.springframework.web.bind.annotation.*; |
|||
import org.springframework.web.multipart.MultipartFile; |
|||
|
|||
import javax.servlet.http.HttpServletRequest; |
|||
import javax.validation.Valid; |
|||
import java.util.*; |
|||
import java.util.stream.Collectors; |
|||
|
|||
/** |
|||
* @program: lottery |
|||
* @ClassName AdminUserController |
|||
* @description: |
|||
* @author: wwl |
|||
* @create: 2025-07-15 14:56 |
|||
* @Version 1.0 |
|||
**/ |
|||
|
|||
@RestController |
|||
@RequestMapping("/admin/user") |
|||
public class AdminUserController { |
|||
|
|||
@Autowired |
|||
private AdminUserService adminUserService; |
|||
|
|||
@Autowired |
|||
private AdminUserDetailService adminUserDetailService; |
|||
|
|||
private final static Logger LOGGER = LoggerFactory.getLogger(AdminUserController.class); |
|||
|
|||
@Autowired |
|||
private com.lottery.propertise.jwtPropertice jwtPropertice; |
|||
|
|||
@PostMapping("/add") |
|||
public Result add(@RequestBody @Valid UserDto userDto) throws Exception { |
|||
|
|||
if(!userDto.getJwcode().startsWith("9")){ |
|||
return Result.failure("添加精网号失败"); |
|||
} |
|||
LOGGER.info("新增用户:{}",userDto); |
|||
if (!adminUserService.addUser(userDto)){ |
|||
return Result.failure("用户名或精网号已存在,无法添加"); |
|||
} |
|||
return Result.success(); |
|||
} |
|||
|
|||
@PostMapping("/list") |
|||
public Result<PageInfo<UserVo>> getAllUser(@RequestBody UserQueryDto userQueryDto ){ |
|||
LOGGER.info("分页查询所有用户"); |
|||
if (userQueryDto.getPageNum() == null) { |
|||
userQueryDto.setPageNum(1); |
|||
} |
|||
if (userQueryDto.getPageSize() == null) { |
|||
userQueryDto.setPageSize(10); |
|||
} |
|||
|
|||
return Result.success(adminUserService.listUser(userQueryDto.getPageNum(), userQueryDto.getPageSize(), userQueryDto)); |
|||
} |
|||
|
|||
|
|||
|
|||
@PostMapping("/delete") |
|||
public Result delete(@RequestParam Long id) { |
|||
LOGGER.info("根据id删除用户:{}",id); |
|||
adminUserService.removeUserById(id); |
|||
return Result.success(); |
|||
} |
|||
|
|||
@PostMapping("/delete/batch") |
|||
public Result deleteBatch(@RequestParam List<Long> ids) { |
|||
LOGGER.info("批量删除用户:{}",ids); |
|||
if (ids == null || ids.size() == 0) { |
|||
return Result.failure("请传入id"); |
|||
} |
|||
if (adminUserService.removeUserBatchByIds(ids)){ |
|||
return Result.success(); |
|||
}; |
|||
return Result.failure("删除失败"); |
|||
} |
|||
|
|||
@PostMapping("/import") |
|||
public Result importUsers(@RequestParam("file") MultipartFile file) { |
|||
LOGGER.info("开始导入用户Excel文件: {}", file.getOriginalFilename()); |
|||
|
|||
// 1. 基本文件校验 |
|||
if (file.isEmpty()) { |
|||
return Result.failure("请上传文件"); |
|||
} |
|||
|
|||
String fileName = file.getOriginalFilename(); |
|||
if (!fileName.endsWith(".xlsx") && !fileName.endsWith(".xls")) { |
|||
return Result.failure("仅支持Excel文件(.xlsx, .xls)"); |
|||
} |
|||
return adminUserService.importUsers(file); |
|||
} |
|||
|
|||
@PostMapping("/login") |
|||
public Result<UserLoginVo> login(@RequestBody AdminLogin adminLogin) { |
|||
|
|||
LOGGER.info("管理员登录:{}",adminLogin); |
|||
return adminUserService.AdminUserlogin(adminLogin); |
|||
} |
|||
|
|||
|
|||
@PostMapping("/list/fix") |
|||
public Result<PageInfo<UserVo>> getAllFixUser(@RequestBody UserQueryDto userQueryDto){ |
|||
LOGGER.info("分页查询所有内定用户"); |
|||
//if (userQueryDto.getPageNum() == null) { |
|||
// userQueryDto.setPageNum(1); |
|||
//} |
|||
//if (userQueryDto.getPageSize() == null) { |
|||
// userQueryDto.setPageSize(10); |
|||
//} |
|||
System.out.println(userQueryDto.getPageNum() + " " +userQueryDto.getPageSize() + " " +userQueryDto); |
|||
return Result.success(adminUserDetailService.listFixUser(userQueryDto.getPageNum(),userQueryDto.getPageSize(),userQueryDto)); |
|||
} |
|||
|
|||
// @PostMapping |
|||
// public Result<PageInfo<UserVo>> getAllFixUserById(@RequestBody UserQueryDto userQueryDto){ |
|||
// |
|||
// } |
|||
|
|||
|
|||
@PostMapping("/delete/fix") |
|||
public Result deleteFix(@RequestParam Long id) { |
|||
LOGGER.info("根据id删除内定用户:{}",id); |
|||
if (adminUserDetailService.removeFixUserById(id)){ |
|||
return Result.success(); |
|||
}; |
|||
return Result.failure("删除失败"); |
|||
} |
|||
|
|||
@PostMapping("/delete/fix/batch") |
|||
public Result deleteBatchFix(@RequestParam List<Long> ids) { |
|||
LOGGER.info("批量删除内定用户:{}",ids); |
|||
if (ids == null || ids.size() == 0) { |
|||
return Result.failure("ids is null"); |
|||
} |
|||
if (adminUserDetailService.removeFixUserBatchByIds(ids)){ |
|||
return Result.success(); |
|||
}; |
|||
return Result.failure("删除失败"); |
|||
} |
|||
|
|||
@PostMapping("/import/fix") |
|||
public Result importFixUsers(@RequestParam("file") MultipartFile file, @RequestParam Long gradeId) { |
|||
LOGGER.info("开始导入内定用户Excel文件: {}", file.getOriginalFilename()); |
|||
|
|||
// 1. 基本文件校验 |
|||
if (file.isEmpty()) { |
|||
return Result.failure("请上传文件"); |
|||
} |
|||
|
|||
String fileName = file.getOriginalFilename(); |
|||
if (!fileName.endsWith(".xlsx") && !fileName.endsWith(".xls")) { |
|||
return Result.failure("仅支持Excel文件(.xlsx, .xls)"); |
|||
} |
|||
return adminUserDetailService.importFixUsers(file,gradeId); |
|||
} |
|||
|
|||
/** |
|||
* 退出 |
|||
* @return |
|||
*/ |
|||
@PostMapping("/logout") |
|||
public Result<String> logout(HttpServletRequest request) { |
|||
LOGGER.info("用户登出"); |
|||
String token = request.getHeader(jwtPropertice.getUserTokenName()); |
|||
return adminUserService.logout(token); |
|||
} |
|||
|
|||
@Autowired |
|||
private AdminUserMapper adminUserMapper; |
|||
@PostMapping("/updateUserWin") |
|||
public void updateUser(){ |
|||
LambdaUpdateWrapper<User> updateWrapper = new LambdaUpdateWrapper<>(); |
|||
updateWrapper.set(User::getIsWin, 0); |
|||
adminUserMapper.update(null, updateWrapper); |
|||
} |
|||
} |
@ -0,0 +1,57 @@ |
|||
package com.lottery.admin.controller; |
|||
|
|||
import com.lottery.admin.service.AdminWinService; |
|||
import com.lottery.dto.UserQueryDto; |
|||
import com.lottery.dto.WinUserQueryDto; |
|||
import com.lottery.result.Result; |
|||
import com.lottery.vo.PageInfo; |
|||
import com.lottery.vo.UserVo; |
|||
import com.lottery.vo.WinUserVo; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.slf4j.Logger; |
|||
import org.slf4j.LoggerFactory; |
|||
import org.springframework.beans.factory.annotation.Autowired; |
|||
import org.springframework.web.bind.annotation.*; |
|||
|
|||
import javax.servlet.http.HttpServletResponse; |
|||
import java.io.IOException; |
|||
|
|||
/** |
|||
* @program: lottery-system |
|||
* @ClassName wincontroller |
|||
* @description: |
|||
* @author:wwl |
|||
* @create: 2025−07-17 15:18 |
|||
* @Version 1.0 |
|||
**/ |
|||
@Slf4j |
|||
@RestController |
|||
@RequestMapping("/admin/win") |
|||
public class AdminWInController { |
|||
|
|||
@Autowired |
|||
private AdminWinService adminWinService; |
|||
|
|||
private final static Logger LOGGER = LoggerFactory.getLogger(AdminWInController.class); |
|||
|
|||
|
|||
@PostMapping("/list") |
|||
public Result<PageInfo<WinUserVo>> WInController(@RequestBody WinUserQueryDto winUserQueryDto) { |
|||
LOGGER.info("分页查询所有中奖用户"); |
|||
|
|||
if (winUserQueryDto.getPageNum() == null) { |
|||
winUserQueryDto.setPageNum(1); |
|||
} |
|||
if (winUserQueryDto.getPageSize() == null) { |
|||
winUserQueryDto.setPageSize(10); |
|||
} |
|||
return Result.success(adminWinService.listWinUser(winUserQueryDto.getPageNum(), winUserQueryDto.getPageSize(), winUserQueryDto)); |
|||
} |
|||
|
|||
|
|||
@PostMapping("/export") |
|||
public void export(@RequestBody WinUserQueryDto winUserQueryDto, HttpServletResponse response) throws IOException { |
|||
log.info("导出中奖用户数据"); |
|||
adminWinService.exportWinUser(winUserQueryDto, response); |
|||
} |
|||
} |
@ -0,0 +1,183 @@ |
|||
package com.lottery.admin.controller; |
|||
|
|||
|
|||
import com.fasterxml.jackson.core.JsonProcessingException; |
|||
import com.fasterxml.jackson.databind.ObjectMapper; |
|||
import com.lottery.dto.*; |
|||
import com.lottery.admin.service.IFundingService; |
|||
import com.lottery.result.Result; |
|||
import com.lottery.vo.FundingActivityVo; |
|||
import com.lottery.vo.FundingDataVO; |
|||
import com.lottery.vo.MarketVo; |
|||
import org.slf4j.Logger; |
|||
import org.slf4j.LoggerFactory; |
|||
import org.springframework.beans.factory.annotation.Autowired; |
|||
import org.springframework.validation.annotation.Validated; |
|||
import org.springframework.web.bind.annotation.*; |
|||
|
|||
import javax.persistence.criteria.CriteriaBuilder; |
|||
import javax.servlet.http.HttpServletResponse; |
|||
import javax.validation.Valid; |
|||
import java.io.IOException; |
|||
import java.util.List; |
|||
import java.util.Map; |
|||
|
|||
/** |
|||
* @program: lottery-system |
|||
* @ClassName fundingController |
|||
* @description: |
|||
* @author:jihaipeng |
|||
* @create: 2025−07-14 15:03 |
|||
* @Version 1.0 |
|||
**/ |
|||
@RestController |
|||
@RequestMapping("/admin/funding") |
|||
public class FundingController { |
|||
|
|||
@Autowired |
|||
private IFundingService fundingService; |
|||
|
|||
private final static Logger LOGGER = LoggerFactory.getLogger(FundingController.class); |
|||
|
|||
|
|||
/** |
|||
* 获取所有众筹活动 |
|||
* |
|||
* @return |
|||
*/ |
|||
@GetMapping("/getActivity") |
|||
public Result<List<FundingActivityVo>> getFundingActivity() { |
|||
LOGGER.info("获取所有众筹活动"); |
|||
List<FundingActivityVo> list = fundingService.getFundingActivity(); |
|||
return Result.success(list); |
|||
} |
|||
|
|||
|
|||
//修改众筹的活动状态 |
|||
@PostMapping("/updateActivityStatus") |
|||
public Result updateActivityStatus(@RequestParam @Validated Integer id, @RequestParam @Validated Integer status) { |
|||
LOGGER.info("修改的众筹活动id为{},修改的众筹活动状态为{}", id, status); |
|||
//查看活动是否存在 |
|||
|
|||
// 参数校验 |
|||
if (id == null || status == null) { |
|||
return Result.failure("参数不能为空"); |
|||
} |
|||
|
|||
if (status != 0 && status != 1) { // 假设状态只有0/1 |
|||
// return Result.failure("活动状态值非法"); |
|||
return Result.failure("活动状态值非法"); |
|||
} |
|||
try { |
|||
return fundingService.updateActivityStatus(id, status); |
|||
} catch (Exception e) { |
|||
return Result.failure("修改活动状态失败"); |
|||
} |
|||
} |
|||
|
|||
|
|||
//添加活动 |
|||
@PostMapping("/addActivity") |
|||
public Result<String> addActivity(@Validated @RequestBody FundingActivityDto fundingActivityDto) { |
|||
LOGGER.info("添加活动,参数为{}", fundingActivityDto); |
|||
return fundingService.addActivity(fundingActivityDto); |
|||
|
|||
} |
|||
|
|||
//根据活动id查询助力详情 |
|||
@PostMapping("/getActivityDetail") |
|||
|
|||
public Result<Map<String, Object>> getActivityDetail(@RequestBody @Valid FundingUserDto fundingUserDto) { |
|||
//检查活动是否存在 |
|||
LOGGER.info("接口getActivityDetail查询助力详情,查询条件{}", fundingUserDto); |
|||
// 必填参数校验(可选,但推荐) |
|||
if (fundingUserDto.getActivityId() == null) { |
|||
throw new IllegalArgumentException("activityId 不能为空"); |
|||
} |
|||
return fundingService.getActivityDetail(fundingUserDto); |
|||
} |
|||
|
|||
// //根据活动id查询数据统计 |
|||
@PostMapping("/getActivityDate") |
|||
public Result<Map<String, Object>> getActivityDate(@RequestBody @Valid ActivityDto activityIdDto) { |
|||
|
|||
LOGGER.info("接口getActivityDate查询后台数据统计,活动id为{}", activityIdDto.getActivityId()); |
|||
if(fundingService.getActivityDate(activityIdDto.getActivityId())==null){ |
|||
return Result.failure("活动不存在,查询失败"); |
|||
} |
|||
return Result.success(fundingService.getActivityDate(activityIdDto.getActivityId())); |
|||
} |
|||
|
|||
// //添加用户参与记录 |
|||
// @PostMapping("/addRecord") |
|||
// public Result<String> addRecord(@RequestBody FundingRecordDto fundingRecordDto) throws Exception { |
|||
// return fundingService.addRecord(fundingRecordDto); |
|||
// } |
|||
|
|||
//设置活动初始时间 |
|||
@PostMapping("/setActivityTime") |
|||
public Result<String> setActivityTime(@RequestBody ActivityTimeDto activityTimeDto) { |
|||
LOGGER.info("设置id={}的活动初始时间为{}", activityTimeDto.getActivityId(), activityTimeDto.getTime()); |
|||
return fundingService.setActivityTime( activityTimeDto.getActivityId(), activityTimeDto.getTime()); |
|||
} |
|||
|
|||
//添加虚拟次数 |
|||
@PostMapping("/addDateVirtual") |
|||
public Result<String> addVirtual(@RequestBody @Valid VriableAddDto vriableAddDto) { |
|||
LOGGER.info("添加虚拟次数"); |
|||
Integer activityId = vriableAddDto.getActivityId(); |
|||
Integer stock = vriableAddDto.getStock(); |
|||
Integer addTotal = vriableAddDto.getAddTotal(); |
|||
|
|||
return fundingService.addVirtual(activityId, stock, addTotal); |
|||
} |
|||
|
|||
//返回数据详情 |
|||
@PostMapping("/getDate") |
|||
public Result<FundingDataVO> getDate(@RequestBody @Valid ActivityDto activityIdDto) { |
|||
LOGGER.info("返回id={}的活动的设置数据详情", activityIdDto.getActivityId()); |
|||
|
|||
|
|||
// |
|||
// try { |
|||
// ObjectMapper mapper = new ObjectMapper(); |
|||
// String json = mapper.writeValueAsString(date); |
|||
// LOGGER.info("返回的 JSON 数据: {}", json); |
|||
// } catch (JsonProcessingException e) { |
|||
// LOGGER.error("JSON 转换失败", e); |
|||
// } |
|||
return fundingService.getDate1(activityIdDto.getActivityId()); |
|||
|
|||
} |
|||
|
|||
//获取市场股票列表 |
|||
@GetMapping("/getMarketList") |
|||
public Result<List<MarketVo>> getMarket() { |
|||
LOGGER.info("获取市场股票列表"); |
|||
return Result.success(fundingService.getMarketList()); |
|||
} |
|||
|
|||
//导出活动数据 |
|||
@PostMapping("/exportActivityData") |
|||
public void exportActivityData(@RequestBody @Valid FundingUserDto fundingUserDto, HttpServletResponse response) throws IOException { |
|||
LOGGER.info("导出活动数据,参数为{}", fundingUserDto); |
|||
fundingService.exportActivityData(fundingUserDto,response); |
|||
} |
|||
|
|||
//删除活动 |
|||
@PostMapping("/deleteActivity") |
|||
public Result<String> deleteActivity(@RequestBody ActivityDto activityIdDto) { |
|||
LOGGER.info("删除活动:{}",activityIdDto.getActivityId()); |
|||
return fundingService.deleteActivity(activityIdDto.getActivityId()); |
|||
} |
|||
|
|||
//查看对应活动的市场列表 |
|||
@PostMapping("/getMarketList") |
|||
public Result<List<MarketVo>> getMarketList(@RequestBody ActivityDto activityIdDto) { |
|||
LOGGER.info("查看对应活动的市场列表"); |
|||
return fundingService.getMarketListByActivityId(activityIdDto.getActivityId()); |
|||
|
|||
} |
|||
|
|||
|
|||
} |
@ -0,0 +1,29 @@ |
|||
package com.lottery.admin.controller; |
|||
|
|||
import com.lottery.admin.service.IFundingService; |
|||
import com.lottery.result.Result; |
|||
import org.springframework.beans.factory.annotation.Autowired; |
|||
import org.springframework.web.bind.annotation.PostMapping; |
|||
import org.springframework.web.bind.annotation.RequestMapping; |
|||
import org.springframework.web.bind.annotation.RestController; |
|||
|
|||
/** |
|||
* @program: lottery |
|||
* @ClassName TongBuController |
|||
* @description: |
|||
* @author: wwl |
|||
* @create: 2025-07-26 13:46 |
|||
* @Version 1.0 |
|||
**/ |
|||
@RestController |
|||
@RequestMapping("/admin/funding") |
|||
public class TongBuController { |
|||
|
|||
@Autowired |
|||
private IFundingService fundingService; |
|||
|
|||
@PostMapping("/flush") |
|||
public boolean flushData() throws Exception { |
|||
return fundingService.flushData(); |
|||
} |
|||
} |
@ -0,0 +1,33 @@ |
|||
package com.lottery.admin.mapper; |
|||
|
|||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
|||
import com.lottery.entity.Grade; |
|||
import com.lottery.vo.GradeSimpleVo; |
|||
import org.apache.ibatis.annotations.Mapper; |
|||
import org.apache.ibatis.annotations.Select; |
|||
import org.apache.ibatis.annotations.Update; |
|||
|
|||
import java.util.List; |
|||
|
|||
/** |
|||
* @program: lottery-system |
|||
* @ClassName IGradeMapper |
|||
* @description: |
|||
* @author: wwl |
|||
* @create: 2025-07-14 14:37 |
|||
* @Version 1.0 |
|||
**/ |
|||
|
|||
@Mapper |
|||
public interface AdminGradeMapper extends BaseMapper<Grade> { |
|||
|
|||
@Select("select * from grade where grade_name = #{gradeName}") |
|||
Grade selectByName(String gradeName); |
|||
|
|||
@Select("select grade_name, id from grade where is_del = 0 order by sort desc, id asc ") |
|||
List<GradeSimpleVo> selectAllGrade(); |
|||
|
|||
@Update("update grade set is_del = 1 where id = #{id}") |
|||
void deleteGradeById(Long id); |
|||
|
|||
} |
@ -0,0 +1,26 @@ |
|||
package com.lottery.admin.mapper; |
|||
|
|||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
|||
import com.lottery.entity.JwcodeTable; |
|||
import org.apache.ibatis.annotations.Mapper; |
|||
|
|||
import java.time.LocalDateTime; |
|||
|
|||
/** |
|||
* @program: lottery-system |
|||
* @ClassName AdminIsLoginMappper |
|||
* @description: |
|||
* @author:jihaipeng |
|||
* @create: 2025−07-22 14:09 |
|||
* @Version 1.0 |
|||
**/ |
|||
@Mapper |
|||
public interface AdminIsLoginMapper extends BaseMapper<JwcodeTable> { |
|||
|
|||
|
|||
void addUser(String jwcode, LocalDateTime now); |
|||
|
|||
Integer selectByJwcode(String jwcode); |
|||
|
|||
int deleteUser(String jwcode); |
|||
} |
@ -0,0 +1,27 @@ |
|||
package com.lottery.admin.mapper; |
|||
|
|||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
|||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
|||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
|||
import com.lottery.entity.Prize; |
|||
import org.apache.ibatis.annotations.Select; |
|||
import org.apache.ibatis.annotations.Update; |
|||
|
|||
/** |
|||
* @program: lottery |
|||
* @ClassName AdminPrizeMapper |
|||
* @description: |
|||
* @author: wwl |
|||
* @create: 2025-07-15 15:00 |
|||
* @Version 1.0 |
|||
**/ |
|||
public interface AdminPrizeMapper extends BaseMapper<Prize> { |
|||
|
|||
Page<Prize> pageListPrize(Page<Prize> page, LambdaQueryWrapper<Prize> prizeLambdaQueryWrapper); |
|||
|
|||
@Select("select id from prize where prize_name = #{prizeName}") |
|||
Long selectByName(String prizeName); |
|||
|
|||
@Update("update prize set is_del = 1 where id = #{id}") |
|||
boolean deletePrizeById(Long id); |
|||
} |
@ -0,0 +1,27 @@ |
|||
package com.lottery.admin.mapper; |
|||
|
|||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
|||
import com.lottery.entity.UserDetail; |
|||
import org.apache.ibatis.annotations.Mapper; |
|||
import org.apache.ibatis.annotations.Select; |
|||
import org.apache.ibatis.annotations.Update; |
|||
|
|||
import java.util.Set; |
|||
|
|||
/** |
|||
* @program: lottery |
|||
* @ClassName IUserDetailMapper |
|||
* @description: |
|||
* @author: wwl |
|||
* @create: 2025-07-16 9:47 |
|||
* @Version 1.0 |
|||
**/ |
|||
|
|||
@Mapper |
|||
public interface AdminUserDetailMapper extends BaseMapper<UserDetail> { |
|||
@Select("select jwcode from user_detail") |
|||
Set<String> selectAllUserCodes(); |
|||
|
|||
@Update("UPDATE user_detail SET is_del = 1 WHERE id = #{id}") |
|||
int removeFixUserById(Long id); |
|||
} |
@ -0,0 +1,55 @@ |
|||
package com.lottery.admin.mapper; |
|||
|
|||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
|||
import com.lottery.entity.User; |
|||
import org.apache.ibatis.annotations.Mapper; |
|||
import org.apache.ibatis.annotations.Param; |
|||
import org.apache.ibatis.annotations.Select; |
|||
import org.apache.ibatis.annotations.Update; |
|||
|
|||
import java.util.Collection; |
|||
import java.util.List; |
|||
import java.util.Set; |
|||
|
|||
/** |
|||
* @program: lottery |
|||
* @ClassName AdminUserMapper |
|||
* @description: |
|||
* @author: wwl |
|||
* @create: 2025-07-15 14:59 |
|||
* @Version 1.0 |
|||
**/ |
|||
@Mapper |
|||
public interface AdminUserMapper extends BaseMapper<User> { |
|||
|
|||
@Select("select jwcode from user") |
|||
Set<String> selectAllUserCodes(); |
|||
|
|||
Long selectByJwcode(String jwcode); |
|||
|
|||
@Update("update user set is_del = 1 where id = #{id}") |
|||
void deleteUserById(Long id); |
|||
|
|||
@Select("SELECT jwcode, is_del as isDel FROM user") |
|||
List<User> selectAllUserCodesWithDelStatus(); |
|||
|
|||
@Select("SELECT * FROM user WHERE jwcode = #{jwcode}") |
|||
User selectByJwCode(String jwcode); |
|||
|
|||
@Select("select * from user where jwcode = #{jwcode}") |
|||
User selectUserByJwcode(String jwcode); |
|||
|
|||
@Select("select * from user where username = #{username}") |
|||
User selectByName(String username); |
|||
|
|||
@Select("<script>" + |
|||
"SELECT jwcode FROM member_info WHERE jwcode IN " + |
|||
"<foreach collection='jwcode' item='code' open='(' separator=',' close=')'>" + |
|||
"#{code}" + |
|||
"</foreach>" + |
|||
"</script>") |
|||
Set<String> selectExistingJwCodes(@Param("jwcode") List<String> batchJwCodes); |
|||
|
|||
@Select("select loc_market from member_info where jwcode = #{jwcode}") |
|||
String selectLocMarketByJwcode(String jwcode); |
|||
} |
@ -0,0 +1,21 @@ |
|||
package com.lottery.admin.mapper; |
|||
|
|||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
|||
import com.lottery.entity.WinnerRecord; |
|||
import org.apache.ibatis.annotations.Mapper; |
|||
|
|||
import java.util.List; |
|||
import java.util.Map; |
|||
|
|||
/** |
|||
* @program: lottery-system |
|||
* @ClassName IWinMapper |
|||
* @description: |
|||
* @author:jihaipeng |
|||
* @create: 2025−07-12 17:53 |
|||
* @Version 1.0 |
|||
**/ |
|||
@Mapper |
|||
public interface AdminWinMapper extends BaseMapper<WinnerRecord> { |
|||
|
|||
} |
@ -0,0 +1,102 @@ |
|||
package com.lottery.admin.mapper; |
|||
|
|||
import com.lottery.entity.Activity; |
|||
import com.lottery.entity.FundingExport; |
|||
import com.lottery.vo.FundingActivityVo; |
|||
import com.lottery.vo.FundingUserVo; |
|||
import com.lottery.vo.MarketVo; |
|||
import org.apache.ibatis.annotations.Mapper; |
|||
import org.apache.ibatis.annotations.Select; |
|||
import org.apache.ibatis.annotations.Update; |
|||
|
|||
import java.time.LocalDateTime; |
|||
import java.util.ArrayList; |
|||
import java.util.List; |
|||
import java.util.Map; |
|||
|
|||
/** |
|||
* @program: lottery-system |
|||
* @ClassName IFundingMapper |
|||
* @description: |
|||
* @author:jihaipeng |
|||
* @create: 2025−07-14 15:05 |
|||
* @Version 1.0 |
|||
**/ |
|||
@Mapper |
|||
public interface IFundingMapper { |
|||
|
|||
List<FundingActivityVo> getFundingActivity(); |
|||
|
|||
void updateActivityStatus(Integer id, Integer status); |
|||
|
|||
void addActivity(Activity activity); |
|||
|
|||
|
|||
List<FundingUserVo> selectByCondition(Integer activityId, String username, String jwcode, Integer marketSign, Integer pagesize, int offset); |
|||
|
|||
|
|||
int searchcount(Integer activityId, String username, String jwcode, Integer marketSign); |
|||
|
|||
Integer searchPeopleTotal(Integer activityId); |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
Integer searchMarketPeople(Integer activityId, Integer marketSign); |
|||
|
|||
Integer searchMarketTotal(Integer activityId, Integer marketSign); |
|||
|
|||
// void addRecord(Integer activityId, String username, String jwcode, String marketSign, LocalDateTime joinTime); |
|||
|
|||
void setActivityDate(Integer activityId, Integer time); |
|||
|
|||
void addDate(Integer time, Integer stock, Integer addTotal, Integer activityId); |
|||
|
|||
void setVirtual(Integer activityId, Integer stock, Integer addTotal); |
|||
|
|||
Integer searchVirtual(Integer activityId, Integer stock); |
|||
|
|||
Integer getTime(Integer activityId, Integer stock); |
|||
|
|||
List<MarketVo> getMarketList(); |
|||
|
|||
Integer selectStatus(); |
|||
|
|||
String selectActivityName(Integer activityId); |
|||
|
|||
List<FundingExport> selectByConditionExport(Integer activityId, String username, String jwcode, Integer marketSign); |
|||
|
|||
Integer selectCount(Integer activityId); |
|||
|
|||
void deleteActivity(Integer id); |
|||
|
|||
void deleteDate(Integer id); |
|||
|
|||
void deleteZuser(Integer id); |
|||
|
|||
Map<String, Object> getMarket(Integer activityId); |
|||
|
|||
String selectMarketName(Integer one); |
|||
|
|||
List<MarketVo> getMarketListByActivityId(Integer activityId); |
|||
|
|||
Integer selectActivityCount(Integer id); |
|||
|
|||
Integer selectmarket(Integer id); |
|||
|
|||
Integer selectmarketCount(Integer market); |
|||
|
|||
Integer selectActivityStatus(Integer id); |
|||
|
|||
@Select("select jwcode from z_user where loc_market in('usa','cn','sg','my','th','hk','vi','can')") |
|||
ArrayList<String> selectJwcode(); |
|||
|
|||
@Update("update z_user set loc_market = #{locMarket} where jwcode = #{jwcode}") |
|||
void updateLocMarket(String jwcode, String locMarket); |
|||
|
|||
@Select("select text from market where market = #{locMarket}") |
|||
String updateLocMarketToCn(String locMarket); |
|||
|
|||
String selectm(String locM); |
|||
} |
@ -0,0 +1,45 @@ |
|||
package com.lottery.admin.service; |
|||
|
|||
import com.baomidou.mybatisplus.core.conditions.Wrapper; |
|||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
|||
|
|||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
|||
import com.baomidou.mybatisplus.extension.service.IService; |
|||
import com.lottery.dto.GradeDto; |
|||
import com.lottery.entity.Grade; |
|||
import com.lottery.vo.GradeSimpleVo; |
|||
import com.lottery.vo.GradeVo; |
|||
import com.lottery.vo.PageInfo; |
|||
import org.springframework.stereotype.Service; |
|||
|
|||
import javax.persistence.criteria.CriteriaBuilder; |
|||
import java.util.List; |
|||
|
|||
/** |
|||
* @program: lottery-system |
|||
* @ClassName IGradeService |
|||
* @description: |
|||
* @author: wwl |
|||
* @create: 2025-07-14 14:40 |
|||
* |
|||
* @Version 1.0 |
|||
**/ |
|||
|
|||
|
|||
public interface AdminGradeService extends IService<Grade> { |
|||
PageInfo<GradeVo> pageSelectGrade(Integer pageNum, Integer pageSize); |
|||
|
|||
List<GradeSimpleVo> selectAllGrade(); |
|||
|
|||
boolean saveGrade(GradeDto gradeDto); |
|||
|
|||
boolean removeGradeById(Long id); |
|||
|
|||
boolean updateGradeById(GradeDto gradeDto); |
|||
|
|||
|
|||
// boolean updateGradeById(GradeDto GradeDto); |
|||
|
|||
|
|||
// boolean updateGrade(GradeDto gradeDto); |
|||
} |
Some files were not shown because too many files changed in this diff
Write
Preview
Loading…
Cancel
Save
Reference in new issue