init
This commit is contained in:
Generated
+3
@@ -0,0 +1,3 @@
|
||||
# Default ignored files
|
||||
/shelf/
|
||||
/workspace.xml
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
<component name="ProjectCodeStyleConfiguration">
|
||||
<code_scheme name="Project" version="173">
|
||||
<ScalaCodeStyleSettings>
|
||||
<option name="MULTILINE_STRING_CLOSING_QUOTES_ON_NEW_LINE" value="true" />
|
||||
</ScalaCodeStyleSettings>
|
||||
</code_scheme>
|
||||
</component>
|
||||
@@ -0,0 +1,5 @@
|
||||
<component name="ProjectCodeStyleConfiguration">
|
||||
<state>
|
||||
<option name="PREFERRED_PROJECT_CODE_STYLE" value="Default" />
|
||||
</state>
|
||||
</component>
|
||||
Generated
+20
@@ -0,0 +1,20 @@
|
||||
<?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="demo3063-session_jwt" />
|
||||
<module name="cyynote" />
|
||||
</profile>
|
||||
</annotationProcessing>
|
||||
</component>
|
||||
<component name="JavacSettings">
|
||||
<option name="ADDITIONAL_OPTIONS_OVERRIDE">
|
||||
<module name="cyynote" options="-parameters" />
|
||||
<module name="demo3063-session_jwt" options="-parameters" />
|
||||
</option>
|
||||
</component>
|
||||
</project>
|
||||
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="AgentMigrationStateService">
|
||||
<option name="migrationStatus" value="COMPLETED" />
|
||||
</component>
|
||||
</project>
|
||||
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="EditMigrationStateService">
|
||||
<option name="migrationStatus" value="COMPLETED" />
|
||||
</component>
|
||||
</project>
|
||||
Generated
+7
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="Encoding">
|
||||
<file url="file://$PROJECT_DIR$/src/main/java" charset="UTF-8" />
|
||||
<file url="file://$PROJECT_DIR$/src/main/resources" charset="UTF-8" />
|
||||
</component>
|
||||
</project>
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="RemoteRepositoriesConfiguration">
|
||||
<remote-repository>
|
||||
<option name="id" value="sonatype-nexus-snapshots" />
|
||||
<option name="name" value="Sonatype Nexus Snapshots" />
|
||||
<option name="url" value="https://oss.sonatype.org/content/repositories/snapshots" />
|
||||
</remote-repository>
|
||||
<remote-repository>
|
||||
<option name="id" value="sonatype-nexus-snapshots" />
|
||||
<option name="name" value="Sonatype Nexus Snapshots" />
|
||||
<option name="url" value="http://mirrors.cloud.tencent.com/nexus/repository/maven-public/" />
|
||||
</remote-repository>
|
||||
<remote-repository>
|
||||
<option name="id" value="central" />
|
||||
<option name="name" value="Central Repository" />
|
||||
<option name="url" value="https://repo.maven.apache.org/maven2" />
|
||||
</remote-repository>
|
||||
<remote-repository>
|
||||
<option name="id" value="central" />
|
||||
<option name="name" value="Central Repository" />
|
||||
<option name="url" value="http://mirrors.cloud.tencent.com/nexus/repository/maven-public/" />
|
||||
</remote-repository>
|
||||
<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>
|
||||
</component>
|
||||
</project>
|
||||
Generated
+12
@@ -0,0 +1,12 @@
|
||||
<?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$/pom.xml" />
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="17" project-jdk-type="JavaSDK" />
|
||||
</project>
|
||||
Generated
+124
@@ -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,107 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<groupId>com.cyynote</groupId>
|
||||
<artifactId>cyynote</artifactId>
|
||||
<version>1.0.0</version>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<name>${project.artifactId}</name>
|
||||
<description>cyy note</description>
|
||||
|
||||
<parent>
|
||||
<groupId>org.noear</groupId>
|
||||
<artifactId>solon-parent</artifactId>
|
||||
<version>3.0.5</version>
|
||||
<relativePath />
|
||||
</parent>
|
||||
|
||||
<properties>
|
||||
<java.version>11</java.version>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.noear</groupId>
|
||||
<artifactId>solon-web</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.noear</groupId>
|
||||
<artifactId>solon-sessionstate-jwt</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- wood-solon-plugin 相对于 wood;增加了 @Db 的注入支持 -->
|
||||
<dependency>
|
||||
<groupId>org.noear</groupId>
|
||||
<artifactId>wood-solon-plugin</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.noear</groupId>
|
||||
<artifactId>solon-security-auth</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.projectlombok</groupId>
|
||||
<artifactId>lombok</artifactId>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>cn.hutool</groupId>
|
||||
<artifactId>hutool-all</artifactId>
|
||||
<version>5.8.21</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.alibaba.fastjson2</groupId>
|
||||
<artifactId>fastjson2</artifactId>
|
||||
<version>2.0.20</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.zaxxer</groupId>
|
||||
<artifactId>HikariCP</artifactId>
|
||||
<version>4.0.3</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.xerial</groupId>
|
||||
<artifactId>sqlite-jdbc</artifactId>
|
||||
<version>3.46.1.3</version>
|
||||
</dependency>
|
||||
|
||||
|
||||
<dependency>
|
||||
<groupId>org.projectlombok</groupId>
|
||||
<artifactId>lombok</artifactId>
|
||||
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.noear</groupId>
|
||||
<artifactId>solon-test</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
|
||||
|
||||
<build>
|
||||
<finalName>${project.artifactId}</finalName>
|
||||
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.noear</groupId>
|
||||
<artifactId>solon-maven-plugin</artifactId>
|
||||
</plugin>
|
||||
</plugins>
|
||||
|
||||
</build>
|
||||
|
||||
</project>
|
||||
@@ -0,0 +1,30 @@
|
||||
package com.cyynote;
|
||||
|
||||
import com.cyynote.dso.AuthProcessorImpl;
|
||||
import com.cyynote.dso.DsHelper;
|
||||
import com.zaxxer.hikari.HikariDataSource;
|
||||
import javax.sql.DataSource;
|
||||
import org.noear.solon.annotation.Bean;
|
||||
import org.noear.solon.annotation.Configuration;
|
||||
import org.noear.solon.annotation.Inject;
|
||||
import org.noear.solon.auth.AuthProcessor;
|
||||
import org.noear.solon.auth.AuthUtil;
|
||||
import org.noear.wood.cache.ICacheServiceEx;
|
||||
import org.noear.wood.cache.LocalCache;
|
||||
|
||||
@Configuration
|
||||
public class Config {
|
||||
public static final ICacheServiceEx cache = (new LocalCache("test", 60)).nameSet("test");
|
||||
|
||||
@Bean(value = "db1", typed = true)
|
||||
public DataSource db1(@Inject("${test.db1}") HikariDataSource dataSource) {
|
||||
DsHelper.initData((DataSource)dataSource);
|
||||
return (DataSource)dataSource;
|
||||
}
|
||||
|
||||
@Bean
|
||||
public void authAdapter() {
|
||||
AuthUtil.adapter()
|
||||
.processor((AuthProcessor)new AuthProcessorImpl());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package com.cyynote;
|
||||
|
||||
|
||||
import org.noear.solon.Solon;
|
||||
import org.noear.wood.WoodConfig;
|
||||
|
||||
public class WebApp {
|
||||
public static void main(String[] args) {
|
||||
Solon.start(com.cyynote.WebApp.class, args);
|
||||
WoodConfig.onExecuteAft(cmd -> System.out.println("[Wood]" + cmd.text + "\r\n" + cmd.paramMap()));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,103 @@
|
||||
package com.cyynote.controller;
|
||||
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import com.cyynote.controller.BaseController;
|
||||
import com.cyynote.model.NoteModel;
|
||||
import com.cyynote.model.UserModel;
|
||||
import com.cyynote.payload.request.LoginRequest;
|
||||
import com.cyynote.payload.request.SignupRequest;
|
||||
import java.sql.SQLException;
|
||||
import java.util.List;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import com.cyynote.payload.request.UpdatePasswordRequest;
|
||||
import org.noear.solon.annotation.Body;
|
||||
import org.noear.solon.annotation.Controller;
|
||||
import org.noear.solon.annotation.Mapping;
|
||||
import org.noear.solon.annotation.Post;
|
||||
import org.noear.solon.core.handle.Context;
|
||||
import org.noear.solon.core.handle.Result;
|
||||
import org.noear.wood.DbContext;
|
||||
import org.noear.wood.DbTableQuery;
|
||||
import org.noear.wood.annotation.Db;
|
||||
|
||||
@Mapping("/api/auth")
|
||||
@Controller
|
||||
public class AuthController extends BaseController {
|
||||
private static final Logger log = Logger.getLogger(com.cyynote.controller.AuthController.class.getName());
|
||||
|
||||
@Db
|
||||
DbContext db;
|
||||
|
||||
@Mapping("/logout")
|
||||
public void logout(Context ctx) {
|
||||
ctx.sessionClear();
|
||||
}
|
||||
|
||||
@Post
|
||||
@Mapping("/signin")
|
||||
public Result signin(Context ctx, @Body LoginRequest loginRequest) throws SQLException {
|
||||
log.info("name:" + loginRequest.getUsername());
|
||||
log.info("password:" + loginRequest.getPassword());
|
||||
|
||||
long count = db.table("user").selectCount();
|
||||
log.info("countUser:" + count);
|
||||
List<UserModel> all = ((DbTableQuery)this.db.table("user")).selectList("*", UserModel.class);
|
||||
log.info( all.toString());
|
||||
|
||||
UserModel model = (UserModel)((DbTableQuery)((DbTableQuery)this.db.table("user").whereEq("username", loginRequest.getUsername())).andEq("password", loginRequest.getPassword())).selectItem("*", UserModel.class);
|
||||
if ("admin".equals(model.getUsername())) {
|
||||
ctx.sessionSet("user_name", loginRequest.getUsername());
|
||||
ctx.sessionSet("user_id", model.getId());
|
||||
JSONObject obj = new JSONObject();
|
||||
String token = ctx.sessionState().sessionToken();
|
||||
obj.put("accessToken", token);
|
||||
obj.put("id", Integer.valueOf(1));
|
||||
obj.put("username", loginRequest.getUsername());
|
||||
obj.put("email", "1");
|
||||
obj.put("roles", "1");
|
||||
int flag = ((DbTableQuery)this.db.table("user").set("token", token).set("logintime", DateUtil.now()).whereEq("id", model.getId())).update();
|
||||
System.out.println(flag);
|
||||
return Result.succeed(obj);
|
||||
}
|
||||
return Result.failure();
|
||||
}
|
||||
|
||||
|
||||
@Post
|
||||
@Mapping("/updatePassword")
|
||||
public Result updatePassword(Context ctx, @Body UpdatePasswordRequest loginRequest) throws SQLException {
|
||||
log.info("name:" + loginRequest.getUsername());
|
||||
log.info("old - password:" + loginRequest.getOldpassword());
|
||||
log.info("new - password:" + loginRequest.getNewpassword());
|
||||
|
||||
|
||||
long count = db.table("user").selectCount();
|
||||
log.info("countUser:" + count);
|
||||
List<UserModel> all = ((DbTableQuery)this.db.table("user")).selectList("*", UserModel.class);
|
||||
log.info( all.toString());
|
||||
|
||||
|
||||
UserModel model = (UserModel)((DbTableQuery)((DbTableQuery)this.db.table("user").whereEq("username", loginRequest.getUsername())).andEq("password", loginRequest.getOldpassword())).selectItem("*", UserModel.class);
|
||||
if ("admin".equals(model.getUsername())) {
|
||||
|
||||
int flag = ((DbTableQuery)this.db.table("user").set("password", loginRequest.getNewpassword()).whereEq("id", model.getId())).update();
|
||||
System.out.println(flag);
|
||||
return Result.succeed(flag);
|
||||
}
|
||||
return Result.failure();
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Post
|
||||
@Mapping("/signup")
|
||||
public Result signup(@Body SignupRequest signUpRequest) {
|
||||
log.info("signUpRequest:" + JSONObject.toJSONString(signUpRequest, new com.alibaba.fastjson2.JSONWriter.Feature[0]));
|
||||
JSONObject obj = new JSONObject();
|
||||
return Result.succeed(obj);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
package com.cyynote.controller;
|
||||
|
||||
import org.noear.solon.web.cors.annotation.CrossOrigin;
|
||||
|
||||
@CrossOrigin(origins = "*")
|
||||
public class BaseController {}
|
||||
@@ -0,0 +1,55 @@
|
||||
package com.cyynote.controller;
|
||||
|
||||
|
||||
import com.cyynote.controller.BaseController;
|
||||
import org.noear.solon.annotation.Controller;
|
||||
import org.noear.solon.annotation.Delete;
|
||||
import org.noear.solon.annotation.Get;
|
||||
import org.noear.solon.annotation.Mapping;
|
||||
import org.noear.solon.annotation.Patch;
|
||||
import org.noear.solon.annotation.Post;
|
||||
import org.noear.solon.annotation.Put;
|
||||
import org.noear.solon.core.handle.Context;
|
||||
import org.noear.solon.core.handle.ModelAndView;
|
||||
|
||||
@Controller
|
||||
public class DemoController extends BaseController {
|
||||
@Mapping("/demo")
|
||||
public Object test() {
|
||||
ModelAndView model = new ModelAndView("beetl.htm");
|
||||
model.put("title", "dock");
|
||||
model.put("message", "world!");
|
||||
return model;
|
||||
}
|
||||
|
||||
@Post
|
||||
@Mapping("post")
|
||||
public String test_post(Context context) {
|
||||
return context.param("name");
|
||||
}
|
||||
|
||||
@Put
|
||||
@Mapping("put")
|
||||
public String test_put(Context context, String name) {
|
||||
return context.param("name");
|
||||
}
|
||||
|
||||
@Delete
|
||||
@Mapping("delete")
|
||||
public String test_delete(Context context, String name) {
|
||||
return context.param("name");
|
||||
}
|
||||
|
||||
@Patch
|
||||
@Mapping("patch")
|
||||
public String test_patch(Context context, String name) {
|
||||
return context.param("name");
|
||||
}
|
||||
|
||||
@Get
|
||||
@Mapping("get")
|
||||
public String test_post_get(Context context) {
|
||||
return context.path();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
package com.cyynote.controller;
|
||||
|
||||
|
||||
import io.jsonwebtoken.Claims;
|
||||
import org.noear.solon.annotation.Component;
|
||||
import org.noear.solon.core.handle.Context;
|
||||
import org.noear.solon.core.handle.Handler;
|
||||
import org.noear.solon.core.handle.Result;
|
||||
import org.noear.solon.core.route.RouterInterceptor;
|
||||
import org.noear.solon.core.route.RouterInterceptorChain;
|
||||
import org.noear.solon.sessionstate.jwt.JwtUtils;
|
||||
|
||||
@Component
|
||||
public class JwtInterceptor implements RouterInterceptor {
|
||||
public void doIntercept(Context ctx, Handler mainHandler, RouterInterceptorChain chain) throws Throwable {
|
||||
boolean flag = true;
|
||||
if ("/api/auth/signup".equals(ctx.path()) ||
|
||||
"/api/auth/signin".equals(ctx.path()) ||
|
||||
"/demo".equals(ctx.path()) ||
|
||||
"/api/auth/logout".equals(ctx.path())
|
||||
|
||||
)
|
||||
flag = false;
|
||||
if (flag)
|
||||
if (null != ctx.header("Authorization")) {
|
||||
String token = ctx.header("Authorization");
|
||||
token = token.replace("Bearer ", "");
|
||||
System.out.println("token:" + token);
|
||||
Claims claims = JwtUtils.parseJwt(token);
|
||||
System.out.println("claims:" + claims);
|
||||
if (null != claims) {
|
||||
System.out.println("username:" + claims.get("user_name"));
|
||||
System.out.println("exp:" + claims.get("exp"));
|
||||
} else {
|
||||
ctx.status(401);
|
||||
ctx.render(Result.failure(401, ""));
|
||||
}
|
||||
} else {
|
||||
ctx.status(401);
|
||||
ctx.render(Result.failure(401, ""));
|
||||
}
|
||||
chain.doIntercept(ctx, mainHandler);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,207 @@
|
||||
package com.cyynote.controller;
|
||||
|
||||
import cn.hutool.*;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.alibaba.fastjson2.JSONArray;
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import com.cyynote.controller.BaseController;
|
||||
import com.cyynote.dso.NoteSqlAnnotation;
|
||||
import com.cyynote.model.HistoryModel;
|
||||
import com.cyynote.model.NoteModel;
|
||||
import com.cyynote.payload.request.NoteRequest;
|
||||
import com.cyynote.util.TreeBuild;
|
||||
import com.cyynote.util.TreeNode;
|
||||
import io.jsonwebtoken.Claims;
|
||||
import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.logging.Logger;
|
||||
import org.noear.solon.annotation.Body;
|
||||
import org.noear.solon.annotation.Controller;
|
||||
import org.noear.solon.annotation.Get;
|
||||
import org.noear.solon.annotation.Mapping;
|
||||
import org.noear.solon.annotation.Path;
|
||||
import org.noear.solon.annotation.Post;
|
||||
import org.noear.solon.annotation.Put;
|
||||
import org.noear.solon.core.handle.Context;
|
||||
import org.noear.solon.core.handle.Result;
|
||||
import org.noear.solon.sessionstate.jwt.JwtUtils;
|
||||
import org.noear.solon.web.cors.annotation.CrossOrigin;
|
||||
import org.noear.wood.DbContext;
|
||||
import org.noear.wood.DbTableQuery;
|
||||
import org.noear.wood.annotation.Db;
|
||||
|
||||
@Mapping("/api/note")
|
||||
@Controller
|
||||
public class NoteController extends BaseController {
|
||||
private static final Logger log = Logger.getLogger(com.cyynote.controller.NoteController.class.getName());
|
||||
|
||||
@Db
|
||||
NoteSqlAnnotation mapper;
|
||||
|
||||
@Db
|
||||
DbContext db;
|
||||
|
||||
private static final String QUERY_F = "id,pid,title,createtime,updatetime,viewtime,flag";
|
||||
|
||||
@Get
|
||||
@Mapping("get1")
|
||||
public String test_post_get(Context context, @Path String appname) {
|
||||
|
||||
return context.path();
|
||||
}
|
||||
|
||||
@Post
|
||||
@Mapping("post")
|
||||
public String test_post(Context context) {
|
||||
return context.param("name");
|
||||
}
|
||||
|
||||
@Put
|
||||
@Mapping("put")
|
||||
public String test_put(Context context, String name) {
|
||||
return context.param("name");
|
||||
}
|
||||
|
||||
@Get
|
||||
@Mapping("/all")
|
||||
public Result noteAccess(Context ctx) throws Exception {
|
||||
List<NoteModel> all = ((DbTableQuery)this.db.table("note").whereEq("flag", Integer.valueOf(1))).selectList("id,pid,title,createtime,updatetime,viewtime,flag", NoteModel.class);
|
||||
List<TreeNode> treeNodeList = new ArrayList<>();
|
||||
for (NoteModel n : all) {
|
||||
TreeNode treeNode = new TreeNode(n.getId().intValue(), n.getPid().intValue(), n.getTitle(), String.valueOf(n.getId()), String.valueOf(n.getId()));
|
||||
treeNodeList.add(treeNode);
|
||||
}
|
||||
TreeBuild bb = new TreeBuild(treeNodeList);
|
||||
List<TreeNode> collect = bb.buildTree();
|
||||
return Result.succeed(JSONArray.parseArray(JSONArray.toJSONString(collect)));
|
||||
}
|
||||
|
||||
@Get
|
||||
@Mapping("/home")
|
||||
public Result noteHome(Context ctx, @Path int type, @Path String search) throws Exception {
|
||||
System.out.println(type);
|
||||
System.out.println(search);
|
||||
List<NoteModel> all = new ArrayList<>();
|
||||
if (type == 0) {
|
||||
all = ((DbTableQuery)((DbTableQuery)this.db.table("note").whereLk("context", "%" + search + "%")).andLk("title", "%" + search + "%")).selectList("id,pid,title,createtime,updatetime,viewtime,flag", NoteModel.class);
|
||||
} else if (type == 1) {
|
||||
all = ((DbTableQuery)((DbTableQuery)((DbTableQuery)this.db.table("note").whereEq("flag", Integer.valueOf(1))).orderByDesc("updatetime")).limit(20)).selectList("id,pid,title,createtime,updatetime,viewtime,flag", NoteModel.class);
|
||||
} else if (type == 2) {
|
||||
all = ((DbTableQuery)((DbTableQuery)((DbTableQuery)this.db.table("note").whereEq("flag", Integer.valueOf(1))).orderByDesc("createtime")).limit(20)).selectList("id,pid,title,createtime,updatetime,viewtime,flag", NoteModel.class);
|
||||
} else if (type == 3) {
|
||||
all = ((DbTableQuery)((DbTableQuery)((DbTableQuery)this.db.table("note").whereEq("flag", Integer.valueOf(1))).orderByDesc("viewtime")).limit(20)).selectList("id,pid,title,createtime,updatetime,viewtime,flag", NoteModel.class);
|
||||
} else if (type == 4) {
|
||||
all = ((DbTableQuery)((DbTableQuery)((DbTableQuery)this.db.table("note").whereEq("flag", Integer.valueOf(0))).orderByDesc("updatetime")).limit(10000)).selectList("id,pid,title,createtime,updatetime,viewtime,flag", NoteModel.class);
|
||||
}
|
||||
return Result.succeed(JSONArray.parseArray(JSONArray.toJSONString(all)));
|
||||
}
|
||||
|
||||
@Get
|
||||
@Mapping("/get")
|
||||
public Result getNote(Context ctx, @Path int id) throws Exception {
|
||||
NoteModel model = (NoteModel)((DbTableQuery)this.db.table("note").whereEq("id", Integer.valueOf(id))).selectItem("*", NoteModel.class);
|
||||
String time = DateUtil.now();
|
||||
System.out.println(time);
|
||||
int flag = ((DbTableQuery)this.db.table("note").set("viewtime", time).whereEq("id", Integer.valueOf(id))).update();
|
||||
System.out.println(flag);
|
||||
log.info(JSONObject.toJSONString(model, new com.alibaba.fastjson2.JSONWriter.Feature[0]));
|
||||
return Result.succeed(model);
|
||||
}
|
||||
|
||||
@Get
|
||||
@Mapping("/add")
|
||||
public Result addNote(Context ctx, @Path int pid) throws Exception {
|
||||
String userid = getUserInfoId(ctx);
|
||||
if (null == userid)
|
||||
return Result.failure(401);
|
||||
NoteModel note = new NoteModel();
|
||||
note.setPid(Integer.valueOf(pid));
|
||||
note.setTitle("未命名Note");
|
||||
note.setFlag(Integer.valueOf(1));
|
||||
note.setCreatetime(DateUtil.now());
|
||||
note.setContext("{\"root\":{\"children\":[{\"children\":[{\"detail\":0,\"format\":0,\"mode\":\"normal\",\"style\":\"\",\"text\":\"未命名Note\",\"type\":\"text\",\"version\":1}],\"direction\":\"ltr\",\"format\":\"\",\"indent\":0,\"type\":\"paragraph\",\"version\":1}],\"direction\":\"ltr\",\"format\":\"\",\"indent\":0,\"type\":\"root\",\"version\":1}}");
|
||||
|
||||
// note.setContext("{\"root\": {\"type\": \"root\", \"format\": \"\", \"indent\": 0, \"version\": 1, \"children\": [{\"type\": \"paragraph\", \"format\": \"\", \"indent\": 0, \"version\": 1, \"children\": [], \"direction\": null}], \"direction\": null}}");
|
||||
this.db.table("note").setEntityIf(note, (k, v) -> Boolean.valueOf((v != null))).insert();
|
||||
return Result.succeed("ok");
|
||||
}
|
||||
|
||||
@Post
|
||||
@Mapping("/update")
|
||||
public Result updateNote(@Body NoteRequest noteRequest) throws SQLException {
|
||||
NoteModel note = (NoteModel)((DbTableQuery)this.db.table("note").whereEq("id", noteRequest.getId())).selectItem("id,pid,title,createtime,updatetime,viewtime,flag", NoteModel.class);
|
||||
note.setTitle(noteRequest.getTitle());
|
||||
note.setUpdatetime(DateUtil.now());
|
||||
String cc = noteRequest.getContext();
|
||||
JSONObject ar = JSONObject.parseObject(cc);
|
||||
note.setContext(ar.toJSONString());
|
||||
int flag = ((DbTableQuery)this.db.table("note").set("title", noteRequest.getTitle()).set("updatetime", DateUtil.now()).set("context", ar.toJSONString()).whereEq("id", noteRequest.getId())).update();
|
||||
log.info("updateNote+ flag");
|
||||
HistoryModel history = new HistoryModel();
|
||||
history.setNid(Integer.valueOf(noteRequest.getId().intValue()));
|
||||
history.setTitle(noteRequest.getTitle());
|
||||
history.setFlag(Integer.valueOf(1));
|
||||
history.setCreatetime(DateUtil.now());
|
||||
history.setContext(ar.toJSONString());
|
||||
long his = this.db.table("history").setEntityIf(history, (k, v) -> Boolean.valueOf((v != null))).insert();
|
||||
log.info("history+ his");
|
||||
return Result.succeed("ok");
|
||||
}
|
||||
|
||||
@Post
|
||||
@Mapping("/delete")
|
||||
public Result deleteNote(@Body NoteRequest noteRequest) throws SQLException {
|
||||
int flag = ((DbTableQuery)this.db.table("note").set("title", noteRequest.getTitle()).set("flag", Integer.valueOf(0)).whereEq("id", noteRequest.getId())).update();
|
||||
System.out.println(flag);
|
||||
return Result.succeed("ok");
|
||||
}
|
||||
|
||||
@Get
|
||||
@Mapping("/deleteBack")
|
||||
public Result deleteBack(@Path int id) throws Exception {
|
||||
int flag = ((DbTableQuery)this.db.table("note").set("flag", Integer.valueOf(1)).whereEq("id", Integer.valueOf(id))).update();
|
||||
System.out.println(flag);
|
||||
return Result.succeed("ok");
|
||||
}
|
||||
|
||||
@Get
|
||||
@Mapping("/historyQueryOrDelete")
|
||||
public Result historyQueryOrDelete(@Path int flag) throws Exception {
|
||||
|
||||
log.info("history+ flag" + flag);
|
||||
|
||||
if(flag==0){
|
||||
long count = db.table("history").selectCount();
|
||||
log.info("count:" + count);
|
||||
return Result.succeed(count);
|
||||
}else if(flag==1){
|
||||
int flagdb = db.table("history").whereEq("flag",1).delete();
|
||||
log.info("flagdb:" + flagdb);
|
||||
return Result.succeed(0);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private String getUserInfoId(Context ctx) {
|
||||
String userId = "";
|
||||
if (null != ctx.header("Authorization")) {
|
||||
String token = ctx.header("Authorization");
|
||||
token = token.replace("Bearer ", "");
|
||||
System.out.println("token:" + token);
|
||||
Claims claims = JwtUtils.parseJwt(token);
|
||||
System.out.println("claims:" + claims);
|
||||
if (null != claims) {
|
||||
System.out.println("username:" + claims.get("user_name"));
|
||||
System.out.println("userid:" + claims.get("user_id"));
|
||||
System.out.println("exp:" + claims.get("exp"));
|
||||
userId = claims.get("user_id").toString();
|
||||
return userId;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
package com.cyynote.controller;
|
||||
|
||||
import com.cyynote.controller.BaseController;
|
||||
import org.noear.solon.annotation.Controller;
|
||||
import org.noear.solon.annotation.Get;
|
||||
import org.noear.solon.annotation.Mapping;
|
||||
|
||||
@Controller
|
||||
@Mapping("/api/test")
|
||||
public class Test2Controller extends BaseController {
|
||||
@Get
|
||||
@Mapping("/all")
|
||||
public String allAccess() {
|
||||
return "Public Content.";
|
||||
}
|
||||
|
||||
@Get
|
||||
@Mapping("/user")
|
||||
public String userAccess() {
|
||||
return "User Content.";
|
||||
}
|
||||
|
||||
@Get
|
||||
@Mapping("/mod")
|
||||
public String moderatorAccess() {
|
||||
return "Moderator Board.";
|
||||
}
|
||||
|
||||
@Get
|
||||
@Mapping("/admin")
|
||||
public String adminAccess() {
|
||||
return "Admin Board.";
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package com.cyynote.dso;
|
||||
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import org.noear.solon.auth.AuthProcessorBase;
|
||||
|
||||
public class AuthProcessorImpl extends AuthProcessorBase {
|
||||
public boolean verifyLogined() {
|
||||
return true;
|
||||
}
|
||||
|
||||
protected List<String> getPermissions() {
|
||||
List<String> list = new ArrayList<>();
|
||||
list.add("user:add");
|
||||
list.add("user:demo");
|
||||
return list;
|
||||
}
|
||||
|
||||
protected List<String> getRoles() {
|
||||
List<String> list = new ArrayList<>();
|
||||
list.add("admin1");
|
||||
list.add("admin2");
|
||||
return list;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package com.cyynote.dso;
|
||||
|
||||
import com.cyynote.model.UserModel;
|
||||
import java.util.Map;
|
||||
import org.noear.wood.BaseMapper;
|
||||
import org.noear.wood.annotation.Db;
|
||||
import org.noear.wood.annotation.Sql;
|
||||
|
||||
@Db
|
||||
public interface AuthSqlAnnotation extends BaseMapper<UserModel> {
|
||||
@Sql("select app_id from appx limit 1")
|
||||
int user_get() throws Exception;
|
||||
|
||||
@Sql(value = "select * from user where id = @{id} limit 1", caching = "test", cacheTag = "app_${id}")
|
||||
UserModel user_get2(int paramInt) throws Exception;
|
||||
|
||||
@Sql(value = "select * from ${tb} where id = @{id} limit 1", cacheClear = "test")
|
||||
Map<String, Object> user_get3(String paramString, int paramInt) throws Exception;
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
package com.cyynote.dso;
|
||||
|
||||
|
||||
import java.io.InputStream;
|
||||
import java.sql.Connection;
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import javax.sql.DataSource;
|
||||
|
||||
public class DsHelper {
|
||||
private static boolean inited = false;
|
||||
|
||||
public static void initData(DataSource ds) {
|
||||
if (inited)
|
||||
return;
|
||||
inited = true;
|
||||
Connection conn = null;
|
||||
try {
|
||||
conn = ds.getConnection();
|
||||
PreparedStatement ps = conn.prepareStatement("SELECT name FROM sqlite_master WHERE type='table' AND name='appx';");
|
||||
ResultSet res = ps.executeQuery();
|
||||
if (!res.next()) {
|
||||
String[] sqls = getSqlFromFile();
|
||||
for (String sql : sqls)
|
||||
runSql(conn, sql);
|
||||
}
|
||||
ps.close();
|
||||
} catch (SQLException sqlException) {
|
||||
throw new RuntimeException(sqlException);
|
||||
} finally {
|
||||
try {
|
||||
if (conn != null)
|
||||
conn.close();
|
||||
} catch (SQLException sQLException) {}
|
||||
}
|
||||
}
|
||||
|
||||
private static String[] getSqlFromFile() {
|
||||
try {
|
||||
InputStream ins = com.cyynote.dso.DsHelper.class.getResourceAsStream("/db/schema.sql");
|
||||
int len = ins.available();
|
||||
byte[] bs = new byte[len];
|
||||
ins.read(bs);
|
||||
String str = new String(bs, "UTF-8");
|
||||
String[] sql = str.split(";");
|
||||
return sql;
|
||||
} catch (Exception ex) {
|
||||
throw new RuntimeException(ex);
|
||||
}
|
||||
}
|
||||
|
||||
private static void runSql(Connection conn, String sql) throws SQLException {
|
||||
System.out.println(sql);
|
||||
PreparedStatement ps = conn.prepareStatement(sql);
|
||||
ps.executeUpdate();
|
||||
ps.close();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
package com.cyynote.dso;
|
||||
|
||||
import com.cyynote.model.NoteModel;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import org.noear.wood.BaseMapper;
|
||||
import org.noear.wood.annotation.Db;
|
||||
import org.noear.wood.annotation.Sql;
|
||||
|
||||
@Db
|
||||
public interface NoteSqlAnnotation extends BaseMapper<NoteModel> {
|
||||
@Sql("select id from note limit 1")
|
||||
int note_get() throws Exception;
|
||||
|
||||
@Sql("select * from note where flag =1 limit 10000")
|
||||
List<NoteModel> findAll() throws Exception;
|
||||
|
||||
@Sql(value = "select * from note where id = @{id} limit 1", caching = "test", cacheTag = "app_${id}")
|
||||
NoteModel note_get2(int paramInt) throws Exception;
|
||||
|
||||
@Sql(value = "select * from ${tb} where id = @{id} limit 1", cacheClear = "test")
|
||||
Map<String, Object> note_get3(String paramString, int paramInt) throws Exception;
|
||||
|
||||
@Sql("insert into note (`pid`,`title`,`context`,`createtime`,`flag`) values (@{pid},${title},${context},${createtime},@{flag})")
|
||||
Map<String, Object> insert(int paramInt1, String paramString1, String paramString2, String paramString3, int paramInt2) throws Exception;
|
||||
|
||||
@Sql("update note set id = @{id} where id = @{id} ")
|
||||
Map<String, Object> update(String paramString, int paramInt) throws Exception;
|
||||
|
||||
@Sql("update note set viewtime = @{viewtime} where id = @{id}")
|
||||
Map<String, Object> updateViewtime(String paramString, int paramInt) throws Exception;
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package com.cyynote.dso;
|
||||
|
||||
import com.cyynote.model.AppxModel;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import org.noear.wood.BaseMapper;
|
||||
import org.noear.wood.annotation.Db;
|
||||
import org.noear.wood.annotation.Sql;
|
||||
|
||||
@Db
|
||||
public interface SqlAnnotation extends BaseMapper<AppxModel> {
|
||||
@Sql("select app_id from appx limit 1")
|
||||
int appx_get() throws Exception;
|
||||
|
||||
@Sql(value = "select * from appx where app_id = @{app_id} limit 1", caching = "test", cacheTag = "app_${app_id}")
|
||||
AppxModel appx_get2(int paramInt) throws Exception;
|
||||
|
||||
@Sql(value = "select * from ${tb} where app_id = @{app_id} limit 1", cacheClear = "test")
|
||||
Map<String, Object> appx_get3(String paramString, int paramInt) throws Exception;
|
||||
|
||||
@Sql("select * from appx where app_id>@{app_id} order by app_id asc limit 4")
|
||||
List<AppxModel> appx_getlist(int paramInt) throws Exception;
|
||||
|
||||
@Sql("select app_id from appx limit 4")
|
||||
List<Integer> appx_getids() throws Exception;
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package com.cyynote.dso;
|
||||
|
||||
import com.cyynote.model.AppxModel;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import org.noear.wood.BaseMapper;
|
||||
import org.noear.wood.xml.Namespace;
|
||||
|
||||
@Namespace("webapp.dso")
|
||||
public interface SqlMapper extends BaseMapper<AppxModel> {
|
||||
int appx_get() throws Exception;
|
||||
|
||||
AppxModel appx_get2(int paramInt) throws Exception;
|
||||
|
||||
Map<String, Object> appx_get3(String paramString, int paramInt) throws Exception;
|
||||
|
||||
List<AppxModel> appx_getlist(int paramInt) throws Exception;
|
||||
|
||||
List<Integer> appx_getids() throws Exception;
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package com.cyynote.model;
|
||||
|
||||
|
||||
import org.noear.wood.annotation.PrimaryKey;
|
||||
|
||||
public class Appx {
|
||||
@PrimaryKey
|
||||
public int app_id;
|
||||
|
||||
public int agroup_id;
|
||||
|
||||
public String note;
|
||||
|
||||
public String app_key;
|
||||
|
||||
public int ar_is_examine;
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package com.cyynote.model;
|
||||
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import org.noear.wood.annotation.PrimaryKey;
|
||||
import org.noear.wood.annotation.Table;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@Table("appx")
|
||||
public class AppxModel {
|
||||
@PrimaryKey
|
||||
private int app_id;
|
||||
private int agroup_id;
|
||||
private String note;
|
||||
private String app_key;
|
||||
private int ar_is_examine;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,86 @@
|
||||
package com.cyynote.model;
|
||||
|
||||
|
||||
import lombok.Data;
|
||||
import org.noear.wood.annotation.PrimaryKey;
|
||||
import org.noear.wood.annotation.Table;
|
||||
|
||||
@Data
|
||||
@Table("history")
|
||||
public class HistoryModel {
|
||||
@PrimaryKey
|
||||
public Integer id;
|
||||
|
||||
public Integer nid;
|
||||
|
||||
public String title;
|
||||
|
||||
public String context;
|
||||
|
||||
public String conjson;
|
||||
|
||||
public String createtime;
|
||||
|
||||
public Integer flag;
|
||||
|
||||
public void setId(Integer id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public void setNid(Integer nid) {
|
||||
this.nid = nid;
|
||||
}
|
||||
|
||||
public void setTitle(String title) {
|
||||
this.title = title;
|
||||
}
|
||||
|
||||
public void setContext(String context) {
|
||||
this.context = context;
|
||||
}
|
||||
|
||||
public void setConjson(String conjson) {
|
||||
this.conjson = conjson;
|
||||
}
|
||||
|
||||
public void setCreatetime(String createtime) {
|
||||
this.createtime = createtime;
|
||||
}
|
||||
|
||||
public void setFlag(Integer flag) {
|
||||
this.flag = flag;
|
||||
}
|
||||
|
||||
|
||||
public String toString() {
|
||||
return "HistoryModel(id=" + getId() + ", nid=" + getNid() + ", title=" + getTitle() + ", context=" + getContext() + ", conjson=" + getConjson() + ", createtime=" + getCreatetime() + ", flag=" + getFlag() + ")";
|
||||
}
|
||||
|
||||
public Integer getId() {
|
||||
return this.id;
|
||||
}
|
||||
|
||||
public Integer getNid() {
|
||||
return this.nid;
|
||||
}
|
||||
|
||||
public String getTitle() {
|
||||
return this.title;
|
||||
}
|
||||
|
||||
public String getContext() {
|
||||
return this.context;
|
||||
}
|
||||
|
||||
public String getConjson() {
|
||||
return this.conjson;
|
||||
}
|
||||
|
||||
public String getCreatetime() {
|
||||
return this.createtime;
|
||||
}
|
||||
|
||||
public Integer getFlag() {
|
||||
return this.flag;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,107 @@
|
||||
package com.cyynote.model;
|
||||
|
||||
|
||||
import lombok.Data;
|
||||
import org.noear.wood.annotation.PrimaryKey;
|
||||
import org.noear.wood.annotation.Table;
|
||||
|
||||
@Data
|
||||
@Table("note")
|
||||
public class NoteModel {
|
||||
@PrimaryKey
|
||||
public Integer id;
|
||||
|
||||
public Integer pid;
|
||||
|
||||
public String title;
|
||||
|
||||
public String context;
|
||||
|
||||
public String conjson;
|
||||
|
||||
public String createtime;
|
||||
|
||||
public String updatetime;
|
||||
|
||||
public String viewtime;
|
||||
|
||||
public Integer flag;
|
||||
|
||||
public void setId(Integer id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public void setPid(Integer pid) {
|
||||
this.pid = pid;
|
||||
}
|
||||
|
||||
public void setTitle(String title) {
|
||||
this.title = title;
|
||||
}
|
||||
|
||||
public void setContext(String context) {
|
||||
this.context = context;
|
||||
}
|
||||
|
||||
public void setConjson(String conjson) {
|
||||
this.conjson = conjson;
|
||||
}
|
||||
|
||||
public void setCreatetime(String createtime) {
|
||||
this.createtime = createtime;
|
||||
}
|
||||
|
||||
public void setUpdatetime(String updatetime) {
|
||||
this.updatetime = updatetime;
|
||||
}
|
||||
|
||||
public void setViewtime(String viewtime) {
|
||||
this.viewtime = viewtime;
|
||||
}
|
||||
|
||||
public void setFlag(Integer flag) {
|
||||
this.flag = flag;
|
||||
}
|
||||
|
||||
|
||||
public String toString() {
|
||||
return "NoteModel(id=" + getId() + ", pid=" + getPid() + ", title=" + getTitle() + ", context=" + getContext() + ", conjson=" + getConjson() + ", createtime=" + getCreatetime() + ", updatetime=" + getUpdatetime() + ", viewtime=" + getViewtime() + ", flag=" + getFlag() + ")";
|
||||
}
|
||||
|
||||
public Integer getId() {
|
||||
return this.id;
|
||||
}
|
||||
|
||||
public Integer getPid() {
|
||||
return this.pid;
|
||||
}
|
||||
|
||||
public String getTitle() {
|
||||
return this.title;
|
||||
}
|
||||
|
||||
public String getContext() {
|
||||
return this.context;
|
||||
}
|
||||
|
||||
public String getConjson() {
|
||||
return this.conjson;
|
||||
}
|
||||
|
||||
public String getCreatetime() {
|
||||
return this.createtime;
|
||||
}
|
||||
|
||||
public String getUpdatetime() {
|
||||
return this.updatetime;
|
||||
}
|
||||
|
||||
public String getViewtime() {
|
||||
return this.viewtime;
|
||||
}
|
||||
|
||||
public Integer getFlag() {
|
||||
return this.flag;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,85 @@
|
||||
package com.cyynote.model;
|
||||
|
||||
|
||||
import lombok.Data;
|
||||
import org.noear.wood.annotation.PrimaryKey;
|
||||
import org.noear.wood.annotation.Table;
|
||||
|
||||
@Data
|
||||
@Table("user")
|
||||
public class UserModel {
|
||||
@PrimaryKey
|
||||
public Integer id;
|
||||
|
||||
public String email;
|
||||
|
||||
public String password;
|
||||
|
||||
public String username;
|
||||
|
||||
public String role;
|
||||
|
||||
public String token;
|
||||
|
||||
public String logintime;
|
||||
|
||||
public void setId(Integer id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public void setEmail(String email) {
|
||||
this.email = email;
|
||||
}
|
||||
|
||||
public void setPassword(String password) {
|
||||
this.password = password;
|
||||
}
|
||||
|
||||
public void setUsername(String username) {
|
||||
this.username = username;
|
||||
}
|
||||
|
||||
public void setRole(String role) {
|
||||
this.role = role;
|
||||
}
|
||||
|
||||
public void setToken(String token) {
|
||||
this.token = token;
|
||||
}
|
||||
|
||||
public void setLogintime(String logintime) {
|
||||
this.logintime = logintime;
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
return "UserModel(id=" + getId() + ", email=" + getEmail() + ", password=" + getPassword() + ", username=" + getUsername() + ", role=" + getRole() + ", token=" + getToken() + ", logintime=" + getLogintime() + ")";
|
||||
}
|
||||
|
||||
public Integer getId() {
|
||||
return this.id;
|
||||
}
|
||||
|
||||
public String getEmail() {
|
||||
return this.email;
|
||||
}
|
||||
|
||||
public String getPassword() {
|
||||
return this.password;
|
||||
}
|
||||
|
||||
public String getUsername() {
|
||||
return this.username;
|
||||
}
|
||||
|
||||
public String getRole() {
|
||||
return this.role;
|
||||
}
|
||||
|
||||
public String getToken() {
|
||||
return this.token;
|
||||
}
|
||||
|
||||
public String getLogintime() {
|
||||
return this.logintime;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package com.cyynote.payload.request;
|
||||
|
||||
|
||||
public class LoginRequest {
|
||||
private String username;
|
||||
|
||||
private String password;
|
||||
|
||||
public String getUsername() {
|
||||
return this.username;
|
||||
}
|
||||
|
||||
public void setUsername(String username) {
|
||||
this.username = username;
|
||||
}
|
||||
|
||||
public String getPassword() {
|
||||
return this.password;
|
||||
}
|
||||
|
||||
public void setPassword(String password) {
|
||||
this.password = password;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
package com.cyynote.payload.request;
|
||||
|
||||
|
||||
public class NoteRequest {
|
||||
private Long id;
|
||||
|
||||
private Long pid;
|
||||
|
||||
private String title;
|
||||
|
||||
private String context;
|
||||
|
||||
public Long getId() {
|
||||
return this.id;
|
||||
}
|
||||
|
||||
public void setId(Long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public Long getPid() {
|
||||
return this.pid;
|
||||
}
|
||||
|
||||
public void setPid(Long pid) {
|
||||
this.pid = pid;
|
||||
}
|
||||
|
||||
public String getTitle() {
|
||||
return this.title;
|
||||
}
|
||||
|
||||
public void setTitle(String title) {
|
||||
this.title = title;
|
||||
}
|
||||
|
||||
public String getContext() {
|
||||
return this.context;
|
||||
}
|
||||
|
||||
public void setContext(String context) {
|
||||
this.context = context;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
package com.cyynote.payload.request;
|
||||
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
public class SignupRequest {
|
||||
private String username;
|
||||
|
||||
private String email;
|
||||
|
||||
private Set<String> role;
|
||||
|
||||
private String password;
|
||||
|
||||
public String getUsername() {
|
||||
return this.username;
|
||||
}
|
||||
|
||||
public void setUsername(String username) {
|
||||
this.username = username;
|
||||
}
|
||||
|
||||
public String getEmail() {
|
||||
return this.email;
|
||||
}
|
||||
|
||||
public void setEmail(String email) {
|
||||
this.email = email;
|
||||
}
|
||||
|
||||
public String getPassword() {
|
||||
return this.password;
|
||||
}
|
||||
|
||||
public void setPassword(String password) {
|
||||
this.password = password;
|
||||
}
|
||||
|
||||
public Set<String> getRole() {
|
||||
return this.role;
|
||||
}
|
||||
|
||||
public void setRole(Set<String> role) {
|
||||
this.role = role;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
package com.cyynote.payload.request;
|
||||
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
public class UpdatePasswordRequest {
|
||||
private String username;
|
||||
|
||||
private String oldpassword;
|
||||
|
||||
private String newpassword;
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,70 @@
|
||||
package com.cyynote.payload.response;
|
||||
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class JwtResponse {
|
||||
private String token;
|
||||
|
||||
private String type = "Bearer";
|
||||
|
||||
private Long id;
|
||||
|
||||
private String username;
|
||||
|
||||
private String email;
|
||||
|
||||
private List<String> roles;
|
||||
|
||||
public JwtResponse(String accessToken, Long id, String username, String email, List<String> roles) {
|
||||
this.token = accessToken;
|
||||
this.id = id;
|
||||
this.username = username;
|
||||
this.email = email;
|
||||
this.roles = roles;
|
||||
}
|
||||
|
||||
public String getAccessToken() {
|
||||
return this.token;
|
||||
}
|
||||
|
||||
public void setAccessToken(String accessToken) {
|
||||
this.token = accessToken;
|
||||
}
|
||||
|
||||
public String getTokenType() {
|
||||
return this.type;
|
||||
}
|
||||
|
||||
public void setTokenType(String tokenType) {
|
||||
this.type = tokenType;
|
||||
}
|
||||
|
||||
public Long getId() {
|
||||
return this.id;
|
||||
}
|
||||
|
||||
public void setId(Long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getEmail() {
|
||||
return this.email;
|
||||
}
|
||||
|
||||
public void setEmail(String email) {
|
||||
this.email = email;
|
||||
}
|
||||
|
||||
public String getUsername() {
|
||||
return this.username;
|
||||
}
|
||||
|
||||
public void setUsername(String username) {
|
||||
this.username = username;
|
||||
}
|
||||
|
||||
public List<String> getRoles() {
|
||||
return this.roles;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package com.cyynote.payload.response;
|
||||
|
||||
public class MessageResponse {
|
||||
private String message;
|
||||
|
||||
public MessageResponse(String message) {
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
public String getMessage() {
|
||||
return this.message;
|
||||
}
|
||||
|
||||
public void setMessage(String message) {
|
||||
this.message = message;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
package com.cyynote.util;
|
||||
|
||||
|
||||
import com.cyynote.util.TreeNode;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class TreeBuild {
|
||||
public List<TreeNode> nodeList = new ArrayList<>();
|
||||
|
||||
public TreeBuild(List<TreeNode> nodeList) {
|
||||
this.nodeList = nodeList;
|
||||
}
|
||||
|
||||
public List<TreeNode> getRootNode() {
|
||||
List<TreeNode> rootNodeList = new ArrayList<>();
|
||||
for (TreeNode treeNode : this.nodeList) {
|
||||
if (0 == treeNode.getPid())
|
||||
rootNodeList.add(treeNode);
|
||||
}
|
||||
return rootNodeList;
|
||||
}
|
||||
|
||||
public List<TreeNode> buildTree() {
|
||||
List<TreeNode> treeNodes = new ArrayList<>();
|
||||
for (TreeNode treeRootNode : getRootNode()) {
|
||||
treeRootNode = buildChildTree(treeRootNode);
|
||||
treeNodes.add(treeRootNode);
|
||||
}
|
||||
return treeNodes;
|
||||
}
|
||||
|
||||
public TreeNode buildChildTree(TreeNode pNode) {
|
||||
List<TreeNode> childTree = new ArrayList<>();
|
||||
for (TreeNode treeNode : this.nodeList) {
|
||||
if (treeNode.getPid() == pNode.getId())
|
||||
childTree.add(buildChildTree(treeNode));
|
||||
}
|
||||
pNode.setChildren(childTree);
|
||||
return pNode;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,74 @@
|
||||
package com.cyynote.util;
|
||||
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class TreeNode {
|
||||
private int id;
|
||||
|
||||
private int pid;
|
||||
|
||||
private String label;
|
||||
|
||||
private String value;
|
||||
|
||||
private String key;
|
||||
|
||||
private List<com.cyynote.util.TreeNode> children;
|
||||
|
||||
public TreeNode(int id, int pid, String label, String value, String key) {
|
||||
this.id = id;
|
||||
this.pid = pid;
|
||||
this.label = label;
|
||||
this.value = value;
|
||||
this.key = key;
|
||||
}
|
||||
|
||||
public int getId() {
|
||||
return this.id;
|
||||
}
|
||||
|
||||
public void setId(int id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public int getPid() {
|
||||
return this.pid;
|
||||
}
|
||||
|
||||
public void setPid(int pid) {
|
||||
this.pid = pid;
|
||||
}
|
||||
|
||||
public String getLabel() {
|
||||
return this.label;
|
||||
}
|
||||
|
||||
public void setLabel(String label) {
|
||||
this.label = label;
|
||||
}
|
||||
|
||||
public String getValue() {
|
||||
return this.value;
|
||||
}
|
||||
|
||||
public void setValue(String value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public String getKey() {
|
||||
return this.key;
|
||||
}
|
||||
|
||||
public void setKey(String key) {
|
||||
this.key = key;
|
||||
}
|
||||
|
||||
public List<com.cyynote.util.TreeNode> getChildren() {
|
||||
return this.children;
|
||||
}
|
||||
|
||||
public void setChildren(List<com.cyynote.util.TreeNode> children) {
|
||||
this.children = children;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
test.db1:
|
||||
jdbcUrl: "jdbc:sqlite:D:/cyynote.db"
|
||||
driverClassName: "org.sqlite.JDBC"
|
||||
@@ -0,0 +1,4 @@
|
||||
|
||||
test.db1:
|
||||
jdbcUrl: "jdbc:sqlite:/opt/db/cyynote.db"
|
||||
driverClassName: "org.sqlite.JDBC"
|
||||
@@ -0,0 +1,23 @@
|
||||
server.port: 8080
|
||||
|
||||
solon.app:
|
||||
name: demoapp
|
||||
group: demo
|
||||
|
||||
# 基于 header 传(适合接口开发,每次会自动输出[可改为手动])
|
||||
solon.env: dev
|
||||
|
||||
|
||||
solon.output.meta: 1
|
||||
|
||||
|
||||
server.session:
|
||||
timeout: 7200 #单位秒;(可不配,默认:7200)
|
||||
state:
|
||||
jwt:
|
||||
name: TOKEN #变量名;(可不配,默认:TOKEN)
|
||||
secret: "E3F9N2kRDQf55pnJPnFoo5+ylKmZQ7AXmWeOVPKbEd8=" #密钥(使用 JwtUtils.createKey() 生成);(可不配,默认:xxx)
|
||||
prefix: Bearer #令牌前缀(可不配,默认:空)
|
||||
allowExpire: true #充许超时;(可不配,默认:true);false,则token一直有效
|
||||
allowAutoIssue: true #充许自动输出;(可不配,默认:true);flase,则不向header 或 cookie 设置值(由用户手动控制)
|
||||
allowUseHeader: true #充许使用Header传递;(可不配,默认:使用 Cookie 传递);true,则使用 header 传递
|
||||
@@ -0,0 +1,53 @@
|
||||
|
||||
|
||||
|
||||
|
||||
CREATE TABLE `user` (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
email TEXT,
|
||||
password TEXT,
|
||||
username TEXT,
|
||||
role TEXT,
|
||||
token TEXT,
|
||||
logintime TEXT
|
||||
);
|
||||
CREATE TABLE `note` (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
pid INTEGER,
|
||||
title TEXT,
|
||||
context TEXT,
|
||||
conjson TEXT,
|
||||
createtime TEXT,
|
||||
updatetime TEXT,
|
||||
viewtime TEXT,
|
||||
userid INTEGER,
|
||||
username TEXT,
|
||||
flag INTEGER DEFAULT 1
|
||||
);
|
||||
CREATE TABLE `history` (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
nid INTEGER,
|
||||
title TEXT,
|
||||
context TEXT,
|
||||
conjson TEXT,
|
||||
createtime TEXT,
|
||||
userid INTEGER,
|
||||
username TEXT
|
||||
);
|
||||
CREATE TABLE appx (
|
||||
app_id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
app_key TEXT,
|
||||
akey TEXT,
|
||||
ugroup_id INTEGER DEFAULT 0,
|
||||
agroup_id INTEGER,
|
||||
name TEXT,
|
||||
note TEXT,
|
||||
ar_is_setting INTEGER NOT NULL DEFAULT 0,
|
||||
ar_is_examine INTEGER NOT NULL DEFAULT 0,
|
||||
ar_examine_ver INTEGER NOT NULL DEFAULT 0,
|
||||
log_fulltime TEXT
|
||||
);
|
||||
|
||||
INSERT INTO `user` VALUES ('1', 'aaaaaaaaa', 'cyy123', 'admin', 'admin','','');
|
||||
INSERT INTO `user` VALUES ('2', 'aaaaaaaaa', 'test', 'test', 'test','','');
|
||||
INSERT INTO `note` VALUES ('1', '0', 'test', 'test', 'test','','','','1','1','1');
|
||||
@@ -0,0 +1,31 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<mapper namespace="webapp.dso"
|
||||
db="db">
|
||||
<sql id="appx_get" return="int" remarks="随便取条数据的ID">
|
||||
select app_id from appx limit 1
|
||||
</sql>
|
||||
|
||||
<sql id="appx_get0" return="Integer" remarks="随便取条数据的ID">
|
||||
<![CDATA[
|
||||
select app_id from appx where app_id < 1 limit 1
|
||||
]]>
|
||||
</sql>
|
||||
|
||||
<sql id="appx_get2" return="AppxModel" remarks="根据id取条数据">
|
||||
select * from appx where app_id = @{app_id:int} limit 1
|
||||
</sql>
|
||||
|
||||
<sql id="appx_getlist" return="List[AppxModel]">
|
||||
select * from appx where app_id > @{app_id:int} order by app_id asc limit 4
|
||||
</sql>
|
||||
|
||||
|
||||
<sql id="appx_getids" return="List[Integer]">
|
||||
select app_id from appx limit 4
|
||||
</sql>
|
||||
|
||||
<sql id="appx_getids2" return="Set[Integer]">
|
||||
select app_id from appx limit 4
|
||||
</sql>
|
||||
|
||||
</mapper>
|
||||
@@ -0,0 +1,3 @@
|
||||
test.db1:
|
||||
jdbcUrl: "jdbc:sqlite:D:/cyynote.db"
|
||||
driverClassName: "org.sqlite.JDBC"
|
||||
@@ -0,0 +1,4 @@
|
||||
|
||||
test.db1:
|
||||
jdbcUrl: "jdbc:sqlite:/opt/db/cyynote.db"
|
||||
driverClassName: "org.sqlite.JDBC"
|
||||
@@ -0,0 +1,23 @@
|
||||
server.port: 8080
|
||||
|
||||
solon.app:
|
||||
name: demoapp
|
||||
group: demo
|
||||
|
||||
# 基于 header 传(适合接口开发,每次会自动输出[可改为手动])
|
||||
solon.env: dev
|
||||
|
||||
|
||||
solon.output.meta: 1
|
||||
|
||||
|
||||
server.session:
|
||||
timeout: 7200 #单位秒;(可不配,默认:7200)
|
||||
state:
|
||||
jwt:
|
||||
name: TOKEN #变量名;(可不配,默认:TOKEN)
|
||||
secret: "E3F9N2kRDQf55pnJPnFoo5+ylKmZQ7AXmWeOVPKbEd8=" #密钥(使用 JwtUtils.createKey() 生成);(可不配,默认:xxx)
|
||||
prefix: Bearer #令牌前缀(可不配,默认:空)
|
||||
allowExpire: true #充许超时;(可不配,默认:true);false,则token一直有效
|
||||
allowAutoIssue: true #充许自动输出;(可不配,默认:true);flase,则不向header 或 cookie 设置值(由用户手动控制)
|
||||
allowUseHeader: true #充许使用Header传递;(可不配,默认:使用 Cookie 传递);true,则使用 header 传递
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,53 @@
|
||||
|
||||
|
||||
|
||||
|
||||
CREATE TABLE `user` (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
email TEXT,
|
||||
password TEXT,
|
||||
username TEXT,
|
||||
role TEXT,
|
||||
token TEXT,
|
||||
logintime TEXT
|
||||
);
|
||||
CREATE TABLE `note` (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
pid INTEGER,
|
||||
title TEXT,
|
||||
context TEXT,
|
||||
conjson TEXT,
|
||||
createtime TEXT,
|
||||
updatetime TEXT,
|
||||
viewtime TEXT,
|
||||
userid INTEGER,
|
||||
username TEXT,
|
||||
flag INTEGER DEFAULT 1
|
||||
);
|
||||
CREATE TABLE `history` (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
nid INTEGER,
|
||||
title TEXT,
|
||||
context TEXT,
|
||||
conjson TEXT,
|
||||
createtime TEXT,
|
||||
userid INTEGER,
|
||||
username TEXT
|
||||
);
|
||||
CREATE TABLE appx (
|
||||
app_id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
app_key TEXT,
|
||||
akey TEXT,
|
||||
ugroup_id INTEGER DEFAULT 0,
|
||||
agroup_id INTEGER,
|
||||
name TEXT,
|
||||
note TEXT,
|
||||
ar_is_setting INTEGER NOT NULL DEFAULT 0,
|
||||
ar_is_examine INTEGER NOT NULL DEFAULT 0,
|
||||
ar_examine_ver INTEGER NOT NULL DEFAULT 0,
|
||||
log_fulltime TEXT
|
||||
);
|
||||
|
||||
INSERT INTO `user` VALUES ('1', 'aaaaaaaaa', 'cyy123', 'admin', 'admin','','');
|
||||
INSERT INTO `user` VALUES ('2', 'aaaaaaaaa', 'test', 'test', 'test','','');
|
||||
INSERT INTO `note` VALUES ('1', '0', 'test', 'test', 'test','','','','1','1','1');
|
||||
@@ -0,0 +1,31 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<mapper namespace="webapp.dso"
|
||||
db="db">
|
||||
<sql id="appx_get" return="int" remarks="随便取条数据的ID">
|
||||
select app_id from appx limit 1
|
||||
</sql>
|
||||
|
||||
<sql id="appx_get0" return="Integer" remarks="随便取条数据的ID">
|
||||
<![CDATA[
|
||||
select app_id from appx where app_id < 1 limit 1
|
||||
]]>
|
||||
</sql>
|
||||
|
||||
<sql id="appx_get2" return="AppxModel" remarks="根据id取条数据">
|
||||
select * from appx where app_id = @{app_id:int} limit 1
|
||||
</sql>
|
||||
|
||||
<sql id="appx_getlist" return="List[AppxModel]">
|
||||
select * from appx where app_id > @{app_id:int} order by app_id asc limit 4
|
||||
</sql>
|
||||
|
||||
|
||||
<sql id="appx_getids" return="List[Integer]">
|
||||
select app_id from appx limit 4
|
||||
</sql>
|
||||
|
||||
<sql id="appx_getids2" return="Set[Integer]">
|
||||
select app_id from appx limit 4
|
||||
</sql>
|
||||
|
||||
</mapper>
|
||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,5 @@
|
||||
#Generated by Maven
|
||||
#Wed Feb 05 19:29:06 CST 2025
|
||||
groupId=com.cyynote
|
||||
artifactId=cyynote
|
||||
version=1.0.0
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
com\cyynote\payload\request\UpdatePasswordRequest.class
|
||||
com\cyynote\controller\BaseController.class
|
||||
com\cyynote\dso\DsHelper.class
|
||||
com\cyynote\model\HistoryModel.class
|
||||
com\cyynote\model\Appx.class
|
||||
com\cyynote\payload\request\SignupRequest.class
|
||||
com\cyynote\dso\AuthProcessorImpl.class
|
||||
com\cyynote\controller\Test2Controller.class
|
||||
com\cyynote\payload\response\MessageResponse.class
|
||||
com\cyynote\WebApp.class
|
||||
com\cyynote\dso\AuthSqlAnnotation.class
|
||||
com\cyynote\controller\JwtInterceptor.class
|
||||
com\cyynote\model\AppxModel.class
|
||||
com\cyynote\controller\DemoController.class
|
||||
com\cyynote\Config.class
|
||||
com\cyynote\util\TreeBuild.class
|
||||
com\cyynote\dso\SqlMapper.class
|
||||
com\cyynote\model\UserModel.class
|
||||
com\cyynote\payload\response\JwtResponse.class
|
||||
com\cyynote\dso\NoteSqlAnnotation.class
|
||||
com\cyynote\payload\request\LoginRequest.class
|
||||
com\cyynote\controller\NoteController.class
|
||||
com\cyynote\payload\request\NoteRequest.class
|
||||
com\cyynote\util\TreeNode.class
|
||||
com\cyynote\model\NoteModel.class
|
||||
com\cyynote\dso\SqlAnnotation.class
|
||||
com\cyynote\controller\AuthController.class
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
D:\chuyy_code\cyynote\cyynote-backend\src\main\java\com\cyynote\Config.java
|
||||
D:\chuyy_code\cyynote\cyynote-backend\src\main\java\com\cyynote\controller\AuthController.java
|
||||
D:\chuyy_code\cyynote\cyynote-backend\src\main\java\com\cyynote\controller\BaseController.java
|
||||
D:\chuyy_code\cyynote\cyynote-backend\src\main\java\com\cyynote\controller\DemoController.java
|
||||
D:\chuyy_code\cyynote\cyynote-backend\src\main\java\com\cyynote\controller\JwtInterceptor.java
|
||||
D:\chuyy_code\cyynote\cyynote-backend\src\main\java\com\cyynote\controller\NoteController.java
|
||||
D:\chuyy_code\cyynote\cyynote-backend\src\main\java\com\cyynote\controller\Test2Controller.java
|
||||
D:\chuyy_code\cyynote\cyynote-backend\src\main\java\com\cyynote\dso\AuthProcessorImpl.java
|
||||
D:\chuyy_code\cyynote\cyynote-backend\src\main\java\com\cyynote\dso\AuthSqlAnnotation.java
|
||||
D:\chuyy_code\cyynote\cyynote-backend\src\main\java\com\cyynote\dso\DsHelper.java
|
||||
D:\chuyy_code\cyynote\cyynote-backend\src\main\java\com\cyynote\dso\NoteSqlAnnotation.java
|
||||
D:\chuyy_code\cyynote\cyynote-backend\src\main\java\com\cyynote\dso\SqlAnnotation.java
|
||||
D:\chuyy_code\cyynote\cyynote-backend\src\main\java\com\cyynote\dso\SqlMapper.java
|
||||
D:\chuyy_code\cyynote\cyynote-backend\src\main\java\com\cyynote\model\Appx.java
|
||||
D:\chuyy_code\cyynote\cyynote-backend\src\main\java\com\cyynote\model\AppxModel.java
|
||||
D:\chuyy_code\cyynote\cyynote-backend\src\main\java\com\cyynote\model\HistoryModel.java
|
||||
D:\chuyy_code\cyynote\cyynote-backend\src\main\java\com\cyynote\model\NoteModel.java
|
||||
D:\chuyy_code\cyynote\cyynote-backend\src\main\java\com\cyynote\model\UserModel.java
|
||||
D:\chuyy_code\cyynote\cyynote-backend\src\main\java\com\cyynote\payload\request\LoginRequest.java
|
||||
D:\chuyy_code\cyynote\cyynote-backend\src\main\java\com\cyynote\payload\request\NoteRequest.java
|
||||
D:\chuyy_code\cyynote\cyynote-backend\src\main\java\com\cyynote\payload\request\SignupRequest.java
|
||||
D:\chuyy_code\cyynote\cyynote-backend\src\main\java\com\cyynote\payload\request\UpdatePasswordRequest.java
|
||||
D:\chuyy_code\cyynote\cyynote-backend\src\main\java\com\cyynote\payload\response\JwtResponse.java
|
||||
D:\chuyy_code\cyynote\cyynote-backend\src\main\java\com\cyynote\payload\response\MessageResponse.java
|
||||
D:\chuyy_code\cyynote\cyynote-backend\src\main\java\com\cyynote\util\TreeBuild.java
|
||||
D:\chuyy_code\cyynote\cyynote-backend\src\main\java\com\cyynote\util\TreeNode.java
|
||||
D:\chuyy_code\cyynote\cyynote-backend\src\main\java\com\cyynote\WebApp.java
|
||||
Reference in New Issue
Block a user