Commit f7e9fc6c authored by Gwofoo's avatar Gwofoo

Merge branch 'origin_develop_refactor' into origin_develop

parents 714e247d c1cfedfc
package com.yeejoin.amos.api.tool.config;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import javax.sql.DataSource;
/**
* 配置多个数据源
* @author Gary.Li
* @date 2023/12/14
*/
@Configuration
public class DataSourceConfig {
@Primary
@Bean(name = "primaryDataSource")
@ConfigurationProperties(prefix="spring.datasource")
public DataSource primaryDataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "dataSource-amos-studio")
@ConfigurationProperties(prefix="spring.second-datasource")
public DataSource secondDataSource() {
return DataSourceBuilder.create().build();
}
}
\ No newline at end of file
package com.yeejoin.amos.api.tool.controller;
import com.yeejoin.amos.api.tool.face.service.LoginForwardService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.typroject.tyboot.core.foundation.enumeration.UserType;
import org.typroject.tyboot.core.restful.doc.TycloudOperation;
import org.typroject.tyboot.core.restful.doc.TycloudResource;
import org.typroject.tyboot.core.restful.utils.ResponseHelper;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
import javax.servlet.ServletException;
import java.io.IOException;
/**
* @author Gary.Li
* @date 2023/12/18
*/
@Controller
@TycloudResource(module = "atl", value = "dataApi")
@Api(tags = "场景案例跳转")
public class LoginForwardResource {
@Autowired
LoginForwardService loginForwardService;
@RequestMapping("/forward")
@ApiOperation(value = "获取场景大屏点击后的登录token")
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@ResponseBody
public ResponseModel<String> getSceneLoginToken(){
return ResponseHelper.buildResponse(loginForwardService.querySceneLoginToken());
}
}
package com.yeejoin.amos.api.tool.face.model;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity;
/**
* @author Gary.Li
* @date 2023/12/14
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "MorphicWidgetGroupModel", description = "")
public class MorphicWidgetGroupModel extends BaseEntity {
@ApiModelProperty(value = "父节点id")
private String parentId;
@ApiModelProperty(value = "设计器名称")
private String designerName;
@ApiModelProperty(value = "设计器类型")
private String designerType;
}
package com.yeejoin.amos.api.tool.face.orm.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yeejoin.amos.api.tool.face.orm.entity.MorphicWidgetGroup;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface MorphicWidgetGroupMapper extends BaseMapper<MorphicWidgetGroup> {
}
package com.yeejoin.amos.api.tool.face.orm.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yeejoin.amos.api.tool.face.model.AmosToolTemplateModel;
import com.yeejoin.amos.api.tool.face.orm.entity.ToolLibrary;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
public interface ToolLibraryMapper extends BaseMapper<ToolLibrary> {
// 参考
// @Select("select * from amos_tool_template" +
// " order by ${miniSences} ${way}")
// List<AmosToolTemplateModel> listAll(@Param("miniSences") String miniSences,
// @Param("way") String way);
}
package com.yeejoin.amos.api.tool.face.orm.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity;
/**
* @author Gary.Li
* @date 2023/12/14
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("morphic_widget_group")
public class MorphicWidgetGroup extends BaseEntity {
/**
* 父级id
*/
@TableField("parent")
private Long parentId;
/**
* 设计器名称
*/
@TableField("display_name")
private String designerName;
/**
* 设计器类型
*/
@TableField("DESIGNER_TYPE")
private String designerType;
}
package com.yeejoin.amos.api.tool.face.orm.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
/**
* @author Gary.Li
* @date 2023/12/18
*/
@Data
@AllArgsConstructor
public class SceneCasesLoginRequest {
String deviceId;
String loginId;
String password;
boolean remembered;
}
......@@ -31,5 +31,4 @@ public class ToolLibrary extends BaseEntity{
@TableField("DESIGNER_TYPE")
private String designerType;
}
\ No newline at end of file
......@@ -11,6 +11,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.typroject.tyboot.core.rdbms.service.BaseService;
import javax.sql.DataSource;
import java.sql.*;
import java.util.*;
......@@ -22,20 +23,18 @@ public class DatabaseNameListService extends BaseService<DataBaseNameListModel,
@Autowired
private DataBaseNameListMapper dataBaseNameListMapper;
@Autowired
private DataSource dataSource;
/**
* 分页查询
*/
public Page<DataBaseNameListModel> queryForDataBasePage(Page<DataBaseNameListModel> page, Long parentId, int current, int size) throws ClassNotFoundException, SQLException {
Class.forName("com.mysql.cj.jdbc.Driver");
DatabaseConnectionModel dataBaseConnectionModel = databaseConnectionService.queryBySeq(parentId);
String ip = dataBaseConnectionModel.getIp();
String port = dataBaseConnectionModel.getPort();
String url = "jdbc:mysql://" + ip + ":" + port + " ";
String user = "root";
String passWord = "Yeejoin@2020";
String sql = "show databases";
Connection connection = DriverManager.getConnection(url, user, passWord);
Connection connection = dataSource.getConnection();
Statement statement = connection.createStatement();
String sql = "show databases";
ResultSet rs = statement.executeQuery(sql);
List<DataBaseNameListModel> list = new ArrayList<>();
long result = 1;
......
package com.yeejoin.amos.api.tool.face.service;
import com.yeejoin.amos.api.tool.face.orm.entity.SceneCasesLoginRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
/**
* @author Gary.Li
* @date 2023/12/20
*/
@Service
public class LoginForwardService {
@Autowired
RestTemplate restTemplate;
public String querySceneLoginToken() {
String loginUrl = "http://36.40.66.175:8089/privilege/v1/auth/dual/idpassword";
String loginId = "yeejoin_xl";
String plainPwd = "a1234560";
String encryptedPwd = "AC286A35E74D2DD2B09873DEA7813245";
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
// 自定义标头
headers.add("Product", "AMOS_STUDIO_WEB");
SceneCasesLoginRequest sceneCasesLoginRequest = new SceneCasesLoginRequest("1699861158791_4736F10B-37AA-493F-9A50-80C6A720BAB9",
loginId, encryptedPwd, false);
HttpEntity<SceneCasesLoginRequest> entity = new HttpEntity<>(sceneCasesLoginRequest, headers);
ResponseEntity<String> responseEntity = restTemplate.postForEntity(loginUrl, entity, String.class);
String resBody = responseEntity.getBody();
if (resBody == null) {
return "fail-to-get-token";
}
int start = resBody.indexOf("\"token\":\"") + 9;
if (start == -1 + 9) {
return "fail-to-get-token";
}
int end = start + 36;
return resBody.substring(start, end);
}
}
package com.yeejoin.amos.api.tool.face.service;
// import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.api.tool.face.model.ToolLibraryDetailModel;
import com.yeejoin.amos.api.tool.face.model.ToolLibraryModel;
import com.yeejoin.amos.api.tool.face.model.ToolLibraryTreeModel;
import com.yeejoin.amos.api.tool.face.orm.dao.MorphicWidgetGroupMapper;
import com.yeejoin.amos.api.tool.face.orm.dao.ToolLibraryMapper;
import com.yeejoin.amos.api.tool.face.orm.entity.MorphicWidgetGroup;
import com.yeejoin.amos.api.tool.face.orm.entity.TableColumn;
import com.yeejoin.amos.api.tool.face.orm.entity.ToolLibrary;
import com.yeejoin.amos.api.tool.utils.DatabaseUtils;
import com.yeejoin.amos.api.tool.utils.SqlExportUtils;
import org.apache.commons.lang3.time.DateFormatUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import org.typroject.tyboot.core.rdbms.service.BaseService;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;
import java.io.*;
import java.nio.charset.StandardCharsets;
import java.sql.Connection;
......@@ -22,24 +29,18 @@ import java.sql.SQLException;
import java.util.*;
@Service
public class ToolLibraryService extends BaseService<ToolLibraryModel, ToolLibrary,ToolLibraryMapper> {
private final String className = "com.mysql.cj.jdbc.Driver";
private final String url = "jdbc:mysql://172.16.3.18:3306/amos_studio";
// @DS("amos-studio")
public class ToolLibraryService extends BaseService<ToolLibraryModel, ToolLibrary, ToolLibraryMapper> {
private final String userName = "root";
private final String passWord = "Yeejoin@2020";
@Autowired
@Qualifier("dataSource-amos-studio")
private DataSource dataSource;
/**
* 由一级到二级
*/
public List<ToolLibraryTreeModel> queryForComponentList(String designer) throws ClassNotFoundException, SQLException {
// DatabaseConnectionModel databaseConnectionModel = new DatabaseConnectionModel();
// DatabaseUtils.getConnection(databaseConnectionModel)
Class.forName(className);
Connection connection = DriverManager.getConnection(url, userName, passWord);
Connection connection = dataSource.getConnection();
List<Map<String, Object>> displayMaps = DatabaseUtils.getMaps
("select display_name, DESIGNER_TYPE,SEQUENCE_NBR,parent from morphic_widget_group where DESIGNER_TYPE " +
"= '" + designer + "' and is_delete!=1;", connection);
......@@ -54,11 +55,11 @@ public class ToolLibraryService extends BaseService<ToolLibraryModel, ToolLibrar
model.setParentId(Long.valueOf(map.get("parent").toString()));
displayLists.add(model);
}
//新建一个用于接收数据的list
// 新建一个用于接收数据的list
List<ToolLibraryTreeModel> resultList = new ArrayList<>();
for (ToolLibraryTreeModel result : displayLists) {
if (result.getParentId() == 0) {
//调用方法给子类添加数据
// 调用方法给子类添加数据
resultList.add(getMenuTree(result, displayLists));
}
}
......@@ -67,7 +68,7 @@ public class ToolLibraryService extends BaseService<ToolLibraryModel, ToolLibrar
private ToolLibraryTreeModel getMenuTree(ToolLibraryTreeModel result, List<ToolLibraryTreeModel> list) {
for (ToolLibraryTreeModel treeModel : list) {
//如果父类主键等于传过来实体类的ID
// 如果父类主键等于传过来实体类的ID
if (treeModel.getParentId().equals(result.getId())) {
if (result.getChildren() == null) {
result.setChildren(new ArrayList<>());
......@@ -84,8 +85,7 @@ public class ToolLibraryService extends BaseService<ToolLibraryModel, ToolLibrar
*/
public Page<ToolLibraryDetailModel> queryForComponentListDetails(Page<ToolLibraryDetailModel> page, String sequenceNbr)
throws ClassNotFoundException, SQLException {
Class.forName(className);
Connection connection = DriverManager.getConnection(url, userName, passWord);
Connection connection = dataSource.getConnection();
// 先查当前节点的parent,看是不是0,从而判断在叶子节点还是父节点
List<Map<String, Object>> clickedNodeMaps = DatabaseUtils.getMaps(
"select SEQUENCE_NBR, parent, DESIGNER_TYPE, display_name " +
......@@ -100,13 +100,12 @@ public class ToolLibraryService extends BaseService<ToolLibraryModel, ToolLibrar
"select SEQUENCE_NBR, parent, DESIGNER_TYPE, display_name " +
"from morphic_widget_group " +
"where is_delete != 1 and parent = " + sequenceNbr, connection);
for (Map<String, Object> map: displayMaps) {
for (Map<String, Object> map : displayMaps) {
String seqNbr = map.get("SEQUENCE_NBR").toString();
displayTools.addAll(DatabaseUtils.getMaps("select SEQUENCE_NBR, category, component_key, name, thumb " +
"from morphic_widget where is_delete != 1 and group_id = " + seqNbr, connection));
}
}
else {
} else {
// 叶子节点
// 查询morphic_widget表中,group_id为sequenceNbr的所有工具数据
displayTools.addAll(DatabaseUtils.getMaps(
......@@ -143,15 +142,14 @@ public class ToolLibraryService extends BaseService<ToolLibraryModel, ToolLibrar
/**
* 导出一级SQL
*/
public void exportDesignerSQL(String id,HttpServletResponse httpServletResponse) {
public void exportDesignerSQL(String id, HttpServletResponse httpServletResponse) {
try {
Class.forName(className);
Connection connection = DriverManager.getConnection(url, userName, passWord);
Connection connection = dataSource.getConnection();
List<Map<String, Object>> resultMaps = DatabaseUtils.getMaps("select * from " +
" (select SEQUENCE_NBR from morphic_widget_group " +
" where DESIGNER_TYPE='" + id + "' and is_delete!=1) as t\n" +
" inner join morphic_widget mw on mw.group_id=t.SEQUENCE_NBR", connection);
List<TableColumn> tableColumn = DatabaseUtils.getTableColumn("morphic_widget",connection);
List<TableColumn> tableColumn = DatabaseUtils.getTableColumn("morphic_widget", connection);
StringBuffer insertSql = DatabaseUtils.getInsertSQL(resultMaps, tableColumn, "morphic_widget");
connection.close();
exportDownload(id, insertSql, httpServletResponse);
......@@ -165,8 +163,7 @@ public class ToolLibraryService extends BaseService<ToolLibraryModel, ToolLibrar
*/
public void exportComponentSQL(String sequenceNbr, HttpServletResponse httpServletResponse) {
try {
Class.forName(className);
Connection connection = DriverManager.getConnection(url, userName, passWord);
Connection connection = dataSource.getConnection();
// 先查当前节点的parent,看是不是0,从而判断在叶子节点还是父节点
List<Map<String, Object>> clickedNodeMaps = DatabaseUtils.getMaps(
"select SEQUENCE_NBR, parent, DESIGNER_TYPE, display_name " +
......@@ -207,15 +204,14 @@ public class ToolLibraryService extends BaseService<ToolLibraryModel, ToolLibrar
public void exportToolSQL(String sequenceNbrs, HttpServletResponse httpServletResponse) {
String[] split = sequenceNbrs.split(",");
String sequenceNbres = Arrays.toString(split);
sequenceNbres=sequenceNbres.substring(1,sequenceNbres.length()-1);
sequenceNbres = sequenceNbres.substring(1, sequenceNbres.length() - 1);
try {
Class.forName(className);
String sql="SELECT *\n" +
String sql = "SELECT *\n" +
"FROM morphic_widget\n" +
"WHERE is_delete!=1 AND SEQUENCE_NBR IN ("+sequenceNbres+");";
Connection connection = DriverManager.getConnection(url, userName, passWord);
"WHERE is_delete!=1 AND SEQUENCE_NBR IN (" + sequenceNbres + ");";
Connection connection = dataSource.getConnection();
List<Map<String, Object>> resultMaps = DatabaseUtils.getMaps(sql, connection);
List<TableColumn> tableColumn = DatabaseUtils.getTableColumn("morphic_widget",connection);
List<TableColumn> tableColumn = DatabaseUtils.getTableColumn("morphic_widget", connection);
StringBuffer insertSql = DatabaseUtils.getInsertSQL(resultMaps, tableColumn, "morphic_widget");
connection.close();
exportDownload("tool", insertSql, httpServletResponse);
......@@ -234,7 +230,7 @@ public class ToolLibraryService extends BaseService<ToolLibraryModel, ToolLibrar
sqlDirectory.mkdir();
}
// 备份文件路径名称
String fileName =id+DateFormatUtils.format(new Date(), "yyyyMMddHHmmss") + "." + SqlExportUtils.SUFFIX;
String fileName = id + DateFormatUtils.format(new Date(), "yyyyMMddHHmmss") + "." + SqlExportUtils.SUFFIX;
String sqlFilePath = backPath + SqlExportUtils.SLASH + fileName;
File file = new File(sqlFilePath);
FileOutputStream out = new FileOutputStream(file);
......@@ -249,7 +245,7 @@ public class ToolLibraryService extends BaseService<ToolLibraryModel, ToolLibrar
writer.flush();
writer.close();
download(httpServletResponse,fileName,sqlFilePath);
download(httpServletResponse, fileName, sqlFilePath);
}
private void download(HttpServletResponse response, String fileName, String sqlFilePath) throws IOException {
......@@ -266,4 +262,6 @@ public class ToolLibraryService extends BaseService<ToolLibraryModel, ToolLibrar
br.close();
out.close();
}
}
#DB properties:
# jdbc_config
spring.datasource.url=jdbc:mysql://172.16.3.18:3306/amos_tool_library?allowMultiQueries=true
spring.datasource.jdbc-url=jdbc:mysql://172.16.3.18:3306/amos_tool_library?allowMultiQueries=true
spring.datasource.username=root
spring.datasource.password=Yeejoin@2020
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
......@@ -13,6 +13,21 @@ spring.datasource.hikari.pool-name=DatebookHikariCP
spring.datasource.hikari.max-lifetime=1800000
spring.datasource.hikari.connection-timeout=30000
spring.datasource.hikari.connection-test-query=SELECT 1
# second-datasource amos_studio
spring.second-datasource.jdbc-url=jdbc:mysql://172.16.3.18:3306/amos_studio?allowMultiQueries=true
spring.second-datasource.username=root
spring.second-datasource.password=Yeejoin@2020
spring.second-datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.second-datasource.type=com.zaxxer.hikari.HikariDataSource
spring.second-datasource.hikari.minimum-idle=3
spring.second-datasource.hikari.maximum-pool-size=10
spring.second-datasource.hikari.auto-commit=true
spring.second-datasource.hikari.idle-timeout=30000
spring.second-datasource.hikari.pool-name=DatebookHikariCP
spring.second-datasource.hikari.max-lifetime=1800000
spring.second-datasource.hikari.connection-timeout=30000
spring.second-datasource.hikari.connection-test-query=SELECT 1
#eureka
eureka.instance.hostname=172.16.3.18
......
#DB properties:
# jdbc_config
spring.datasource.url=jdbc:mysql://172.16.3.18:3306/amos_tool_library?allowMultiQueries=true
#spring.datasource.url=jdbc:mysql://172.16.3.19:3306/amos_tool_library?allowMultiQueries=true
spring.datasource.jdbc-url=jdbc:mysql://172.16.3.18:3306/amos_tool_library?allowMultiQueries=true
spring.datasource.username=root
spring.datasource.password=Yeejoin@2020
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
......@@ -14,6 +13,20 @@ spring.datasource.hikari.pool-name=DatebookHikariCP
spring.datasource.hikari.max-lifetime=1800000
spring.datasource.hikari.connection-timeout=30000
spring.datasource.hikari.connection-test-query=SELECT 1
# second-datasource amos_studio
spring.second-datasource.jdbc-url=jdbc:mysql://172.16.3.18:3306/amos_studio?allowMultiQueries=true
spring.second-datasource.username=root
spring.second-datasource.password=Yeejoin@2020
spring.second-datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.second-datasource.type=com.zaxxer.hikari.HikariDataSource
spring.second-datasource.hikari.minimum-idle=3
spring.second-datasource.hikari.maximum-pool-size=10
spring.second-datasource.hikari.auto-commit=true
spring.second-datasource.hikari.idle-timeout=30000
spring.second-datasource.hikari.pool-name=DatebookHikariCP
spring.second-datasource.hikari.max-lifetime=1800000
spring.second-datasource.hikari.connection-timeout=30000
spring.second-datasource.hikari.connection-test-query=SELECT 1
#eureka
eureka.instance.hostname=172.16.3.18
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment