parent
bb1f6b672a
commit
d72f2ce8b4
@ -0,0 +1,93 @@
|
||||
<?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">
|
||||
<parent>
|
||||
<artifactId>dev-protocol</artifactId>
|
||||
<groupId>org.example</groupId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<artifactId>dev-protocol-devops</artifactId>
|
||||
|
||||
<properties>
|
||||
<maven.compiler.source>8</maven.compiler.source>
|
||||
<maven.compiler.target>8</maven.compiler.target>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-data-jpa</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-thymeleaf</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-web</artifactId>
|
||||
</dependency>
|
||||
<!-- 如果是2.3.1或者以上,需要添加注解依赖的包。-->
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-validation</artifactId>
|
||||
</dependency>
|
||||
<!-- <dependency>-->
|
||||
<!-- <groupId>org.springframework.cloud</groupId>-->
|
||||
<!-- <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>-->
|
||||
<!-- </dependency>-->
|
||||
<!-- <dependency>-->
|
||||
<!-- <groupId>org.springframework.cloud</groupId>-->
|
||||
<!-- <artifactId>spring-cloud-starter-config</artifactId>-->
|
||||
<!-- </dependency>-->
|
||||
<!--启用链路追踪服务-->
|
||||
<dependency>
|
||||
<groupId>org.springframework.cloud</groupId>
|
||||
<artifactId>spring-cloud-starter-zipkin</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-actuator</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-devtools</artifactId>
|
||||
<scope>runtime</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.h2database</groupId>
|
||||
<artifactId>h2</artifactId>
|
||||
<scope>runtime</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-test</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
|
||||
<dependency>
|
||||
<groupId>org.seleniumhq.selenium</groupId>
|
||||
<artifactId>selenium-java</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.junit.jupiter</groupId>
|
||||
<artifactId>junit-jupiter-api</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
</project>
|
@ -0,0 +1,17 @@
|
||||
package com.baiye;
|
||||
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
|
||||
/**
|
||||
* 开发协议开发运维 应用程序
|
||||
*
|
||||
* @author q
|
||||
* @date 2021/11/26
|
||||
*/
|
||||
@SpringBootApplication
|
||||
public class DevProtocolDevOpsApplication {
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(DevProtocolDevOpsApplication.class, args);
|
||||
}
|
||||
}
|
@ -0,0 +1,77 @@
|
||||
package com.baiye.controller;
|
||||
|
||||
import com.baiye.entity.Notebook;
|
||||
import com.baiye.repository.NotebookRepository;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.Model;
|
||||
import org.springframework.validation.BindingResult;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
|
||||
import javax.validation.Valid;
|
||||
|
||||
@Controller
|
||||
@RequestMapping("/")
|
||||
public class NotebookController {
|
||||
|
||||
private final NotebookRepository notebookRepository;
|
||||
|
||||
@Autowired
|
||||
public NotebookController(NotebookRepository notebookRepository) {
|
||||
this.notebookRepository = notebookRepository;
|
||||
}
|
||||
|
||||
@GetMapping("signup")
|
||||
public String showSignUpForm(Notebook notebook) {
|
||||
return "add-notebook";
|
||||
}
|
||||
|
||||
@GetMapping("list")
|
||||
public String showUpdateForm(Model model) {
|
||||
model.addAttribute("notebooks", notebookRepository.findAll());
|
||||
return "index";
|
||||
}
|
||||
|
||||
@PostMapping("add")
|
||||
public String addNote(@Valid Notebook notebook, BindingResult result, Model model) {
|
||||
if (result.hasErrors()) {
|
||||
return "add-notebook";
|
||||
}
|
||||
|
||||
notebookRepository.save(notebook);
|
||||
return "redirect:list";
|
||||
}
|
||||
|
||||
@GetMapping("edit/{id}")
|
||||
public String showUpdateForm(@PathVariable("id") long id, Model model) {
|
||||
Notebook notebook = notebookRepository.findById(id)
|
||||
.orElseThrow(() -> new IllegalArgumentException("Invalid notebook Id:" + id));
|
||||
model.addAttribute("notebook", notebook);
|
||||
return "update-notebook";
|
||||
}
|
||||
|
||||
@PostMapping("update/{id}")
|
||||
public String updateNote(@PathVariable("id") long id, @Valid Notebook notebook, BindingResult result,
|
||||
Model model) {
|
||||
if (result.hasErrors()) {
|
||||
notebook.setId(id);
|
||||
return "update-notebook";
|
||||
}
|
||||
|
||||
notebookRepository.save(notebook);
|
||||
model.addAttribute("notebooks", notebookRepository.findAll());
|
||||
return "index";
|
||||
}
|
||||
|
||||
@GetMapping("delete/{id}")
|
||||
public String deleteNote(@PathVariable("id") long id, Model model) {
|
||||
Notebook notebook = notebookRepository.findById(id)
|
||||
.orElseThrow(() -> new IllegalArgumentException("Invalid notebook Id:" + id));
|
||||
notebookRepository.delete(notebook);
|
||||
model.addAttribute("notebooks", notebookRepository.findAll());
|
||||
return "index";
|
||||
}
|
||||
}
|
@ -0,0 +1,67 @@
|
||||
package com.baiye.entity;
|
||||
|
||||
|
||||
import javax.persistence.Column;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.GeneratedValue;
|
||||
import javax.persistence.GenerationType;
|
||||
import javax.persistence.Id;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
@Entity
|
||||
public class Notebook {
|
||||
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.AUTO)
|
||||
private long id;
|
||||
|
||||
@NotBlank(message = "Name is mandatory")
|
||||
@Column(name = "name")
|
||||
private String name;
|
||||
|
||||
@NotBlank(message = "Email is mandatory")
|
||||
@Column(name = "email")
|
||||
private String email;
|
||||
|
||||
@Column(name = "phone_no")
|
||||
private long phoneNo;
|
||||
|
||||
public Notebook() {}
|
||||
|
||||
public Notebook(String name, String email) {
|
||||
this.name = name;
|
||||
this.email = email;
|
||||
}
|
||||
|
||||
public void setId(long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public void setEmail(String email) {
|
||||
this.email = email;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public String getEmail() {
|
||||
return email;
|
||||
}
|
||||
|
||||
public long getPhoneNo() {
|
||||
return phoneNo;
|
||||
}
|
||||
|
||||
public void setPhoneNo(long phoneNo) {
|
||||
this.phoneNo = phoneNo;
|
||||
}
|
||||
}
|
@ -0,0 +1,16 @@
|
||||
package com.baiye.repository;
|
||||
|
||||
|
||||
import com.baiye.entity.Notebook;
|
||||
import org.springframework.data.repository.CrudRepository;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
@Repository
|
||||
public interface NotebookRepository extends CrudRepository<Notebook, Long> {
|
||||
|
||||
List<Notebook> findByName(String name);
|
||||
|
||||
}
|
@ -0,0 +1,8 @@
|
||||
server:
|
||||
port: 8081
|
||||
|
||||
spring:
|
||||
application:
|
||||
name: dev-protocol-devops
|
||||
|
||||
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
@ -0,0 +1,63 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:th="http://www.thymeleaf.org">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<title>Add User</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="stylesheet"
|
||||
href="/css/bootstrap.min.css"
|
||||
integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO"
|
||||
crossorigin="anonymous">
|
||||
<link rel="stylesheet"
|
||||
href="/css/all.css"
|
||||
integrity="sha384-5sAR7xN1Nv6T6+dT2mhtzEpVJvfS3NScPQTrOxhwjIuvcA67KV2R5Jz6kr4abQsz"
|
||||
crossorigin="anonymous">
|
||||
<!-- <link rel="stylesheet" href="../css/shards.min.css"> -->
|
||||
</head>
|
||||
<body>
|
||||
<div class="container my-5">
|
||||
<h3> Add notebook</h3>
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<div class="col-md-10">
|
||||
<form action="#" th:action="@{/add}"
|
||||
th:object="${notebook}" method="post">
|
||||
<div class="row">
|
||||
<div class="form-group col-md-8">
|
||||
<label for="name" class="col-form-label">Name</label> <input
|
||||
type="text" th:field="*{name}" class="form-control" id="name"
|
||||
placeholder="Name"> <span
|
||||
th:if="${#fields.hasErrors('name')}" th:errors="*{name}"
|
||||
class="text-danger"></span>
|
||||
</div>
|
||||
<div class="form-group col-md-8">
|
||||
<label for="email" class="col-form-label">Email</label> <input
|
||||
type="text" th:field="*{email}" class="form-control" id="email"
|
||||
placeholder="Email"> <span
|
||||
th:if="${#fields.hasErrors('email')}" th:errors="*{email}"
|
||||
class="text-danger"></span>
|
||||
</div>
|
||||
|
||||
<div class="form-group col-md-8">
|
||||
<label for="phoneNo" class="col-form-label">Phone No</label> <input
|
||||
type="text" th:field="*{phoneNo}" class="form-control"
|
||||
id="phoneNo" placeholder="PhoneNo"> <span
|
||||
th:if="${#fields.hasErrors('phoneNo')}" th:errors="*{phoneNo}"
|
||||
class="text-danger"></span>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
<input type="submit" id="addNoteBtn" class="btn btn-primary" value="Add Note">
|
||||
</div>
|
||||
|
||||
<div class="form-group col-md-8"></div>
|
||||
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,61 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:th="http://www.thymeleaf.org">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<title>Users</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="stylesheet"
|
||||
href="/css/bootstrap.min.css"
|
||||
integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO"
|
||||
crossorigin="anonymous">
|
||||
<link rel="stylesheet"
|
||||
href="/css/all.css"
|
||||
integrity="sha384-5sAR7xN1Nv6T6+dT2mhtzEpVJvfS3NScPQTrOxhwjIuvcA67KV2R5Jz6kr4abQsz"
|
||||
crossorigin="anonymous">
|
||||
<!-- <link rel="stylesheet" href="../css/shards.min.css"> -->
|
||||
</head>
|
||||
<body>
|
||||
<div class="container my-2">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<div th:switch="${notebooks}" class="container my-5">
|
||||
<p class="my-5">
|
||||
<a href="/signup" id="signup" class="btn btn-primary"><i
|
||||
class="fas fa-user-plus ml-2"> Add notebook</i></a>
|
||||
</p>
|
||||
<div class="col-md-10">
|
||||
<h2 th:case="null">No notebook yet!</h2>
|
||||
<div th:case="*">
|
||||
<table class="table table-striped table-responsive-md">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th>Email</th>
|
||||
<th>Phone No</th>
|
||||
<th>Edit</th>
|
||||
<th>Delete</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr th:each="notebook : ${notebooks}">
|
||||
<td th:text="${notebook.name}"></td>
|
||||
<td th:text="${notebook.email}"></td>
|
||||
<td th:text="${notebook.phoneNo}"></td>
|
||||
<td><a th:href="@{/edit/{id}(id=${notebook.id})}"
|
||||
class="btn btn-primary"><i class="fas fa-user-edit ml-2"></i></a></td>
|
||||
<td><a
|
||||
th:href="@{/delete/{id}(id=${notebook.id})}"
|
||||
class="btn btn-primary"><i class="fas fa-user-times ml-2"></i></a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,60 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:th="http://www.thymeleaf.org">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<title>Update User</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="stylesheet"
|
||||
href="/css/bootstrap.min.css"
|
||||
integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO"
|
||||
crossorigin="anonymous">
|
||||
<link rel="stylesheet"
|
||||
href="/css/all.css"
|
||||
integrity="sha384-5sAR7xN1Nv6T6+dT2mhtzEpVJvfS3NScPQTrOxhwjIuvcA67KV2R5Jz6kr4abQsz"
|
||||
crossorigin="anonymous">
|
||||
</head>
|
||||
<body>
|
||||
<div class="container my-5">
|
||||
<h3> Update Note</h3>
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<div class="col-md-8">
|
||||
<form action="#"
|
||||
th:action="@{/update/{id}(id=${notebook.id})}"
|
||||
th:object="${notebook}" method="post">
|
||||
<div class="row">
|
||||
<div class="form-group col-md-6">
|
||||
<label for="name" class="col-form-label">Name</label> <input
|
||||
type="text" th:field="*{name}" class="form-control" id="name"
|
||||
placeholder="Name"> <span
|
||||
th:if="${#fields.hasErrors('name')}" th:errors="*{name}"
|
||||
class="text-danger"></span>
|
||||
</div>
|
||||
<div class="form-group col-md-8">
|
||||
<label for="email" class="col-form-label">Email</label> <input
|
||||
type="text" th:field="*{email}" class="form-control" id="email"
|
||||
placeholder="Email"> <span
|
||||
th:if="${#fields.hasErrors('email')}" th:errors="*{email}"
|
||||
class="text-danger"></span>
|
||||
</div>
|
||||
<div class="form-group col-md-8">
|
||||
<label for="phoneNo" class="col-form-label">Phone No</label> <input
|
||||
type="text" th:field="*{phoneNo}" class="form-control"
|
||||
id="phoneNo" placeholder="phoneNo"> <span
|
||||
th:if="${#fields.hasErrors('phoneNo')}" th:errors="phoneNo"
|
||||
class="text-danger"></span>
|
||||
</div>
|
||||
|
||||
<div class="form-group col-md-8">
|
||||
<input type="submit" class="btn btn-primary"
|
||||
value="Update Note">
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,46 @@
|
||||
### Example user template template
|
||||
### Example user template
|
||||
|
||||
# IntelliJ project files
|
||||
.idea
|
||||
*.iml
|
||||
out
|
||||
gen
|
||||
### Maven template
|
||||
target/
|
||||
pom.xml.tag
|
||||
pom.xml.releaseBackup
|
||||
pom.xml.versionsBackup
|
||||
pom.xml.next
|
||||
release.properties
|
||||
dependency-reduced-pom.xml
|
||||
buildNumber.properties
|
||||
.mvn/timing.properties
|
||||
# https://github.com/takari/maven-wrapper#usage-without-binary-jar
|
||||
.mvn/wrapper/maven-wrapper.jar
|
||||
|
||||
### Java template
|
||||
# Compiled class file
|
||||
*.class
|
||||
|
||||
# Log file
|
||||
*.log
|
||||
|
||||
# BlueJ files
|
||||
*.ctxt
|
||||
|
||||
# Mobile Tools for Java (J2ME)
|
||||
.mtj.tmp/
|
||||
|
||||
# Package Files #
|
||||
*.jar
|
||||
*.war
|
||||
*.nar
|
||||
*.ear
|
||||
*.zip
|
||||
*.tar.gz
|
||||
*.rar
|
||||
|
||||
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
|
||||
hs_err_pid*
|
||||
|
Binary file not shown.
After Width: | Height: | Size: 60 KiB |
Binary file not shown.
After Width: | Height: | Size: 65 KiB |
@ -0,0 +1,31 @@
|
||||
<?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">
|
||||
<parent>
|
||||
<artifactId>dev-protocol</artifactId>
|
||||
<groupId>org.example</groupId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<artifactId>dev-protocol-gateway</artifactId>
|
||||
|
||||
<properties>
|
||||
<maven.compiler.source>8</maven.compiler.source>
|
||||
<maven.compiler.target>8</maven.compiler.target>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-web</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.projectlombok</groupId>
|
||||
<artifactId>lombok</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
</project>
|
@ -0,0 +1,17 @@
|
||||
package com.baiye;
|
||||
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
|
||||
/**
|
||||
* 开发协议网关应用程序
|
||||
*
|
||||
* @author q
|
||||
* @date 2021/11/24
|
||||
*/
|
||||
@SpringBootApplication
|
||||
public class DevProtocolGatewayApplication {
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(DevProtocolGatewayApplication.class, args);
|
||||
}
|
||||
}
|
@ -0,0 +1,12 @@
|
||||
package com.baiye.notify;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
|
||||
public interface IService {
|
||||
|
||||
Map<String, INotifyService> getNotifyServiceMap();
|
||||
|
||||
Integer handle(String body);
|
||||
|
||||
}
|
@ -0,0 +1,30 @@
|
||||
package com.baiye.notify;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/**
|
||||
* 通知控制器
|
||||
*
|
||||
* 异步通知统一入口
|
||||
*
|
||||
* @author q
|
||||
* @date 2021/11/24
|
||||
*/
|
||||
@AllArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping(value = "/notify")
|
||||
public class NotifyController {
|
||||
|
||||
private IService service;
|
||||
|
||||
@PostMapping(value = "/receive")
|
||||
public String receive(@RequestBody String body) {
|
||||
//处理通知
|
||||
Integer status = service.handle(body);
|
||||
return "success";
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue