提交 c841611b authored 作者: wyl's avatar wyl

merged

...@@ -79,6 +79,16 @@ ...@@ -79,6 +79,16 @@
<artifactId>junit</artifactId> <artifactId>junit</artifactId>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-annotations</artifactId>
<version>1.5.13</version>
</dependency>
<dependency>
<groupId>com.github.wenhao</groupId>
<artifactId>jpa-spec</artifactId>
<version>3.2.1</version>
</dependency>
</dependencies> </dependencies>
<build> <build>
......
package com.zjty.adaptationmaster.adaptor.controller;
import com.zjty.adaptationmaster.adaptor.entity.Assembly;
import com.zjty.adaptationmaster.adaptor.service.AssemblyService;
import com.zjty.adaptationmaster.base.response.ServerResponse;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
/**
* <h4>Description : adaptation-master</h4>
*
* @author : M@tr!x [xhyrzldf@foxmail.com]
* @Date : 2019-12-09 11:01
*/
@RestController
@RequestMapping("/assembly")
@Api(tags = "组件管理")
public class AssemblyController {
private final AssemblyService assemblyService;
@Autowired
public AssemblyController(AssemblyService assemblyService) {
this.assemblyService = assemblyService;
}
@PutMapping
public ServerResponse saveAssembly(@RequestBody Assembly assembly){
return assemblyService.saveAssembly(assembly);
}
@DeleteMapping("/{id}")
public ServerResponse deleteAssembly(@PathVariable("id") Integer id){
return assemblyService.deleteAssembly(id);
}
@PostMapping("/{page}")
public ServerResponse findAssembly(@PathVariable("page") Integer page ,@RequestBody Assembly assembly){
return assemblyService.findAssembly(page,assembly);
}
}
package com.zjty.adaptationmaster.adaptor.controller;
import com.zjty.adaptationmaster.adaptor.entity.Dependency;
import com.zjty.adaptationmaster.adaptor.service.DependencyService;
import com.zjty.adaptationmaster.base.response.ServerResponse;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartHttpServletRequest;
/**
* <h4>Description : adaptation-master</h4>
*
* @author : M@tr!x [xhyrzldf@foxmail.com]
* @Date : 2019-12-09 11:02
*/
@RestController
@RequestMapping("/dependency")
@Api(tags = "依赖管理")
public class DependencyController {
private final DependencyService dependencyService;
@Autowired
public DependencyController(DependencyService dependencyService) {
this.dependencyService = dependencyService;
}
@PostMapping
public ServerResponse saveDependency(@RequestBody Dependency dependency , MultipartHttpServletRequest request){
return dependencyService.saveDependency(dependency,request);
}
@DeleteMapping("/{id}")
public ServerResponse deleteDependency(@PathVariable("id") Integer id){
return dependencyService.deleteDependency(id);
}
@PostMapping("/query")
public ServerResponse findDependency(@RequestBody Dependency dependency){
return dependencyService.findDependency(dependency);
}
}
package com.zjty.adaptationmaster.adaptor.controller;
import com.zjty.adaptationmaster.adaptor.entity.MiddlewareManagement;
import com.zjty.adaptationmaster.adaptor.service.MiddlewareManagementService;
import com.zjty.adaptationmaster.base.response.ServerResponse;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
/**
* <h4>Description : adaptation-master</h4>
*
* @author : M@tr!x [xhyrzldf@foxmail.com]
* @Date : 2019-12-09 11:03
*/
@RestController
@RequestMapping("/middleware")
@Api(tags = "中间件管理")
public class MiddlewareController {
private final MiddlewareManagementService middlewareManagementService;
@Autowired
public MiddlewareController(MiddlewareManagementService middlewareManagementService) {
this.middlewareManagementService = middlewareManagementService;
}
@PutMapping
public ServerResponse saveMiddleware(@RequestBody MiddlewareManagement middlewareManagement){
return middlewareManagementService.saveMiddleware(middlewareManagement);
}
@DeleteMapping("/{id}")
public ServerResponse deleteMiddleware(@PathVariable("id") Integer id){
return middlewareManagementService.deleteMiddleware(id);
}
@PostMapping("/query")
public ServerResponse findMiddleware(@RequestBody MiddlewareManagement middlewareManagement){
return middlewareManagementService.findMiddleware(middlewareManagement);
}
}
package com.zjty.adaptationmaster.adaptor.controller;
import com.zjty.adaptationmaster.adaptor.entity.Project;
import com.zjty.adaptationmaster.adaptor.service.ProjectService;
import com.zjty.adaptationmaster.base.response.ServerResponse;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
/**
* <h4>Description : adaptation-master</h4>
*
* @author : M@tr!x [xhyrzldf@foxmail.com]
* @Date : 2019-12-09 11:03
*/
@RestController
@RequestMapping("/project")
@Api(tags = "项目管理")
public class ProjectController {
private final ProjectService projectService;
@Autowired
public ProjectController(ProjectService projectService) {
this.projectService = projectService;
}
@PutMapping
public ServerResponse saveProject(@RequestBody Project project){
return projectService.saveProject(project);
}
@DeleteMapping("/{id}")
public ServerResponse deleteProject(@PathVariable("id") Integer id){
return projectService.deleteProject(id);
}
@PostMapping("/query/{page}")
public ServerResponse findProject(@PathVariable("page") Integer page , @RequestBody Project project){
return projectService.findProject(page,project);
}
}
package com.zjty.adaptationmaster.adaptor.controller;
import com.zjty.adaptationmaster.adaptor.entity.Rule;
import com.zjty.adaptationmaster.adaptor.entity.RuleSet;
import com.zjty.adaptationmaster.adaptor.service.RuleService;
import com.zjty.adaptationmaster.base.response.ServerResponse;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
/**
* <h4>Description : adaptation-master</h4>
*
* @author : M@tr!x [xhyrzldf@foxmail.com]
* @Date : 2019-12-09 11:03
*/
@RestController
@RequestMapping("/rule")
@Api(tags = "规则及规则集管理")
public class RuleController {
private final RuleService ruleService;
@Autowired
public RuleController(RuleService ruleService) {
this.ruleService = ruleService;
}
@PutMapping("/ruleSet")
public ServerResponse addRuleSet(@RequestBody RuleSet ruleSet){
return ruleService.addRuleSet(ruleSet);
}
@DeleteMapping("/ruleSet/{id}")
public ServerResponse deleteRuleSet(@PathVariable("id") Integer id){
return ruleService.deleteRuleSet(id);
}
@PostMapping("/ruleSet/query")
public ServerResponse findRuleSet(@RequestBody RuleSet ruleSet){
return ruleService.findRuleSet(ruleSet);
}
// @PutMapping("/toSet/{ruleSetId}")
// public ServerResponse addRuleToSet(@RequestBody Rule rule ,@PathVariable("ruleSetId") Integer ruleSetId){
// return ruleService.addRuleToSet(rule,ruleSetId);
// }
//
//
// @PutMapping("/toPro/{projectId}")
// public ServerResponse addRuleToProject(@RequestBody Rule rule ,@PathVariable("projectId") Integer projectId){
// return ruleService.addRuleToProject(rule,projectId);
// }
@DeleteMapping("/{id}")
public ServerResponse deleteRule(@PathVariable("id") Integer id){
return ruleService.deleteRule(id);
}
}
package com.zjty.adaptationmaster.adaptor.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.*;
import java.util.Date;
/**
* <h4>Description : adaptation-master</h4>
*
* @author : M@tr!x [xhyrzldf@foxmail.com]
* @Date : 2019-12-07 10:43
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
public class Assembly {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String name;//组件名称
private String des;//组件描述
private String callingMode;//调用方式
@Temporal(TemporalType.TIMESTAMP)
private Date startTime;//上传时间
private Integer status = 1;//状态(0:删除 1:未删除)
}
package com.zjty.adaptationmaster.adaptor.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.*;
import java.time.DateTimeException;
import java.util.Date;
/**
* <h4>Description : adaptation-master</h4>
*
* @author : M@tr!x [xhyrzldf@foxmail.com]
* @Date : 2019-12-07 13:01
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
public class Dependency {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String name;//依赖名称
private String dependencyUrl;//依赖路径
private String des;//备注
@Temporal(TemporalType.TIMESTAMP)
private Date startTime;//上传时间
private String type;//依赖类型(依赖包或依赖)
private Integer status = 1;//状态(0:删除 1:未删除)
}
package com.zjty.adaptationmaster.adaptor.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* <h4>Description : adaptation-master</h4>
*
* @author : M@tr!x [xhyrzldf@foxmail.com]
* @Date : 2019-12-07 13:41
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ListResponse<T> {
private long count;
private T data;
}
package com.zjty.adaptationmaster.adaptor.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.*;
import java.util.Date;
/**
* <h4>Description : adaptation-master</h4>
*
* @author : M@tr!x [xhyrzldf@foxmail.com]
* @Date : 2019-12-07 10:39
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
public class MiddlewareManagement {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String name;//中间件名称
private String address;//中间件安装路径
private String ip;//中间件ip
private String port;//端口号
@Temporal(TemporalType.TIMESTAMP)
private Date startTime;//上传时间
private Integer status = 1;//状态(0:删除 1:未删除)
}
package com.zjty.adaptationmaster.adaptor.entity;
import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.*;
import java.util.Date;
import java.util.List;
/**
* <h4>Description : 项目类及需要改造的项目的基本信息</h4>
*
* @author : czq
* @Date : 2019-12-06 9:52
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
public class Project {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String projectName;//项目名称
private String language;//语言
private String framework;//架构
private String isSeparate;//前后端是否分离
private String databaseType;//数据库类型
private String codeUrl;//当前源码源码路径
private Integer status = 1;//状态(0:删除 1:未删除)
@Temporal(TemporalType.TIMESTAMP)
private Date startTime = new Date();//开始时间
@Temporal(TemporalType.TIMESTAMP)
private Date updateTime;//更新时间
@OneToMany(mappedBy = "project", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
private List<Rule> rules;//自定义的规则
@ManyToMany
@JoinTable(name = "project_ruleSet",
joinColumns = @JoinColumn(name = "p_id",referencedColumnName = "id"),
inverseJoinColumns = @JoinColumn(name = "r_id", referencedColumnName = "id"))
private List<RuleSet> ruleSets;//规则集
}
package com.zjty.adaptationmaster.adaptor.entity; package com.zjty.adaptationmaster.adaptor.entity;
import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import javax.persistence.Entity; import javax.persistence.*;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity @Entity
@Data @Data
...@@ -17,8 +16,19 @@ public class Rule { ...@@ -17,8 +16,19 @@ public class Rule {
@Id @Id
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)
private int id; private int id;
private int ruleSetId; @JsonIgnore
private int projectId; @ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JSONField(serialize = false)
@JoinColumn(name = "projectId")
private Project project;//所属的项目
@JsonIgnore
@ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JSONField(serialize = false)
@JoinColumn(name = "ruleSetId")
private RuleSet ruleSet;//所属的规则集
private Integer status = 1;//状态(0:删除 1:未删除)
private MatchType pathMatchType;//文件匹配方式 路径/文件名/后缀 private MatchType pathMatchType;//文件匹配方式 路径/文件名/后缀
private String path;//文件路径匹配 private String path;//文件路径匹配
......
package com.zjty.adaptationmaster.adaptor.entity; package com.zjty.adaptationmaster.adaptor.entity;
import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import javax.persistence.Entity; import javax.persistence.*;
import javax.persistence.GeneratedValue; import java.util.List;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity /**
* <h4>Description : adaptation-master</h4>
*
* @author : M@tr!x [xhyrzldf@foxmail.com]
* @Date : 2019-12-07 16:35
*/
@Data @Data
@NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor
@Entity
public class RuleSet { public class RuleSet {
@Id @Id
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)
private int id; private Integer id;
private String name;
private String des; private String name;//规则集名称
private String des;//规则集描述
private Integer status = 1;//状态(0:删除 1:未删除)
@JsonIgnore
@ManyToMany(mappedBy = "ruleSets")
private List<Project> projects;//所属项目
@OneToMany(mappedBy = "ruleSet", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
private List<Rule> ruleList;//规则
} }
package com.zjty.adaptationmaster.adaptor.repository;
import com.zjty.adaptationmaster.adaptor.entity.Assembly;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
/**
* <h4>Description : adaptation-master</h4>
*
* @author : M@tr!x [xhyrzldf@foxmail.com]
* @Date : 2019-12-07 10:54
*/
public interface AssemblyDao extends JpaRepository<Assembly, Integer>,JpaSpecificationExecutor {
}
package com.zjty.adaptationmaster.adaptor.repository;
import com.zjty.adaptationmaster.adaptor.entity.Dependency;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
/**
* <h4>Description : adaptation-master</h4>
*
* @author : M@tr!x [xhyrzldf@foxmail.com]
* @Date : 2019-12-07 13:05
*/
public interface DependencyDao extends JpaRepository<Dependency, Integer>,JpaSpecificationExecutor {
}
package com.zjty.adaptationmaster.adaptor.repository;
import com.zjty.adaptationmaster.adaptor.entity.MiddlewareManagement;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
/**
* <h4>Description : adaptation-master</h4>
*
* @author : M@tr!x [xhyrzldf@foxmail.com]
* @Date : 2019-12-07 10:55
*/
public interface MiddlewareManagementDao extends JpaRepository<MiddlewareManagement, Integer>,JpaSpecificationExecutor {
}
package com.zjty.adaptationmaster.adaptor.repository;
import com.zjty.adaptationmaster.adaptor.entity.Project;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
/**
* <h4>Description : adaptation-master</h4>
*
* @author : M@tr!x [xhyrzldf@foxmail.com]
* @Date : 2019-12-07 10:55
*/
public interface ProjectDao extends JpaRepository<Project, Integer>,JpaSpecificationExecutor {
}
package com.zjty.adaptationmaster.adaptor.repository;
import com.zjty.adaptationmaster.adaptor.entity.Rule;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
/**
* <h4>Description : adaptation-master</h4>
*
* @author : M@tr!x [xhyrzldf@foxmail.com]
* @Date : 2019-12-09 9:30
*/
public interface RuleDao extends JpaRepository<Rule, Integer>,JpaSpecificationExecutor {
}
package com.zjty.adaptationmaster.adaptor.repository;
import com.zjty.adaptationmaster.adaptor.entity.RuleSet;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
/**
* <h4>Description : adaptation-master</h4>
*
* @author : M@tr!x [xhyrzldf@foxmail.com]
* @Date : 2019-12-09 9:31
*/
public interface RuleSetDao extends JpaRepository<RuleSet, Integer>,JpaSpecificationExecutor {
}
package com.zjty.adaptationmaster.adaptor.service;
import com.zjty.adaptationmaster.adaptor.entity.Assembly;
import com.zjty.adaptationmaster.base.response.ServerResponse;
/**
* <h4>Description : 组件管理</h4>
*
* @author : M@tr!x [xhyrzldf@foxmail.com]
* @Date : 2019-12-07 11:04
*/
public interface AssemblyService {
ServerResponse saveAssembly(Assembly assembly);//保存组件
ServerResponse deleteAssembly(Integer id);//删除组件
ServerResponse findAssembly(Integer page , Assembly assembly);//查询组件
}
package com.zjty.adaptationmaster.adaptor.service;
import com.zjty.adaptationmaster.adaptor.entity.Dependency;
import com.zjty.adaptationmaster.base.response.ServerResponse;
import org.springframework.web.multipart.MultipartHttpServletRequest;
/**
* <h4>Description : 依赖管理</h4>
*
* @author : M@tr!x [xhyrzldf@foxmail.com]
* @Date : 2019-12-07 13:05
*/
public interface DependencyService {
ServerResponse saveDependency(Dependency dependency , MultipartHttpServletRequest request);//保存依赖
ServerResponse deleteDependency(Integer id);//删除依赖
ServerResponse findDependency(Dependency dependency);//查询依赖
}
package com.zjty.adaptationmaster.adaptor.service.Impl;
import com.alibaba.fastjson.JSON;
import com.github.wenhao.jpa.Specifications;
import com.zjty.adaptationmaster.adaptor.entity.Assembly;
import com.zjty.adaptationmaster.adaptor.entity.ListResponse;
import com.zjty.adaptationmaster.adaptor.repository.AssemblyDao;
import com.zjty.adaptationmaster.adaptor.service.AssemblyService;
import com.zjty.adaptationmaster.base.response.ServerResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
* <h4>Description : 组件</h4>
* @author : czq
* @Date : 2019-12-07 11:05
*/
@Service
public class AssemblyServiceImpl implements AssemblyService{
private final AssemblyDao assemblyDao;
@Autowired
public AssemblyServiceImpl(AssemblyDao assemblyDao) {
this.assemblyDao = assemblyDao;
}
/**
* 保存组件信息
* @param assembly 组件信息
* @return 返回结果
*/
@Override
public ServerResponse saveAssembly(Assembly assembly) {
Assembly save = assemblyDao.save(assembly);
return ServerResponse.success(JSON.toJSONString(save));
}
@Override
@Transactional
public ServerResponse deleteAssembly(Integer id) {
Assembly assembly = assemblyDao.getOne(id);
assembly.setStatus(0);
return ServerResponse.success("删除成功");
}
@Override
public ServerResponse findAssembly(Integer page , Assembly assembly) {
Specification<Assembly> spec = Specifications.<Assembly>and()
.like(assembly.getName()!=null,"name","%"+assembly.getName()+"%")
.eq("status",1)
.build();
Pageable pageable = /*new */PageRequest.of(page-1, 10, Sort.Direction.DESC, "id");
List<Assembly> assemblyList = assemblyDao.findAll(spec,pageable).getContent();
return ServerResponse.success(new ListResponse<>(assemblyDao.count(spec),assemblyList));
}
}
package com.zjty.adaptationmaster.adaptor.service.Impl;
import com.github.wenhao.jpa.Specifications;
import com.zjty.adaptationmaster.adaptor.entity.Dependency;
import com.zjty.adaptationmaster.adaptor.repository.DependencyDao;
import com.zjty.adaptationmaster.adaptor.service.DependencyService;
import com.zjty.adaptationmaster.base.enums.Const;
import com.zjty.adaptationmaster.base.response.ServerResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Date;
import java.util.List;
/**
* <h4>Description : 依赖管理</h4>
*
* @author : czq
* @Date : 2019-12-07 13:06
*/
@Service
public class DependencyServiceImpl implements DependencyService {
private final DependencyDao dependencyDao;
@Autowired
public DependencyServiceImpl(DependencyDao dependencyDao) {
this.dependencyDao = dependencyDao;
}
@Override
public ServerResponse saveDependency(Dependency dependency, MultipartHttpServletRequest request) {
//上传的依赖文件和依赖包
MultipartFile dependencyFile = request.getFile("dependency");
if (!dependencyFile.isEmpty()) {
//依赖名称
String photo = dependencyFile.getName();
dependency.setName(photo);
dependency.setDependencyUrl("/uploads/"+photo);
dependency.setStartTime(new Date());
try {
InputStream inputStream = dependencyFile.getInputStream();
Files.copy(inputStream, Paths.get(Const.UPLOAD_LOCATION, photo));
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
Dependency save = dependencyDao.save(dependency);
return ServerResponse.success("上传成功",save);
}
@Override
@Transactional
public ServerResponse deleteDependency(Integer id) {
Dependency dependency = dependencyDao.getOne(id);
dependency.setStatus(0);
return ServerResponse.success("删除成功");
}
@Override
public ServerResponse findDependency(Dependency dependency) {
Specification<Dependency> spec = Specifications.<Dependency>and()
.eq(dependency.getType()!=null,"type",dependency.getType())
.eq("status",1)
.build();
List<Dependency> dependencies = dependencyDao.findAll(spec);
return ServerResponse.success(dependencies);
}
}
package com.zjty.adaptationmaster.adaptor.service.Impl;
import com.github.wenhao.jpa.Specifications;
import com.zjty.adaptationmaster.adaptor.entity.MiddlewareManagement;
import com.zjty.adaptationmaster.adaptor.repository.MiddlewareManagementDao;
import com.zjty.adaptationmaster.adaptor.service.MiddlewareManagementService;
import com.zjty.adaptationmaster.base.response.ServerResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
* <h4>Description : 中间件管理</h4>
*
* @author : M@tr!x [xhyrzldf@foxmail.com]
* @Date : 2019-12-07 11:06
*/
@Service
public class MiddlewareManagementServiceImpl implements MiddlewareManagementService {
private final MiddlewareManagementDao middlewareManagementDao;
@Autowired
public MiddlewareManagementServiceImpl(MiddlewareManagementDao middlewareManagementDao) {
this.middlewareManagementDao = middlewareManagementDao;
}
@Override
public ServerResponse saveMiddleware(MiddlewareManagement middlewareManagement) {
MiddlewareManagement save = middlewareManagementDao.save(middlewareManagement);
return ServerResponse.success(save);
}
@Override
@Transactional
public ServerResponse deleteMiddleware(Integer id) {
MiddlewareManagement middlewareManagement = middlewareManagementDao.getOne(id);
middlewareManagement.setStatus(0);
return ServerResponse.success("删除成功");
}
@Override
public ServerResponse findMiddleware(MiddlewareManagement middlewareManagement) {
Specification<MiddlewareManagement> spec = Specifications.<MiddlewareManagement>and()
.eq("status",1)
.build();
List<MiddlewareManagement> all = middlewareManagementDao.findAll(spec);
return ServerResponse.success(all);
}
}
package com.zjty.adaptationmaster.adaptor.service.Impl;
import com.github.wenhao.jpa.Specifications;
import com.zjty.adaptationmaster.adaptor.entity.ListResponse;
import com.zjty.adaptationmaster.adaptor.entity.Project;
import com.zjty.adaptationmaster.adaptor.entity.Rule;
import com.zjty.adaptationmaster.adaptor.entity.RuleSet;
import com.zjty.adaptationmaster.adaptor.repository.ProjectDao;
import com.zjty.adaptationmaster.adaptor.service.ProjectService;
import com.zjty.adaptationmaster.base.response.ServerResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.List;
import static java.util.stream.Collectors.toList;
/**
* <h4>Description : adaptation-master</h4>
*
* @author : M@tr!x [xhyrzldf@foxmail.com]
* @Date : 2019-12-07 11:06
*/
@Service
public class ProjectServiceImpl implements ProjectService {
private final ProjectDao projectDao;
@Autowired
public ProjectServiceImpl(ProjectDao projectDao) {
this.projectDao = projectDao;
}
@Override
public ServerResponse saveProject(Project project) {
if(project.getId() == null){
project.setUpdateTime(new Date());
}
Project save = projectDao.save(project);
return ServerResponse.success("项目创建成功",save);
}
@Override
@Transactional
public ServerResponse deleteProject(Integer id) {
Project project = projectDao.getOne(id);
project.setStatus(0);
project.setUpdateTime(new Date());
return ServerResponse.success("删除成功");
}
@Override
public ServerResponse findProject(Integer page,Project project) {
Specification<Project> spec = Specifications.<Project>and()
.like(project.getProjectName()!=null,"projectName","%"+project.getProjectName()+"%")
.eq("status",1)
.build();
Pageable pageable = PageRequest.of(page-1, 10, Sort.Direction.DESC, "id");
List<Project> projects = projectDao.findAll(spec,pageable).getContent();
for (Project pro:projects) {
//过滤删除的规则集
List<RuleSet> ruleSets = pro.getRuleSets();
List<RuleSet> sets = ruleSets.stream().filter(ruleSet -> ruleSet.getStatus() != 0).collect(toList());
for (RuleSet set :sets) {
List<Rule> rs = set.getRuleList().stream().filter(rule -> rule.getStatus() != 0).collect(toList());
set.setRuleList(rs);
}
pro.setRuleSets(sets);
//过滤删除的自定义规则
List<Rule> rules = pro.getRules();
List<Rule> collect = rules.stream().filter(rule -> rule.getStatus() != 0).collect(toList());
pro.setRules(collect);
}
return ServerResponse.success(new ListResponse<>(projectDao.count(spec),projects));
}
}
package com.zjty.adaptationmaster.adaptor.service.Impl;
import com.github.wenhao.jpa.Specifications;
import com.zjty.adaptationmaster.adaptor.entity.Project;
import com.zjty.adaptationmaster.adaptor.entity.Rule;
import com.zjty.adaptationmaster.adaptor.entity.RuleSet;
import com.zjty.adaptationmaster.adaptor.repository.ProjectDao;
import com.zjty.adaptationmaster.adaptor.repository.RuleDao;
import com.zjty.adaptationmaster.adaptor.repository.RuleSetDao;
import com.zjty.adaptationmaster.adaptor.service.RuleService;
import com.zjty.adaptationmaster.base.response.ServerResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import static java.util.stream.Collectors.toList;
/**
* <h4>Description : adaptation-master</h4>
*
* @author : M@tr!x [xhyrzldf@foxmail.com]
* @Date : 2019-12-09 9:29
*/
@Service
public class RuleServiceImpl implements RuleService{
private final RuleSetDao ruleSetDao;
private final RuleDao ruleDao;
private final ProjectDao projectDao;
@Autowired
public RuleServiceImpl(RuleSetDao ruleSetDao, RuleDao ruleDao, ProjectDao projectDao) {
this.ruleSetDao = ruleSetDao;
this.ruleDao = ruleDao;
this.projectDao = projectDao;
}
@Override
public ServerResponse addRuleSet(RuleSet ruleSet) {
RuleSet save = ruleSetDao.save(ruleSet);
return ServerResponse.success(save);
}
@Override
@Transactional
public ServerResponse deleteRuleSet(Integer id) {
RuleSet ruleSet = ruleSetDao.getOne(id);
ruleSet.setStatus(0);
return ServerResponse.success("删除规则集"+id);
}
@Override
public ServerResponse findRuleSet(RuleSet ruleSet) {
Specification<RuleSet> spec = Specifications.<RuleSet>and()
.eq("status",1)
.build();
List<RuleSet> ruleSetList = ruleSetDao.findAll(spec);
for (RuleSet rules:ruleSetList) {
List<Rule> ruleList = rules.getRuleList().stream()
.filter(rule -> rule.getStatus() != 0)
.collect(toList());
rules.setRuleList(ruleList);
}
return ServerResponse.success(ruleSetList);
}
// @Override
// public ServerResponse addRuleToSet(Rule rule, Integer ruleSetId) {
// RuleSet ruleSet = ruleSetDao.findOne(ruleSetId);
// rule.setRuleSet(ruleSet);
// ruleDao.save(rule);
// return ServerResponse.success("保存到规则集成功");
// }
//
// @Override
// public ServerResponse addRuleToProject(Rule rule, Integer projectId) {
// Project project = projectDao.findOne(projectId);
// rule.setProject(project);
// ruleDao.save(rule);
// return ServerResponse.success("项目自定义规则成功");
// }
@Override
@Transactional
public ServerResponse deleteRule(Integer id) {
Rule rule = ruleDao.getOne(id);
rule.setStatus(0);
return ServerResponse.success("删除成功");
}
}
package com.zjty.adaptationmaster.adaptor.service;
import com.zjty.adaptationmaster.adaptor.entity.MiddlewareManagement;
import com.zjty.adaptationmaster.base.response.ServerResponse;
/**
* <h4>Description : 中间件管理</h4>
*
* @author : czq
* @Date : 2019-12-07 11:03
*/
public interface MiddlewareManagementService {
ServerResponse saveMiddleware(MiddlewareManagement middlewareManagement);//增加中间件
ServerResponse deleteMiddleware(Integer id);//删除中间件
ServerResponse findMiddleware(MiddlewareManagement middlewareManagement);//条件查询
}
package com.zjty.adaptationmaster.adaptor.service;
import com.zjty.adaptationmaster.adaptor.entity.Project;
import com.zjty.adaptationmaster.base.response.ServerResponse;
/**
* <h4>Description : adaptation-master</h4>
*
* @author : M@tr!x [xhyrzldf@foxmail.com]
* @Date : 2019-12-07 11:03
*/
public interface ProjectService {
ServerResponse saveProject(Project project);//保存项目
ServerResponse deleteProject(Integer id);//删除项目
ServerResponse findProject(Integer page , Project project);//查询项目
}
package com.zjty.adaptationmaster.adaptor.service;
import com.zjty.adaptationmaster.adaptor.entity.Rule;
import com.zjty.adaptationmaster.adaptor.entity.RuleSet;
import com.zjty.adaptationmaster.base.response.ServerResponse;
/**
* <h4>Description : adaptation-master</h4>
*
* @author : M@tr!x [xhyrzldf@foxmail.com]
* @Date : 2019-12-09 9:28
*/
public interface RuleService {
/**
* 添加规则集
* @param ruleSet 规则集信息
* @return 添加成功
*/
ServerResponse addRuleSet(RuleSet ruleSet);
/**
* 删除规则集,逻辑删除
* @param id 规则集id
* @return 删除成功
*/
ServerResponse deleteRuleSet(Integer id);
/**
* 查询规则集,查询全部,无需分页
* @param ruleSet 查询条件
* @return 规则集集合
*/
ServerResponse findRuleSet(RuleSet ruleSet);
// /**
// * 添加规则到规则集
// * @param rule 规则信息
// * @param ruleSetId 规则集id
// * @return 返回成功
// */
// ServerResponse addRuleToSet(Rule rule , Integer ruleSetId);
//
// /**
// * 添加规则到项目,即自定义规则
// * @param rule 规则内容
// * @param projectId 项目id
// * @return 返回成功
// */
// ServerResponse addRuleToProject(Rule rule , Integer projectId);
/**
* 删除规则,逻辑删除
* @param id 规则id
* @return 删除成功
*/
ServerResponse deleteRule(Integer id);
}
package com.zjty.adaptationmaster.base.enums;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
/**
* Description : 常量
*
* @Date : 2017/12/16 0:00
*
* @author : M@tr!x [xhyrzldf@foxmail.com]
*/
@SuppressWarnings("unused")
@Component
public class Const {
/**
* 日志对象
*/
private static final Logger logger = LoggerFactory.getLogger(Const.class);
/** 上传文件地址 */
public static final String UPLOAD_LOCATION = "/root/projects/bservice/uploads/";
// System.getProperty("user.dir") + "\\src\\main\\resources\\uploads\\";
/** 返回值样例常量,用于swagger
* 页面的example显示 */
public interface ResponseExample {
String SERVER_RESPONSE_DATA_EXAMPLE =
"[{'name' : '设备1号', 'id' : 'K001002'},{'name' : '设备2号', 'id' : 'K003004'}]";
}
}
package com.zjty.adaptationmaster.base.response;
import com.alibaba.fastjson.annotation.JSONField;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* Description : file-server
* Date : 2018/1/9 16:04
*
* @author : M@tr!x [xhyrzldf@foxmail.com]
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class FileServerResponse<T> {
/**
* 错误码
*/
private Integer code;
/**
* 提示信息
*/
@JSONField(ordinal = 2)
private String msg;
/**
* 具体的内容
*/
@JSONField(ordinal = 3)
private T data;
}
package com.zjty.adaptationmaster.base.response;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* <p>Description : 异常结果枚举类,用于统一异常状态码与相关描述信息
* @Date : 2017/12/13 0:51
* @author : M@tr!x [xhyrzldf@foxmail.com]
*/
@AllArgsConstructor
@Getter
public enum ResponseCode {
/**
* 服务器成功返回用户请求的数据
*/
OK(200, "[GET]:服务器成功返回用户请求的数据,返回资源对象"),
/**
* 用户新建或修改数据成功
*/
CREATED(201, "[POST/PUT/PATCH]:用户新建或修改数据成功,返回新生成或修改的资源对象"),
/**
* 表示一个请求已经进入后台排队(异步任务)
*/
ACCEPTED(202, "[*]:表示一个请求已经进入后台排队(异步任务)"),
/**
* 用户上传文件成功
*/
UPLOADED(203, "[POST]文件上传成功"),
/**
* 用户删除数据成功
*/
NO_CONTENT(204, " [DELETE]:用户删除数据成功"),
/**
* 用户发出的请求有错误,服务器没有进行新建或修改数据的操作
*/
INVALID_REQUEST(400, "[POST/PUT/PATCH]:用户发出的请求有错误,服务器没有进行新建或修改数据的操作"),
/**
* 表示用户没有权限(令牌、用户名、密码错误)
*/
UNAUTHORIZED(401, " [*]:表示用户没有权限(令牌、用户名、密码错误)"),
/**
* 表示用户登录超时
*/
LOGINOUTTIME(402, " [*]:表示用户登录超时"),
/**
* 表示用户得到授权(与401错误相对),但是访问是被禁止的
*/
FORBIDDEN(403, " [*] 表示用户得到授权(与401错误相对),但是访问是被禁止的"),
/**
* 用户发出的请求针对的是不存在的记录,服务器没有进行操作,该操作是幂等的
*/
NOT_FOUND(404, " [*]:用户发出的请求针对的是不存在的记录,服务器没有进行操作"),
/**
* 非法参数,请求中附带的参数不符合要求规范
*/
ILLEGAL_PARAMETER(405, "[*]:非法参数,请求中附带的参数不符合要求规范"),
/**
* 用户请求的格式不可得(比如用户请求JSON格式,但是只有XML格式)
*/
NOT_ACCEPTABLE(406, " [GET]:用户请求的格式不可得(比如用户请求JSON格式,但是只有XML格式)"),
/**
* 用户的参数不得为空
*/
NOT_NULL_PARAMETER(408, "传递的参数不能为空"),
/**
* 用户请求的资源被永久删除,且不会再得到的
*/
GONE(413, "[GET]:用户请求的资源被永久删除,且不会再得到的"),
/**
* [PUT,PATCH,POST,DELETE]:操作没有成功,并没有数据发生变化
*/
NO_CHANGED(414, "[PUT,PATCH,POST,DELETE]:操作没有成功,并没有数据发生变化"),
/**
* 创建一个对象时,发生一个验证错误
*/
UNPROCESSABLE_ENTITY(422, "[POST/PUT/PATCH] 当创建一个对象时,发生一个验证错误"),
/**
* 服务器发生错误
*/
INTERNAL_SERVER_ERROR(500, "服务器发生错误");
/**
* 结果代码编号
*/
private Integer code;
/**
* 结果信息
*/
private String msg;
}
package com.zjty.adaptationmaster.base.response;
import com.alibaba.fastjson.annotation.JSONField;
import com.zjty.adaptationmaster.utils.HttpClientUtil;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import java.util.Optional;
import static com.zjty.adaptationmaster.base.enums.Const.ResponseExample.SERVER_RESPONSE_DATA_EXAMPLE;
import static com.zjty.adaptationmaster.base.response.ResponseCode.*;
/**
* Description : 结果类,用于统一返回格式 对外提供关于响应结果的很多便利的静态方法
*
* @author : M@tr!x [xhyrzldf@foxmail.com]
* @Date : 2017/12/13 0:05
*/
@SuppressWarnings({"WeakerAccess", "unused"})
@Getter
@ApiModel(value = "服务器返回体")
public class ServerResponse<T> {
/**
* 错误码
*/
@ApiModelProperty(value = "返回码", example = "100")
@JSONField(ordinal = 1)
private Integer code;
/**
* 提示信息
*/
@ApiModelProperty(value = "信息", example = "操作成功")
@JSONField(ordinal = 2)
private String msg;
/**
* 具体的内容
*/
@ApiModelProperty(value = "返回数据", example = SERVER_RESPONSE_DATA_EXAMPLE)
@JSONField(ordinal = 3)
private T data;
/* 以下为返回成功响应结果的各类重载静态方法 */
public static <T> ServerResponse<T> success() {
return new ServerResponse<>(OK.getCode(), OK.getMsg());
}
public static <T> ServerResponse<T> success(T data) {
return new ServerResponse<>(OK.getCode(), OK.getMsg(), data);
}
public static <T> ServerResponse<T> success(String msg, T data) {
return new ServerResponse<>(OK.getCode(), msg, data);
}
public static <T> ServerResponse<T> saveSuccess(T data) {
return new ServerResponse<>(CREATED.getCode(), CREATED.getMsg(), data);
}
public static <T> ServerResponse<T> deleteSuccess() {
return new ServerResponse<>(NO_CONTENT.getCode(), NO_CONTENT.getMsg());
}
public static <T> ServerResponse<T> deleteSuccessWithCount(Number effectCount) {
return new ServerResponse<>(NO_CONTENT.getCode(), "删除成功,操作删除的数据条数为: " + effectCount);
}
public static <T> ServerResponse<T> deleteSuccessWithId(Number id) {
return new ServerResponse<>(NO_CONTENT.getCode(), "删除成功,操作删除的数据id为: " + id);
}
public static <T> ServerResponse<T> uploadSuccess(T data) {
return new ServerResponse<>(UPLOADED.getCode(), UPLOADED.getMsg(), data);
}
public static <T> ServerResponse<T> messageSuccess(String msg) {
return new ServerResponse<>(OK.getCode(), msg);
}
/* 以下为返回失败响应结果的各类重载静态方法 */
public static <T> ServerResponse<T> error() {
return new ServerResponse<>(INTERNAL_SERVER_ERROR.getCode(), INTERNAL_SERVER_ERROR.getMsg());
}
public static <T> ServerResponse<T> error(String errorMessage) {
return new ServerResponse<>(INTERNAL_SERVER_ERROR.getCode(), errorMessage);
}
public static <T> ServerResponse<T> error(ResponseCode responseCode) {
return new ServerResponse<>(responseCode.getCode(), responseCode.getMsg());
}
public static <T> ServerResponse<T> error(ResponseCode responseCode, String errorMessage) {
return new ServerResponse<>(responseCode.getCode(), errorMessage);
}
public static <T> ServerResponse<T> error(ResponseCode responseCode, String errorMessage,T data) {
return new ServerResponse<>(responseCode.getCode(), errorMessage,data);
}
/* 以下为提供给CONTROL层向文件服务器操作文件获得相应结果的相关方法 */
/**
* <b>向文件服务器上传文件并且取得{@code {@link ServerResponse}}类型的响应结果</b>
* <p>
* <p>封装了control层的关于文件上传的代码
* <p>
* <p>例如file是a.txt,dirName=template, 在文件服务器上存放的位置就是{@code root(根目录)/template/a.txt }
*
* @param file {@link MultipartFile} 接受到的文件俺对象
* @param dirName 在文件服务器上的文件夹名
* @return {@link ServerResponse} (包含了成功与导致失败的结果)
*/
public static ServerResponse uploadAndGet(
@RequestParam("file") Optional<MultipartFile> file, String dirName) {
// 空指针判断
if (!file.isPresent()) return error(NOT_NULL_PARAMETER);
// 上传文件并且获得相应结果
MultipartFile uploadFile = file.get();
FileServerResponse fsp =
HttpClientUtil.uploadFileToServer(uploadFile, dirName, uploadFile.getOriginalFilename());
// 根据返回结果的状态码确定相应的返回信息(200返回成功,否则error)
return (fsp.getCode() == 200) ? uploadSuccess(fsp.getData()) : error(NO_CHANGED, fsp.getMsg());
}
/**
* <b>向文件服务器删除文件并且取得{@code {@link ServerResponse}}类型的响应结果</b>
* <p>
* <p>封装了control层的关于文件上传的代码
* <p>
* <p>例如提供的参数如下
* <li>fileName = reset-hv_20180115144834_wV9A9iVD.png
* <li>dirName = templates
* <li>那么实际删除的文件路径为: {@code root(根目录)/templates/reset-hv_20180115144834_wV9A9iVD.png}
*
* @param fileName 要删除的文件名<b>注意是文件服务器上的文件名,例如<b>reset-hv_20180115144834_wV9A9iVD.png</b> 格式为{@code
* 原始文件名_timestamp_uuid8位}
* @param dirName 要删除的文件所处的文件目录
* @return {@link ServerResponse} (包含了成功与导致失败的结果)
*/
public static ServerResponse deleteAndGet(
@RequestParam(value = "fileName") Optional<String> fileName, String dirName) {
// 空指针判断
if (!fileName.isPresent()) return error(NOT_NULL_PARAMETER);
// 发送删除文件的请求,附带文件所在的目录和在服务器中的文件名
FileServerResponse fsp = HttpClientUtil.daleteFileToServer(dirName, fileName.get());
// 根据返回结果的状态码确定相应的返回信息(200返回成功,否则error)
return (fsp.getCode() == 200) ? deleteSuccess() : error(NO_CHANGED, fsp.getMsg());
}
/* 将构造器私有,防止外部进行实例化 仅提供给内部静态方法调用 * */
private ServerResponse() {
}
private ServerResponse(Integer code) {
this.code = code;
}
private ServerResponse(Integer code, String msg) {
this.code = code;
this.msg = msg;
}
private ServerResponse(String msg, T data) {
this.msg = msg;
this.data = data;
}
private ServerResponse(Integer code, String msg, T data) {
this.code = code;
this.msg = msg;
this.data = data;
}
}
package com.zjty.adaptationmaster.base.response;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* Description : 文件服务器上传的返回数据类
* Date : 2018/1/9 16:16
*
* @author : M@tr!x [xhyrzldf@foxmail.com]
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class fileDataStruct {
/**
* 原始文件名
*/
private String originalFileName;
/**
* 在服务器中的文件名
*/
private String serverFileName;
/**
* 服务器中的文件路径
*/
private String serverFilePath;
}
package com.zjty.adaptationmaster.utils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.zjty.adaptationmaster.base.response.FileServerResponse;
import org.springframework.core.io.FileSystemResource;
import org.springframework.http.*;
import org.springframework.http.converter.StringHttpMessageConverter;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.nio.charset.StandardCharsets;
/**
* Description : http请求发送工具类
*
* @Date : 2017/12/15 10:28
*
* @author : M@tr!x [xhyrzldf@foxmail.com]
*/
public class HttpClientUtil {
public static String postJson(String url, String jsonArgs) throws UnsupportedEncodingException {
RestTemplate restTemplate = new RestTemplate();
restTemplate
.getMessageConverters()
.set(1, new StringHttpMessageConverter(StandardCharsets.UTF_8));
// 设置请求体
HttpHeaders headers = new HttpHeaders();
MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
headers.setContentType(type);
headers.add("Accept", MediaType.APPLICATION_JSON.toString());
// 设置请求数据
HttpEntity<String> formEntity = new HttpEntity<>(jsonArgs, headers);
String result = restTemplate.postForObject(url, formEntity, String.class);
return result;
}
/**
* 上传文件到服务器
*
* @param jarFile 文件对象
* @param dirName 分类的目录名,例如templates,用于在文件服务器中建立对应的文件夹
* @param fileName 原始文件名
* @return {@link FileServerResponse}
*/
public static FileServerResponse uploadFileToServer(
MultipartFile jarFile, String dirName, String fileName) {
RestTemplate restTemplate = new RestTemplate();
restTemplate
.getMessageConverters()
.set(1, new StringHttpMessageConverter(StandardCharsets.UTF_8));
String url = "http://127.0.0.1:8888/upload/files";
HttpHeaders headers = new HttpHeaders();
// 构建本地临时文件,作为中转站,到后面会删除x
String tempFileName = jarFile.getOriginalFilename();
String tempFilePath = "E:\\temFiles\\" + tempFileName;
File tempFile = new File(tempFilePath);
try {
jarFile.transferTo(tempFile);
} catch (IOException e) {
e.printStackTrace();
}
// 设置restTemplate发送的header和相关数据
FileSystemResource fileSystemResource = new FileSystemResource(tempFilePath);
MediaType type = MediaType.parseMediaType("multipart/form-data");
headers.setContentType(type);
String cd = "filename=\"" + jarFile.getOriginalFilename() + "\"";
headers.add("Content-Disposition", cd);
MultiValueMap<String, Object> form = new LinkedMultiValueMap<>();
form.add("file", fileSystemResource);
form.add("dirName", dirName);
form.add("fileName", fileName);
HttpEntity<MultiValueMap<String, Object>> params = new HttpEntity<>(form, headers);
// 发送http post请求
String result = restTemplate.postForObject(url, params, String.class);
// 解析文件服务器返回结果对象(code,msg,data)
FileServerResponse fileServerResponse =
JSON.parseObject(result, new TypeReference<FileServerResponse>() {});
return fileServerResponse;
}
/**
* @param dirName 在文件服务器中的目录名
* @param serverFileName 在服务器中的文件名
* @return {@link FileServerResponse}
*/
public static FileServerResponse daleteFileToServer(String dirName, String serverFileName) {
// 初始化的设置
RestTemplate restTemplate = new RestTemplate();
restTemplate
.getMessageConverters()
.set(1, new StringHttpMessageConverter(StandardCharsets.UTF_8));
String url = "http://127.0.0.1:8888/delete";
HttpHeaders headers = new HttpHeaders();
//设置 header 提交方式都是表单提交
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
// 封装参数,千万不要替换为Map与HashMap,否则参数无法传递
MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
params.add("dirName", dirName);
params.add("serverFileName", serverFileName);
HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity<>(params, headers);
// 执行HTTP请求
ResponseEntity<String> response =
restTemplate.exchange(url, HttpMethod.POST, requestEntity, String.class);
// 解析文件服务器返回结果对象(code,msg,data)
FileServerResponse fileServerResponse =
JSON.parseObject(response.getBody(), new TypeReference<FileServerResponse>() {});
return fileServerResponse;
}
}
# mysql数据库配置
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/adaptation?useSSL=false&serverTimezone=UTC&characterEncoding=utf-8
spring.datasource.username=root
spring.datasource.password=root
# mysql数据库配置
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
#spring.datasource.url=jdbc:mysql://192.168.1.249:3306/bservice?useSSL=false&serverTimezone=UTC&autoReconnect=true&characterEncoding=utf-8
spring.datasource.url=jdbc:mysql://localhost:3306/master?useSSL=false&serverTimezone=UTC&autoReconnect=true&characterEncoding=utf-8
spring.datasource.username=root
spring.datasource.password=root
# mysql数据库配置
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/master?useSSL=false&serverTimezone=UTC&autoReconnect=true&characterEncoding=utf-8
spring.datasource.username=root
spring.datasource.password=root
server.port=8015 # 配置文件使用 默认使用 dev 环境
spring.profiles.active=dev
#spring.profiles.active=doc
#spring.profiles.active=prod
# 服务器相关配置
spring.datasource.url=jdbc:mysql://localhost:3306/adapt?useSSL=false&serverTimezone=Asia/Shanghai&autoReconnect=true&characterEncoding=utf-8 server.port=8078
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect
# 日志文件相关配置
# logging.level.org.hibernate.sql=debug
logging.file=./log/master.log
#spring.datasource.url=jdbc:mysql://localhost:3306/adapt?useSSL=false&serverTimezone=Asia/Shanghai&autoReconnect=true&characterEncoding=utf-8
#spring.datasource.username=root
#spring.datasource.password=root
#spring.datasource.driver-class-name=com.mysql.jdbc.Driver
#spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect
# spring-data-jpa 相关配置
# 指jpa对表生成的策略
spring.jpa.hibernate.ddl-auto=update spring.jpa.hibernate.ddl-auto=update
# 是否显示sql语句
spring.jpa.show-sql=true
# 格式化sql
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.open-in-view=true
# 验证框架是否对数据操作验证
spring.jpa.properties.javax.persistence.validation.mode=none
# spring-http-文件上传相关配置
spring.servlet.multipart.max-file-size=100MB
spring.servlet.multipart.max-request-size=100MB
spring.thymeleaf.cache=false
spring.mvc.static-path-pattern=/**
spring.resources.static-locations=classpath:/uploads/
base.path=C:\\home\\master\\ base.path=C:\\home\\master\\
\ No newline at end of file
package com.zjty.adaptationmaster; package com.zjty.adaptationmaster;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest @SpringBootTest
class AdaptationMasterApplicationTests { class AdaptationMasterApplicationTests {
@Test
void contextLoads() {
}
} }
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论