Commit c6cf897a authored by Code-KingTT's avatar Code-KingTT

Merge remote-tracking branch 'origin/develop' into develop

# Conflicts: # src/main/resources/application.properties
parents 3e34a105 0d4a2952
......@@ -5,7 +5,7 @@
<groupId>com.yeejoin.amos</groupId>
<artifactId>amos-api-tool</artifactId>
<packaging>jar</packaging>
<version>1.9.0-SNAPSHOT</version>
<version>1.0.0-SNAPSHOT</version>
<name>amos-api-tool</name>
<description>amos-api-tool</description>
......@@ -18,6 +18,11 @@
<dependencies>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
......@@ -31,6 +36,58 @@
<version>1.4.5.RELEASE</version>
</dependency>
<!--JSqlparser(高效的SQL解析工具)-->
<dependency>
<groupId>com.github.jsqlparser</groupId>
<artifactId>jsqlparser</artifactId>
<version>4.4</version>
</dependency>
<!-- easy-poi -->
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-base</artifactId>
<version>4.1.0</version>
</dependency>
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-web</artifactId>
<version>4.1.0</version>
</dependency>
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-annotation</artifactId>
<version>4.1.0</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.0.5</version>
<exclusions>
<exclusion>
<groupId>org.ow2.asm</groupId>
<artifactId>asm</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpmime</artifactId>
<version>4.5.7</version>
</dependency>
<!-- JSON -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.67_noneautotype2</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-text</artifactId>
<version>1.8</version>
</dependency>
<dependency>
<groupId>org.typroject</groupId>
<artifactId>tyboot-core-foundation</artifactId>
......@@ -95,6 +152,17 @@
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.typroject</groupId>
<artifactId>tyboot-component-emq</artifactId>
<version>${tyboot-version}</version>
<exclusions>
<exclusion>
<groupId>org.typroject</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<dependencyManagement>
......@@ -171,7 +239,21 @@
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.7.9</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
<configuration>
<includeSystemScope>true</includeSystemScope>
<mainClass>com.yeejoin.amos.Application</mainClass>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
......@@ -180,6 +262,14 @@
<skip>true</skip>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>8</source>
<target>8</target>
</configuration>
</plugin>
</plugins>
</build>
......
......@@ -36,7 +36,6 @@ public class Application {
String path = oConvertUtils.getString(env.getProperty("server.servlet.context-path"));
log.info("\n----------------------------------------------------------\n\t"
+ "Application AMOS-API-TOOL is running! Access URLs:\n\t" + "Swagger文档: \thttp://" + ip + ":" + port
+ path + "/doc.html\n" + "-----------------" +
"-----------------------------------------");
+ path + "/doc.html\n" + "----------------------------------------------------------");
}
}
package com.yeejoin.amos.api.tool.controller;
import com.yeejoin.amos.api.tool.face.model.AgencyTreeModel;
import com.yeejoin.amos.api.tool.face.service.AgencyTreeService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
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.utils.ResponseHelper;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
import java.util.List;
/**
* @author r
*/
@RestController
@Api(tags = "机构树")
@RequestMapping(value = "/privilege_agency")
public class AgencyTreeResource {
@Autowired
private AgencyTreeService agencyTreeService;
/**
* 根据sequenceNbr删除
* @param sequenceNbr 主键
* @return Boolean
*/
@TycloudOperation(ApiLevel = UserType.AGENCY,needAuth = false)
@DeleteMapping(value = "/{sequenceNbr}")
@ApiOperation(httpMethod = "DELETE", value = "根据sequenceNbr删除", notes = "根据sequenceNbr删除")
public ResponseModel<Boolean> deleteBySequenceNbr(@PathVariable(value = "sequenceNbr") Long sequenceNbr){
return ResponseHelper.buildResponse(agencyTreeService.removeById(sequenceNbr));
}
/**
*列表全部数据查询
* @return List<AgencyTreeModel>
*/
@TycloudOperation(ApiLevel = UserType.AGENCY,needAuth = false)
@ApiOperation(httpMethod = "GET",value = "列表全部数据查询", notes = "列表全部数据查询")
@GetMapping(value = "/list")
public ResponseModel<List<AgencyTreeModel>> selectForList() {
return ResponseHelper.buildResponse(agencyTreeService.queryForAgencyTreeList());
}
}
......@@ -76,7 +76,7 @@ public class AmosDemoResource {
}
@TycloudOperation(ApiLevel = UserType.SUPER_ADMIN)
@TycloudOperation(ApiLevel = UserType.SUPER_ADMIN, needAuth = false)
@ApiOperation(value = "列表查询")
@RequestMapping(value = "/list", method = RequestMethod.GET)
public ResponseModel selectForList(@RequestParam(value = "agencyCode") String agencyCode) {
......
package com.yeejoin.amos.api.tool.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.api.tool.face.model.ApiInfoModel;
import com.yeejoin.amos.api.tool.face.service.ApiInfoService;
import com.yeejoin.amos.api.tool.face.service.ApiSourceService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.typroject.tyboot.core.foundation.enumeration.UserType;
import org.typroject.tyboot.core.foundation.utils.StringUtil;
import org.typroject.tyboot.core.restful.doc.TycloudOperation;
import org.typroject.tyboot.core.restful.utils.ResponseHelper;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
import java.util.Arrays;
import java.util.List;
@CrossOrigin
@RestController
@Api(tags = "接口管理Api")
@RequestMapping(value = "/api-info")
public class ApiInfoResource {
@Autowired
private ApiInfoService apiInfoService;
@Autowired
private ApiSourceService apiSourceService;
/**
* 新增
* @param apiInfoModel API信息
* @return ApiInfoModel
*/
@TycloudOperation(ApiLevel = UserType.AGENCY,needAuth = false)
@PostMapping(value = "/save")
@ApiOperation(httpMethod = "POST", value = "新增", notes = "新增")
public ResponseModel<ApiInfoModel> save(@RequestBody ApiInfoModel apiInfoModel) throws Exception {
apiInfoModel = apiInfoService.createWithModel(apiInfoModel);
return ResponseHelper.buildResponse(apiInfoModel);
}
/**
* 根据sequenceNbr更新
* @param sequenceNbr 主键
* @return ApiInfoModel
*/
@TycloudOperation(ApiLevel = UserType.AGENCY,needAuth = false)
@PutMapping(value = "/{sequenceNbr}")
@ApiOperation(httpMethod = "PUT", value = "根据sequenceNbr更新", notes = "根据sequenceNbr更新")
public ResponseModel<ApiInfoModel> updateBySequenceNbrApiInfo(@RequestBody ApiInfoModel model, @PathVariable(value = "sequenceNbr") Long sequenceNbr) {
model.setSequenceNbr(sequenceNbr);
return ResponseHelper.buildResponse(apiInfoService.updateWithModel(model));
}
/**
* 根据sequenceNbr删除
* @param sequenceNbr 主键
* @return Boolean
*/
@TycloudOperation(ApiLevel = UserType.AGENCY,needAuth = false)
@DeleteMapping(value = "/{sequenceNbr}")
@ApiOperation(httpMethod = "DELETE", value = "根据sequenceNbr删除", notes = "根据sequenceNbr删除")
public ResponseModel<Boolean> deleteBySequenceNbr(@PathVariable(value = "sequenceNbr") Long sequenceNbr){
return ResponseHelper.buildResponse(apiInfoService.removeById(sequenceNbr));
}
/**
* 根据sequenceNbr 批量删除
* @param sequenceNbr 主键
* @return Boolean
*/
@TycloudOperation(ApiLevel = UserType.AGENCY,needAuth = false)
@DeleteMapping(value = "/delete/{sequenceNbr}")
@ApiOperation(httpMethod = "DELETE", value = "根据sequenceNbr删除多项", notes = "根据sequenceNbr删除多项")
public ResponseModel<Boolean> deleteModelsBySequenceNbr(@PathVariable(value = "sequenceNbr")String sequenceNbr){
return ResponseHelper.buildResponse(apiInfoService.removeByIds(Arrays.asList(StringUtil.string2Array(sequenceNbr))));
}
/**
* 根据sequenceNbr查询
* @param sequenceNbr 主键
* @return ApiInfoModel
*/
@TycloudOperation(ApiLevel = UserType.AGENCY,needAuth = false)
@GetMapping(value = "/{sequenceNbr}")
@ApiOperation(httpMethod = "GET",value = "根据sequenceNbr查询单个", notes = "根据sequenceNbr查询单个")
public ResponseModel<ApiInfoModel> selectOne(@PathVariable Long sequenceNbr) throws Exception {
return ResponseHelper.buildResponse(apiInfoService.queryBySeq(sequenceNbr));
}
/**
* 列表分页查询
* @param current 当前页
* @param size 每页大小
* @param apiName API名称
* @param sequenceNbr 主键
* @return Page<ApiInfoModel>
*/
@TycloudOperation(ApiLevel = UserType.AGENCY,needAuth = false)
@GetMapping(value = "/page")
@ApiOperation(httpMethod = "GET",value = "分页查询", notes = "分页查询")
public ResponseModel<Page<ApiInfoModel>> queryForPage(
@RequestParam(value = "current") int current,
@RequestParam(value = "size") int size,
@RequestParam(value = "sequenceNbr") Long sequenceNbr,
@RequestParam(value = "apiName",required = false)String apiName) {
Page<ApiInfoModel> page=new Page<ApiInfoModel>();
page.setCurrent(current);
page.setSize(size);
return ResponseHelper.buildResponse(
apiInfoService.queryForApiInfoPage(page, apiSourceService.queryCodeById(sequenceNbr),apiName));
}
/**
* 列表全部数据查询
* @return List<ApiInfoModel>
*/
@TycloudOperation(ApiLevel = UserType.AGENCY,needAuth = false)
@ApiOperation(httpMethod = "GET",value = "列表全部数据查询", notes = "列表全部数据查询")
@GetMapping(value = "/list")
public ResponseModel<List<ApiInfoModel>> selectForList() {
return ResponseHelper.buildResponse(apiInfoService.queryForApiInfoList());
}
}
package com.yeejoin.amos.api.tool.controller;
import com.yeejoin.amos.api.tool.face.model.ApiSourceModel;
import com.yeejoin.amos.api.tool.face.service.ApiInfoService;
import com.yeejoin.amos.api.tool.face.service.ApiSourceService;
import org.springframework.web.bind.annotation.RequestMapping;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import org.typroject.tyboot.core.restful.utils.ResponseHelper;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.typroject.tyboot.core.restful.doc.TycloudOperation;
import org.typroject.tyboot.core.foundation.enumeration.UserType;
@CrossOrigin
@RestController
@Api(tags = "接口来源管理Api")
@RequestMapping(value = "/api_source")
public class ApiSourceResource {
@Autowired
private ApiSourceService apiSourceService;
@Autowired
private ApiInfoService apiInfoService;
/**
* 新增
* @param model API来源信息
* @return ApiSourceDto
*/
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@PostMapping(value = "/save")
@ApiOperation(httpMethod = "POST", value = "新增", notes = "新增")
public ResponseModel<ApiSourceModel> save(@RequestBody ApiSourceModel model) {
model = apiSourceService.createWithModel(model);
return ResponseHelper.buildResponse(model);
}
/**
* 根据sequenceNbr更新
* @param model API来源信息
* @param sequenceNbr 编码
* @return ApiSourceDto
*/
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@PutMapping(value = "/{sequenceNbr}")
@ApiOperation(httpMethod = "PUT", value = "根据sequenceNbr更新", notes = "根据sequenceNbr更新")
public ResponseModel<ApiSourceModel> updateBySeqApiSource(
@RequestBody ApiSourceModel model,
@PathVariable(value = "sequenceNbr") Long sequenceNbr) {
model.setSequenceNbr(sequenceNbr);
return ResponseHelper.buildResponse(apiSourceService.updateWithModel(model));
}
/**
* 根据sequenceNbr删除
* @param sequenceNbr 编码
* @return Boolean
*/
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@DeleteMapping(value = "/{sequenceNbr}")
@ApiOperation(httpMethod = "DELETE", value = "根据sequenceNbr删除", notes = "根据sequenceNbr删除")
public ResponseModel<Boolean> deleteBySequenceNbr(@PathVariable(value = "sequenceNbr") Long sequenceNbr) {
return ResponseHelper.buildResponse(apiSourceService.deleteById(sequenceNbr));
}
/**
* 根据sequenceNbr查询
* @param sequenceNbr 物理主键
* @return ApiSourceDto
*/
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@GetMapping(value = "/{sequenceNbr}")
@ApiOperation(httpMethod = "GET", value = "根据sequenceNbr查询单个", notes = "根据sequenceNbr查询单个")
public ResponseModel<ApiSourceModel> selectOne(@PathVariable Long sequenceNbr) {
return ResponseHelper.buildResponse(apiSourceService.queryBySeq(sequenceNbr));
}
/**
* 列表全部数据查询
* @return List<ApiSourceDto>
*/
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@ApiOperation(httpMethod = "GET", value = "列表全部数据查询", notes = "列表全部数据查询")
@GetMapping(value = "/list")
public ResponseModel<List<ApiSourceModel>> selectForList() {
return ResponseHelper.buildResponse(apiSourceService.queryForApiSourceList());
}
}
package com.yeejoin.amos.api.tool.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.api.tool.face.model.AmosDemoModel;
import com.yeejoin.amos.api.tool.face.service.AmosDemoService;
import com.yeejoin.amos.api.tool.face.service.StudioResourceService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
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.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.sql.SQLException;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
/**
* <p>
* 测试 前端控制器
* </p>
*
* @author 子杨
* @since 2023-06-06
*/
@RestController
@TycloudResource(module = "atl", value = "dataApi")
@RequestMapping(value = "/v1/dataApi")
@Api(tags = "atl-导出")
public class DataApiResource {
private final Logger logger = LogManager.getLogger(DataApiResource.class);
@Autowired
private StudioResourceService studioResourceService;
/**
* 依据参数导出 应用快搭增量脚本
* @throws SQLException
*/
@TycloudOperation(ApiLevel = UserType.ANONYMOUS, needAuth = false)
@ApiOperation(value = "导出应用快搭增量脚本")
@RequestMapping(value = "/generateSQL", method = RequestMethod.GET)
public void generateSQL(
@RequestParam("resourceCode") String resourceCode,
@RequestParam("dimension") String dimension,
HttpServletRequest request,
HttpServletResponse response) throws SQLException {
Map<String, Object> variables = new HashMap<>();
Enumeration<String> keys = request.getParameterNames();
while(keys.hasMoreElements()){
String name = (String)keys.nextElement();
String value = request.getParameter(name);
variables.put(name, value);
}
variables.remove("resourceCode");
variables.remove("dimension");
studioResourceService.generateSQL(resourceCode, dimension, variables, response);
}
}
package com.yeejoin.amos.api.tool.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.api.tool.face.model.DataBaseLinkModel;
import com.yeejoin.amos.api.tool.face.service.DataBaseLinkService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
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.utils.ResponseHelper;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
import java.util.List;
/**
* @author r
*/
@RestController
@Api(tags = "数据库信息")
@RequestMapping(value = "/database_join_record")
public class DataBaseLinkResource {
@Autowired
private DataBaseLinkService dataBaseLinkService;
/**
* 数据库初始化
* @param dataBaseLinkModel 数据库连接信息
* @return List<DataBaseLinkModel>
*/
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@PostMapping(value = "/refresh")
@ApiOperation(httpMethod = "POST", value = "数据库初始化", notes = "数据库初始化")
public ResponseModel<List<DataBaseLinkModel>> save(@RequestBody DataBaseLinkModel dataBaseLinkModel) throws Exception {
return ResponseHelper.buildResponse(
dataBaseLinkService.refreshDataBase(dataBaseLinkService.encryptPwd(dataBaseLinkModel)));
}
/**
* 列表分页查询
* @param current 当前分页
* @param size 分页大小
* @return Page<DataBaseLinkModel>
*/
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@GetMapping(value = "/page")
@ApiOperation(httpMethod = "GET", value = "分页查询", notes = "分页查询")
public ResponseModel<Page<DataBaseLinkModel>> queryForPage(
@RequestParam(value = "current") int current,
@RequestParam(value = "size") int size) {
Page<DataBaseLinkModel> page = new Page<DataBaseLinkModel>();
page.setCurrent(current);
page.setSize(size);
return ResponseHelper.buildResponse(dataBaseLinkService.queryForDataBasePage(page));
}
/**
* 列表全部数据查询
* @return List<DataBaseLinkModel>
*/
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@ApiOperation(httpMethod = "GET", value = "列表全部数据查询", notes = "列表全部数据查询")
@GetMapping(value = "/list")
public ResponseModel<List<DataBaseLinkModel>> selectForList() {
return ResponseHelper.buildResponse(dataBaseLinkService.queryForDataBaseList());
}
}
package com.yeejoin.amos.api.tool.controller;
import com.yeejoin.amos.api.tool.face.model.DataBaseLinkModel;
import com.yeejoin.amos.api.tool.face.service.DataBaseLinkService;
import com.yeejoin.amos.api.tool.face.service.RelationService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Configurable;
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.utils.ResponseHelper;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
import javax.xml.crypto.Data;
import java.sql.Connection;
import java.util.ArrayList;
import java.util.List;
@CrossOrigin
@RestController
@Api(tags = "机构管理Api")
@RequestMapping(value = "/Agency")
public class RelationResource {
@Autowired
private RelationService relationService;
@Autowired
DataBaseLinkService dataBaseLinkService;
/**
* 根据机构ID和数据库sequenceNbr批量删除数据库
* @param agencyCodeId 机构ID
* @param sequenceNbrs 多个主键
* @return String
*/
@TycloudOperation(ApiLevel = UserType.AGENCY,needAuth = false)
@DeleteMapping(value = "/relation/{agencyCodeId}/{sequenceNbrs}")
@ApiOperation(httpMethod = "DELETE", value = "机构删除", notes = "机构删除")
public ResponseModel<String> deleteDataBase(
@PathVariable Long agencyCodeId,
@PathVariable String sequenceNbrs) throws Exception {
relationService.deleteAgency(agencyCodeId,sequenceNbrs);
return ResponseHelper.buildResponse("The data has been deleted !");
}
/**
* 导出SQL脚本
* @return String
*/
@TycloudOperation(ApiLevel = UserType.AGENCY,needAuth = false)
@GetMapping(value = "/output/{agencyCodeId}/{sequenceNbrs}")
@ApiOperation(httpMethod = "GET", value = "导出", notes = "导出")
public ResponseModel<String> genereteSQL(@PathVariable Long agencyCodeId,@PathVariable String sequenceNbrs) throws Exception {
relationService.outputAgency(agencyCodeId, sequenceNbrs);
return ResponseHelper.buildResponse("yes");
}
}
package com.yeejoin.amos.api.tool.controller;
import com.yeejoin.amos.api.tool.face.model.TemplateCategoryModel;
import com.yeejoin.amos.api.tool.face.model.TemplateCategoryTreeModel;
import com.yeejoin.amos.api.tool.face.model.TemplateModel;
import com.yeejoin.amos.api.tool.face.service.TemplateCategoryService;
import com.yeejoin.amos.api.tool.face.service.TemplateService;
import com.yeejoin.amos.api.tool.face.service.VisualDesignerService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
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.utils.ResponseHelper;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
import java.util.List;
@CrossOrigin
@RestController
@Api(tags = "模板分类管理Api")
@RequestMapping(value = "/tpl_cate")
public class TemplateCategoryResource {
@Autowired
private TemplateCategoryService templateCategoryService;
@Autowired
private TemplateService templateService;
@Autowired
private VisualDesignerService visualDesignerService;
/**
* 新增
* @param sequenceNbr 设计器主键
* @param templateCategoryModel 模板分类信息
* @return ApiSourceDto
*/
@TycloudOperation(ApiLevel = UserType.AGENCY,needAuth = false)
@PostMapping(value = "/save/{sequenceNbr}")
@ApiOperation(httpMethod = "POST", value = "新增", notes = "新增")
public ResponseModel<TemplateCategoryModel> save(
@PathVariable Long sequenceNbr,
@RequestBody TemplateCategoryModel templateCategoryModel){
templateCategoryModel.setDesignerType(visualDesignerService.queryBySeq(sequenceNbr).getDesignerType());
templateCategoryModel = templateCategoryService.createWithModel(templateCategoryModel);
return ResponseHelper.buildResponse(templateCategoryModel);
}
/**
* 根据sequenceNbr更新
* @param sequenceNbr 编码
* @return ApiSourceDto
*/
@TycloudOperation(ApiLevel = UserType.AGENCY,needAuth = false)
@PutMapping(value = "/{sequenceNbr}")
@ApiOperation(httpMethod = "PUT", value = "根据sequenceNbr更新", notes = "根据sequenceNbr更新")
public ResponseModel<TemplateCategoryModel> updateBySeqTplCate(@RequestBody TemplateCategoryModel templateCategoryModel, @PathVariable(value = "sequenceNbr") Long sequenceNbr){
templateCategoryModel.setSequenceNbr(sequenceNbr);
return ResponseHelper.buildResponse(templateCategoryService.updateWithModel(templateCategoryModel));
}
/**
* 根据sequenceNbr删除
* @param sequenceNbr 编码
* @return Boolean
*/
@TycloudOperation(ApiLevel = UserType.AGENCY,needAuth = false)
@DeleteMapping(value = "/{sequenceNbr}")
@ApiOperation(httpMethod = "DELETE", value = "根据sequenceNbr删除", notes = "根据sequenceNbr删除")
public ResponseModel<Boolean> deleteBySequenceNbr(@PathVariable(value = "sequenceNbr") Long sequenceNbr) {
return ResponseHelper.buildResponse(templateCategoryService.deleteById(sequenceNbr));
}
/**
* 根据sequenceNbr查询
* @param sequenceNbr 物理主键
* @return ApiSourceDto
*/
@TycloudOperation(ApiLevel = UserType.AGENCY,needAuth = false)
@GetMapping(value = "/{sequenceNbr}")
@ApiOperation(httpMethod = "GET", value = "根据sequenceNbr查询单个", notes = "根据sequenceNbr查询单个")
public ResponseModel<TemplateCategoryModel> selectOne(@PathVariable Long sequenceNbr){
return ResponseHelper.buildResponse(templateCategoryService.queryBySeq(sequenceNbr));
}
/**
* 列表全部数据查询
* @return List<ApiSourceDto>
*/
@TycloudOperation(ApiLevel = UserType.AGENCY,needAuth = false)
@ApiOperation(httpMethod = "GET", value = "列表全部数据查询", notes = "列表全部数据查询")
@GetMapping(value = "/list")
public ResponseModel<List<TemplateCategoryModel>> selectForList(){
return ResponseHelper.buildResponse(templateCategoryService.queryForTplCateList());
}
/**
* 列表树形结构查询
* @return List<ApiSourceDto>
*/
@TycloudOperation(ApiLevel = UserType.AGENCY,needAuth = false)
@ApiOperation(httpMethod = "GET", value = "列表树形结构查询", notes = "列表树形结构查询")
@GetMapping(value = "/tree")
public ResponseModel<List<TemplateCategoryTreeModel>> selectForTree(){
return ResponseHelper.buildResponse(templateCategoryService.getTree());
}
}
package com.yeejoin.amos.api.tool.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.api.tool.face.model.TemplateModel;
import com.yeejoin.amos.api.tool.face.model.TemplateVoModel;
import com.yeejoin.amos.api.tool.face.service.TemplateService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.typroject.tyboot.core.foundation.enumeration.UserType;
import org.typroject.tyboot.core.foundation.utils.StringUtil;
import org.typroject.tyboot.core.restful.doc.TycloudOperation;
import org.typroject.tyboot.core.restful.utils.ResponseHelper;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
import java.io.IOException;
import java.util.*;
@CrossOrigin
@RestController
@Api(tags = "模板管理Api")
@RequestMapping(value = "/tpl")
public class TemplateResource {
@Autowired
private TemplateService templateService;
/**
* 新增
* @param tplVoModel 页面表单数据
* @return TemplateModel
*/
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@PostMapping(value = "/save")
@ApiOperation(httpMethod = "POST", value = "新增", notes = "新增")
public ResponseModel<TemplateModel> save(@RequestBody TemplateVoModel tplVoModel) throws Exception {
tplVoModel.setDisplayName(tplVoModel.getComName());
return ResponseHelper.buildResponse(templateService.createWithModel(templateService.convertModel(tplVoModel)));
}
/**
* 根据sequenceNbr更新
* @param tplVoModel 模板信息
* @param sequenceNbr 主键
* @return TemplateModel
*/
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@PutMapping(value = "/{sequenceNbr}")
@ApiOperation(httpMethod = "PUT", value = "根据sequenceNbr更新", notes = "根据sequenceNbr更新")
public ResponseModel<TemplateModel> updateBySequenceNbrTpl(
@RequestBody TemplateVoModel tplVoModel,
@PathVariable(value = "sequenceNbr") Long sequenceNbr) throws NoSuchFieldException, IllegalAccessException {
tplVoModel.setSequenceNbr(sequenceNbr);
tplVoModel.setDisplayName(tplVoModel.getComName());
return ResponseHelper.buildResponse(templateService.updateWithModel(templateService.convertModel(tplVoModel)));
}
/**
* 根据sequenceNbr删除
*
* @param sequenceNbr 主键
* @return Boolean
*/
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@DeleteMapping(value = "/{sequenceNbr}")
@ApiOperation(httpMethod = "DELETE", value = "根据sequenceNbr删除", notes = "根据sequenceNbr删除")
public ResponseModel<Boolean> deleteBySequenceNbr(@PathVariable(value = "sequenceNbr") Long sequenceNbr) {
return ResponseHelper.buildResponse(templateService.removeById(sequenceNbr));
}
/**
* 根据sequenceNbr删除多项
* @param sequenceNbr 主键
* @return String
*/
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@DeleteMapping(value = "/delete/{sequenceNbr}")
@ApiOperation(httpMethod = "DELETE", value = "根据sequenceNbr删除多项", notes = "根据sequenceNbr删除多项")
public ResponseModel<Boolean> deleteModelsBySequenceNbr(@PathVariable(value = "sequenceNbr") String sequenceNbr) {
return ResponseHelper.buildResponse(templateService.removeByIds(Arrays.asList(StringUtil.string2Array(sequenceNbr))));
}
/**
* 根据sequenceNbr查询
* @param sequenceNbr 主键
* @return TemplateVoModel
*/
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@GetMapping(value = "/{sequenceNbr}")
@ApiOperation(httpMethod = "GET", value = "根据sequenceNbr查询单个", notes = "根据sequenceNbr查询单个")
public ResponseModel<TemplateVoModel> selectOne(@PathVariable Long sequenceNbr) {
return ResponseHelper.buildResponse(templateService.queryForTplVo(sequenceNbr));
}
/**
* 列表分页查询
* @param current 当前页
* @param size 每页大小
* @param categorySeq 模板分类ID
* @param displayName 模板名称
* @return Page<TemplateModel>
*/
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@GetMapping(value = "/page")
@ApiOperation(httpMethod = "GET", value = "分页查询", notes = "分页查询")
public ResponseModel<Page<TemplateModel>> queryForPage(
@RequestParam(value = "current") int current,
@RequestParam(value = "size") int size,
@RequestParam(value = "categorySeq") Long categorySeq,
@RequestParam(value = "displayName", required = false) String displayName) {
Page<TemplateModel> page = new Page<>();
page.setCurrent(current);
page.setSize(size);
return ResponseHelper.buildResponse(templateService.queryForTplPage(page, categorySeq, displayName));
}
/**
* 列表全部数据查询
* @return List<TemplateModel>
*/
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@ApiOperation(httpMethod = "GET", value = "列表全部数据查询", notes = "列表全部数据查询")
@GetMapping(value = "/list")
public ResponseModel<List<TemplateModel>> selectForList() {
return ResponseHelper.buildResponse(templateService.queryForTplList());
}
/**
* 导入
* @param multipartFile 文件
* @return TemplateModel
*/
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@CrossOrigin
@ApiOperation(httpMethod = "POST", value = "根据sequenceNbr导入content", notes = "根据sequenceNbr导入content")
@PostMapping(value = "/import")
public ResponseModel<TemplateModel> importTpl(@RequestParam("file") MultipartFile multipartFile) throws IOException {
return ResponseHelper.buildResponse(templateService.createWithModel(templateService.fileToTpl(multipartFile)));
}
}
package com.yeejoin.amos.api.tool.enums;
/**
* 数据来源枚举
*/
public enum SourceEnum {
IDX("idx", "指标系统");
String source;
String desc;
SourceEnum(String source, String desc) {
this.source = source;
this.desc = desc;
}
public String getSource() {
return source;
}
public void setSource(String source) {
this.source = source;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
}
package com.yeejoin.amos.api.tool.face.annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* 需要加解密的字段用这个注解
* @author lima
* @date 2023/3/3 17:29
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface Encrypted {
}
\ No newline at end of file
package com.yeejoin.amos.api.tool.face.annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* 带有敏感字段的类需要加这个注解
* @author lima
* @date 2023/3/6 16:18
*/
@Inherited
@Target({ ElementType.TYPE })
@Retention(RetentionPolicy.RUNTIME)
public @interface SensitiveData {
}
\ No newline at end of file
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.model.BaseModel;
/**
* @author r
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "DataBaseLinkModel", description = "")
public class AgencyTreeModel extends BaseModel {
@ApiModelProperty(value = "机构名称")
private String agencyName;
@ApiModelProperty(value = "机构编码")
private String agencyCode;
@ApiModelProperty(value = "机构描述")
private String agencyDesc;
}
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.model.BaseModel;
import java.util.Date;
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "ApiInfoModel", description = "")
public class ApiInfoModel extends BaseModel {
@ApiModelProperty(value = "接口来源")
private String apiSource;
@ApiModelProperty(value = "接口名称")
private String apiName;
@ApiModelProperty(value = "接口方法")
private String httpMethod;
@ApiModelProperty(value = "接口地址")
private String apiPath;
@ApiModelProperty(value = "响应方式")
private String resType;
@ApiModelProperty(value = "请求参数配置")
private String bodyValue;
@ApiModelProperty(value = "解析规则配置")
private String ruleData;
}
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.model.BaseModel;
import java.util.Date;
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value="ApiSourceModel", description="")
public class ApiSourceModel extends BaseModel {
@ApiModelProperty(value = "接口来源名称")
private String name;
@ApiModelProperty(value = "接口标识")
private String code;
}
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 lombok.NoArgsConstructor;
import org.typroject.tyboot.core.rdbms.model.BaseModel;
/**
* @author r
*/
@EqualsAndHashCode(callSuper = true)
@Data
@NoArgsConstructor
@ApiModel(value = "DataBaseLinkModel", description = "")
public class DataBaseLinkModel extends BaseModel {
@ApiModelProperty(value = "数据名称")
private String dataName = "";
@ApiModelProperty(value = "主机IP")
private String ip;
@ApiModelProperty(value = "端口")
private String port;
@ApiModelProperty(value = "数据库名")
private String dbName = "";
@ApiModelProperty(value = "用户名")
private String userName;
@ApiModelProperty(value = "密码")
private String passWord;
public DataBaseLinkModel(String dataName, String ip, String port, String dbName, String userName, String passWord) {
this.dataName = dataName;
this.ip = ip;
this.port = port;
this.dbName = dbName;
this.userName = userName;
this.passWord = passWord;
}
}
package com.yeejoin.amos.api.tool.face.model;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class PictureModel {
@ApiModelProperty(value = "图片名称")
private String name;
@ApiModelProperty(value = "图片UID")
private String uid;
@ApiModelProperty(value = "图片url")
private String url;
@ApiModelProperty(value = "图片状态")
private String status;
}
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.model.BaseModel;
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "RelationModel", description = "")
public class RelationModel extends BaseModel {
@ApiModelProperty(value = "父表名称")
private String parentName;
@ApiModelProperty(value = "父表字段")
private String parentField;
@ApiModelProperty(value = "表名称")
private String name;
@ApiModelProperty(value = "表字段")
private String field;
}
package com.yeejoin.amos.api.tool.face.model;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import sun.reflect.generics.tree.Tree;
import java.util.ArrayList;
import java.util.List;
import java.util.TreeMap;
@Data
@NoArgsConstructor
@ApiModel(value = "RelationTreeModel", description = "")
public class RelationTreeModel {
@ApiModelProperty(value = "表名称")
private String name;
@ApiModelProperty(value = "表字段")
private String field;
@ApiModelProperty(value = "前表关联字段")
private String parentField;
@ApiModelProperty(value = "父表名")
private String parentName;
@ApiModelProperty(value = "子节点")
private List<RelationTreeModel> children = new ArrayList<>();
public RelationTreeModel(String name, String field,String parentField ) {
this.name = name;
this.field = field;
this.parentField = parentField;
}
}
package com.yeejoin.amos.api.tool.face.model;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity;
/**
* <p>
*
* </p>
*
* @author 子杨
* @since 2022-08-16
*/
@EqualsAndHashCode(callSuper = true)
@Data
@TableName("studio_resource")
public class StudioResource extends BaseEntity {
/**
* 资源编码
*/
@TableField("RESOURCE_CODE")
private String resourceCode;
/**
* 资源名称
*/
@TableField("RESOURCE_NAME")
private String resourceName;
// @TableField("RESOURCE_TABLE")
// private String resourceTable;
/**
* 资源参数
*/
@TableField("RESOURCE_PARAMS")
private String resourceParams;
/**
* 删除资源sql
*/
@TableField("RESOURCE_DELETE_SQL")
private String resourceDeleteSql;
/**
* 插入资源sql
*/
@TableField("RESOURCE_INSERT_SQL")
private String resourceInsertSql;
}
package com.yeejoin.amos.api.tool.face.model;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.typroject.tyboot.core.rdbms.model.BaseModel;
/**
* <p>
*
* </p>
*
* @author 子杨
* @since 2022-08-16
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class StudioResourceModel extends BaseModel {
/**
* 资源编码
*/
private String resourceCode;
/**
* 资源名称
*/
private String resourceName;
// private String resourceTable;
/**
* 资源参数
*/
private String resourceParams;
/**
* 删除资源sql
*/
private String resourceDeleteSql;
/**
* 插入资源sql
*/
private String resourceInsertSql;
}
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.model.BaseModel;
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value="TemplateCategoryModel", description="")
public class TemplateCategoryModel extends BaseModel {
@ApiModelProperty(value = "模板分类名称")
private String cateName;
@ApiModelProperty(value = "模板类型")
private String tplType;
@ApiModelProperty(value = "所用设计器类型")
private String designerType;
@ApiModelProperty(value = "图标路径")
private String icon = "";
@ApiModelProperty(value = "是否删除")
private Boolean isDel = false;
}
package com.yeejoin.amos.api.tool.face.model;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.ArrayList;
import java.util.List;
@Data
@NoArgsConstructor
@ApiModel(value="TemplateCategoryTreeModel", description="")
public class TemplateCategoryTreeModel {
@ApiModelProperty(value = "物理主键")
private Long sequenceNbr;
@ApiModelProperty(value = "父ID")
private Long parentId = 0L;
@ApiModelProperty(value = "名称")
private String name;
@ApiModelProperty(value = "设计器类型")
private String designerType = "";
@ApiModelProperty(value = "子列表")
private List<TemplateCategoryTreeModel> children = new ArrayList<>();
public void setParentId(Long parentId) {
this.parentId = parentId;
}
public TemplateCategoryTreeModel(Long sequenceNb, Long parentId, String name, String designerType){
this.sequenceNbr =sequenceNb ;
this.parentId = parentId;
this.name = name;
this.designerType =designerType;
}
public TemplateCategoryTreeModel(Long sequenceNb, Long parentId, String name, String designerType,
List<TemplateCategoryTreeModel> children){
this.sequenceNbr =sequenceNb ;
this.parentId = parentId;
this.name = name;
this.designerType =designerType;
this.children = children;
}
}
package com.yeejoin.amos.api.tool.face.model;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.typroject.tyboot.core.rdbms.model.BaseModel;
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@TableName(autoResultMap = true)
@ApiModel(value="TemplateModel", description="")
public class TemplateModel extends BaseModel {
@ApiModelProperty(value = "展示名称")
protected String displayName = "";
@ApiModelProperty(value = "模板标识")
protected String comKey = "";
@ApiModelProperty(value = "模板名称")
protected String comName = "";
@ApiModelProperty(value = "模板内容")
@TableField(typeHandler = JacksonTypeHandler.class)
protected JSONObject content;
@ApiModelProperty(value = "分类ID")
protected Long cateSeq;
@ApiModelProperty(value = "模板状态")
protected Boolean openStatus = false;
@ApiModelProperty(value = "缩略图")
protected String thumb;
@ApiModelProperty(value = "效果图")
protected String sketch;
@ApiModelProperty(value = "是否删除")
protected Boolean isDel = false;
public void setThumb(String thumb) {
this.thumb = thumb ;
}
public void setSketch(String sketch) {
this.sketch = sketch;
}
public TemplateModel(JSONObject content, Long cateSeq) {
this.content = content;
this.cateSeq = cateSeq;
}
}
package com.yeejoin.amos.api.tool.face.model;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import java.util.ArrayList;
import java.util.List;
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@ApiModel(value="TemplateVoModel", description="")
@JsonIgnoreProperties({"hibernateLazyInitializer","handler"})
public class TemplateVoModel extends TemplateModel {
@ApiModelProperty(value = "模板内容")
private String contentStr;
@ApiModelProperty(value = "缩略图")
private List<PictureModel> thumbs = new ArrayList<>();
@ApiModelProperty(value = "效果图")
private List<PictureModel> sketches = new ArrayList<>();
public void setIsDel(Boolean isDel) {
this.isDel = isDel;
}
public String getComName() {
return comName;
}
public void setDisplayName(String displayName) {
this.displayName = displayName;
}
}
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.model.BaseModel;
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value="VisualDesignerModel", description="")
public class VisualDesignerModel extends BaseModel {
@ApiModelProperty(value = "设计器名称")
private String designerName;
@ApiModelProperty(value = "描述")
private String designerDesc;
@ApiModelProperty(value = "设计器类型")
private String designerType;
@ApiModelProperty(value = "图标路径")
private String icon;
public String getDesignerType() {
return 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.AgencyTree;
/**
* Mapper 接口
*
* @author r
*/
public interface AgencyTreeMapper extends BaseMapper<AgencyTree> {
}
package com.yeejoin.amos.api.tool.face.orm.dao;
import com.yeejoin.amos.api.tool.face.orm.entity.ApiInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
public interface ApiInfoMapper extends BaseMapper<ApiInfo>{
}
package com.yeejoin.amos.api.tool.face.orm.dao;
import com.yeejoin.amos.api.tool.face.orm.entity.ApiSource;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* Mapper 接口
*
* @author system_generator
* @date 2023-06-01
*/
public interface ApiSourceMapper extends BaseMapper<ApiSource>{
}
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.DataBaseLink;
import org.mapstruct.Mapper;
import org.springframework.stereotype.Repository;
/**
* Mapper 接口
*
* @author r
*/
@Mapper
@Repository
public interface DataBaseLinkMapper extends BaseMapper<DataBaseLink> {
}
package com.yeejoin.amos.api.tool.face.orm.dao;
import com.baomidou.mybatisplus.annotation.SqlParser;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yeejoin.amos.api.tool.face.orm.entity.Relation;
import com.yeejoin.amos.api.tool.face.service.RelationService;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.SelectProvider;
import org.mapstruct.Mapper;
import org.springframework.stereotype.Repository;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
@Mapper
@Repository
public interface RelationMapper extends BaseMapper<Relation> {
@SelectProvider(type = RelationService.class, method = "deleteDataBase")
@SqlParser(filter = true)
List<Relation> deleteDataBase(@Param("maps") List<HashMap<String,String>> maps);
@Select("${sqlStr}")
List<HashMap<String,String>> getPublicItems(@Param(value = "sqlStr") String sqlStr);
}
package com.yeejoin.amos.api.tool.face.orm.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yeejoin.amos.api.tool.face.model.StudioResource;
import com.yeejoin.amos.api.tool.face.orm.entity.TableColumn;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* <p>
* Mapper 接口
* </p>
*
* @author 子杨
* @since 2022-08-16
*/
public interface StudioResourceMapper extends BaseMapper<StudioResource> {
List<TableColumn> queryForListByTableName(@Param("tableName") String tableName);
}
\ No newline at end of file
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.TemplateCategory;
public interface TemplateCategoryMapper extends BaseMapper<TemplateCategory> {
}
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.Template;
public interface TemplateMapper extends BaseMapper<Template> {
}
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.VisualDesigner;
public interface VisualDesignerMapper extends BaseMapper<VisualDesigner> {
}
package com.yeejoin.amos.api.tool.face.orm.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* @author r
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("privilege_agency")
public class AgencyTree extends BaseEntity {
/**
*机构名称
*/
@TableField("AGENCY_NAME")
private String agencyName;
/**
*机构编码
*/
@TableField("AGENCY_CODE")
private String agencyCode;
/**
*机构描述
*/
@TableField("AGENCY_DESC")
private String agencyDesc;
}
package com.yeejoin.amos.api.tool.face.orm.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("studio_data_api")
public class ApiInfo extends BaseEntity{
/**
* 接口来源
*/
@TableField("api_source")
private String apiSource;
/**
* 接口名称
*/
@TableField("api_name")
private String apiName;
/**
* 接口方法
*/
@TableField("http_method")
private String httpMethod;
/**
* 接口地址
*/
@TableField("api_path")
private String apiPath;
/**
* 响应方式
*/
@TableField("res_type")
private String resType;
/**
* 请求参数配置
*/
@TableField("body_value")
private String bodyValue;
/**
* 解析规则配置
*/
@TableField("rule_data")
private String ruleData;
}
package com.yeejoin.amos.api.tool.face.orm.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("studio_data_api_category")
public class ApiSource extends BaseEntity {
/**
* 接口来源名称
*/
@TableField("name")
private String name;
/**
* 接口标识
*/
@TableField("code")
private String code;
}
package com.yeejoin.amos.api.tool.face.orm.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;
import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* @author r
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("database_link")
public class DataBaseLink extends BaseEntity {
/**
*数据名称
*/
@TableField("dataName")
private String dataName;
/**
*主机IP
*/
@TableField("ip")
private String ip;
/**
*端口
*/
@TableField("port")
private String port;
/**
*数据库名
*/
@TableField("dbName")
private String dbName;
/**
*用户名
*/
@TableField("userName")
private String userName;
/**
*密码
*/
@TableField("passWord")
private String passWord;
}
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;
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("relation")
public class Relation extends BaseEntity {
/**
* 表1
*/
@TableField("table1")
private String parentName;
/**
* 表1 字段
*/
@TableField("table1_field")
private String parentField;
/**
* 表2
*/
@TableField("table2")
private String name;
/**
* 表2 字段
*/
@TableField("table2_field")
private String field;
}
package com.yeejoin.amos.api.tool.face.orm.entity;
import lombok.Data;
@Data
public class TableColumn {
private String columnName;
private Boolean isRequired;
private Boolean isPk;
private int sort;
private String columnComment;
private Boolean isIncrement;
private String columnType;
}
package com.yeejoin.amos.api.tool.face.orm.entity;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.annotation.SqlCondition;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity;
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName(value = "studio_template",autoResultMap = true)
public class Template extends BaseEntity {
/**
*展示名称
*/
@TableField(value = "DISPLAY_NAME",condition = SqlCondition.LIKE)
private String displayName;
/**
*模板标识
*/
@TableField("COMPONENT_KEY")
private String comKey;
/**
*模板名称
*/
@TableField("COMPONENT_NAME")
private String comName;
/**
*模板内容
*/
@TableField(value = "CONTENT",typeHandler = JacksonTypeHandler.class)
private JSONObject content;
/**
*分类ID
*/
@TableField("CATEGORY_SEQ")
private Long cateSeq;
/**
*模板状态
*/
@TableField("OPEN_STATUS")
private Boolean openStatus;
/**
*缩略图
*/
@TableField("THUMB")
private String thumb;
/**
*状态图
*/
@TableField("SKETCH")
private String sketch;
/**
*是否删除
*/
@TableField("IS_DELETE")
private Boolean isDel;
}
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;
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("studio_template_category")
public class TemplateCategory extends BaseEntity {
/**
*分类名称
*/
@TableField("CATEGORY_NAME")
private String cateName;
/**
*模板类型
*/
@TableField("TEMP_TYPE")
private String tplType;
/**
*所属设计器类型
*/
@TableField("DESIGNER_TYPE")
private String designerType;
/**
*图标路径
*/
@TableField("ICON")
private String icon;
/**
*是否删除
*/
@TableField("IS_DELETE")
private Boolean isDel;
}
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;
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("studio_visual_designer")
public class VisualDesigner extends BaseEntity {
/**
* 设计器名称
*/
@TableField("DESIGNER_NAME")
private String designerName;
/**
* 描述
*/
@TableField("DESIGNER_DESC")
private String designerDesc;
/**
* 设计器类型
*/
@TableField("DESIGNER_TYPE")
private String designerType;
/**
* 图标路径
*/
@TableField("ICON")
private String icon;
}
package com.yeejoin.amos.api.tool.face.service;
import com.yeejoin.amos.api.tool.face.model.AgencyTreeModel;
import com.yeejoin.amos.api.tool.face.orm.dao.AgencyTreeMapper;
import com.yeejoin.amos.api.tool.face.orm.entity.AgencyTree;
import org.springframework.stereotype.Service;
import org.typroject.tyboot.core.rdbms.service.BaseService;
import java.util.List;
/**
* 服务实现类
*
* @author r
*/
@Service
public class AgencyTreeService extends BaseService<AgencyTreeModel, AgencyTree, AgencyTreeMapper> {
/**
* 列表查询
*/
public List<AgencyTreeModel> queryForAgencyTreeList() {
return this.queryForList("" , false);
}
public String queryForAgencyCodeById(Long id){
return queryBySeq(id).getAgencyCode();
}
}
......@@ -31,7 +31,7 @@ public class AmosDemoService extends BaseService<AmosDemoModel,AmosDemo,AmosDemo
}
/**
* 列表查询 示例
* 列表查询
*/
public List<AmosDemoModel> queryForAmosDemoList(String agencyCode) {
return this.queryForList("" , false, agencyCode);
......
package com.yeejoin.amos.api.tool.face.service;
import com.yeejoin.amos.api.tool.face.orm.entity.ApiInfo;
import com.yeejoin.amos.api.tool.face.orm.dao.ApiInfoMapper;
import com.yeejoin.amos.api.tool.face.model.ApiInfoModel;
import org.springframework.beans.factory.annotation.Autowired;
import org.typroject.tyboot.core.rdbms.service.BaseService;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import java.util.ArrayList;
import java.util.List;
@Service
public class ApiInfoService extends BaseService<ApiInfoModel,ApiInfo,ApiInfoMapper> {
/**
* 分页查询
*/
public Page<ApiInfoModel> queryForApiInfoPage(Page<ApiInfoModel> page,String apiSource ,String apiName) {
return this.queryForPage(page ,null ,false ,apiSource ,apiName);
}
/**
* 列表查询
*/
public List<ApiInfoModel> queryForApiInfoList() {
return this.queryForList("" , false);
}
/**
* 根据来源获取Api列表
*/
public List<ApiInfoModel> selectByApiSource(String apiSource) {
return this.queryForList("" , false,apiSource);
}
/**
* 根据来源获取Api列表主键
*/
public List<String> selectSeqByApiSource(String apiSource) {
List<String> sequenceNbrs = new ArrayList<>();
for(ApiInfoModel model : this.selectByApiSource(apiSource)){
sequenceNbrs.add(Long.toString(model.getSequenceNbr()));
}
return sequenceNbrs;
}
}
package com.yeejoin.amos.api.tool.face.service;
import com.yeejoin.amos.api.tool.face.model.ApiInfoModel;
import com.yeejoin.amos.api.tool.face.model.ApiSourceModel;
import com.yeejoin.amos.api.tool.face.orm.entity.ApiSource;
import com.yeejoin.amos.api.tool.face.orm.dao.ApiSourceMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.typroject.tyboot.core.rdbms.service.BaseService;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class ApiSourceService extends BaseService<ApiSourceModel, ApiSource, ApiSourceMapper> {
@Autowired
private ApiInfoService apiInfoService;
/**
* 列表查询
*/
public List<ApiSourceModel> queryForApiSourceList() {
return this.queryForList("", false);
}
/**
* 根据机构ID获取机构编码
*/
public String queryCodeById(Long sequenceNbr){
ApiSourceModel model = this.queryModelByParams(sequenceNbr);
return model.getCode();
}
/**
* 通过API来源ID删除API来源
*/
public Boolean deleteById(Long sequenceNbr){
List<String> strings = apiInfoService.selectSeqByApiSource(this.queryCodeById(sequenceNbr));
if(strings.size() != 0) {
this.removeByIds(strings);
}
return this.removeById(sequenceNbr);
}
}
package com.yeejoin.amos.api.tool.face.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.api.tool.face.model.DataBaseLinkModel;
import com.yeejoin.amos.api.tool.face.orm.dao.DataBaseLinkMapper;
import com.yeejoin.amos.api.tool.face.orm.entity.DataBaseLink;
import com.yeejoin.amos.api.tool.utils.AESUtils;
import org.apache.commons.beanutils.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.typroject.tyboot.core.rdbms.service.BaseService;
import java.sql.*;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
/**
* 服务实现类
*
* @author r
*/
@Service
public class DataBaseLinkService extends BaseService<DataBaseLinkModel, DataBaseLink, DataBaseLinkMapper> {
@Autowired
private DataBaseLinkMapper dataBaseLinkMapper;
/**
* 分页查询
*/
public Page<DataBaseLinkModel> queryForDataBasePage(Page<DataBaseLinkModel> page) {
return this.queryForPage(page, null, false);
}
/**
* 列表查询
*/
public List<DataBaseLinkModel> queryForDataBaseList() {
return this.queryForList("", false);
}
/**
* 获取数据库名称
*/
public String[] getDataBaseName(Connection connection) throws SQLException {
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery("SHOW DATABASES");
String[] result = new String[1000];
int count = 0;
while (rs.next()) {
result[count++] = rs.getString(1);
}
return result;
}
/**
* 初始化数据库连接表
*/
public List<DataBaseLinkModel> refreshDataBase(DataBaseLinkModel dataBaseLinkModel) throws Exception {
//清空表单
this.remove(new QueryWrapper<>());
//连接数据库
Connection connection = this.connectNewDatabase(dataBaseLinkModel);
if (connection == null)
return null;
List<DataBaseLinkModel> dataBaseLinkModels = new ArrayList<>();
Collection<DataBaseLink> dataBaseLinks = new ArrayList<>();
for (String name : this.getDataBaseName(connection)) {
if (name == null)
break;
DataBaseLinkModel model = new DataBaseLinkModel();
BeanUtils.copyProperties(model, dataBaseLinkModel);
model.setDbName(name);
model.setDataName(name);
dataBaseLinkModels.add(model);
dataBaseLinks.add(this.prepareEntity(model));
}
this.saveBatch(dataBaseLinks);
connection.close();
return dataBaseLinkModels;
}
/**
* 连接数据库
*/
public Connection connectNewDatabase(DataBaseLinkModel model) throws Exception {
// 加载数据库驱动
Class.forName("com.mysql.cj.jdbc.Driver");
// 连接新增的数据库
String dbUrl = "jdbc:mysql://" + model.getIp() + ":" + model.getPort() + "/" + model.getDbName();
// 解密pwd,并连接
return DriverManager.getConnection(dbUrl, model.getUserName(),AESUtils.decrypt(model.getPassWord()));
}
/**
* 加密model里的密码
*/
public DataBaseLinkModel encryptPwd(DataBaseLinkModel model) throws Exception {
model.setPassWord(AESUtils.encrypt(model.getPassWord()));
return model;
}
}
package com.yeejoin.amos.api.tool.face.service;
import com.yeejoin.amos.api.tool.face.model.TemplateCategoryModel;
import com.yeejoin.amos.api.tool.face.model.TemplateCategoryTreeModel;
import com.yeejoin.amos.api.tool.face.model.TemplateModel;
import com.yeejoin.amos.api.tool.face.orm.dao.TemplateCategoryMapper;
import com.yeejoin.amos.api.tool.face.orm.entity.TemplateCategory;
import org.springframework.beans.factory.annotation.Autowired;
import org.typroject.tyboot.core.foundation.utils.StringUtil;
import org.typroject.tyboot.core.rdbms.service.BaseService;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@Service
public class TemplateCategoryService extends BaseService<TemplateCategoryModel, TemplateCategory, TemplateCategoryMapper> {
@Autowired
private VisualDesignerService visualDesignerService;
@Autowired
private TemplateService templateService;
/**
* 列表查询
*/
public List<TemplateCategoryModel> queryForTplCateList() {
return this.queryForList("", false);
}
/**
* 通过模板分类ID删除模板分类
*/
public Boolean deleteById(Long sequenceNbr){
List<String> strings = templateService.selectSeqsByCategorySeq(sequenceNbr);
if(strings.size() != 0) {
this.removeByIds(strings);
}
return this.removeById(sequenceNbr);
}
/**
* 模板分类表单数据转化为树形节点
*/
public List<TemplateCategoryTreeModel> tplCateToNode(List<TemplateCategoryModel> templateCategoryModels){
List<TemplateCategoryTreeModel> nodes = new ArrayList<>();
for (TemplateCategoryModel model : templateCategoryModels){
TemplateCategoryTreeModel node = new TemplateCategoryTreeModel();
node.setName(model.getCateName());
node.setSequenceNbr(model.getSequenceNbr());
node.setParentId(1L);
node.setDesignerType(model.getDesignerType());
nodes.add(node);
}
return nodes;
}
/**
* 获得模板分类树
*/
public List<TemplateCategoryTreeModel> getTree() {
List<TemplateCategoryTreeModel> nodes = this.tplCateToNode(this.queryForTplCateList());
nodes.addAll(visualDesignerService.VisualDesignerToNode(visualDesignerService.queryForVisualDesignerList()));
return getChildren(nodes, "", 0L);
}
/**
* 获得模板分类子节点(递归)
*/
public List<TemplateCategoryTreeModel> getChildren(List<TemplateCategoryTreeModel> nodes, String parent, Long id){
List<TemplateCategoryTreeModel> tree = new ArrayList<>();
for (TemplateCategoryTreeModel node : nodes){
if(node.getParentId() == 0L && parent.equals("")){
node.setChildren(getChildren(nodes, node.getDesignerType(), node.getSequenceNbr()));
tree.add(node);
}
else {
if (parent.equals(node.getDesignerType()) && node.getParentId() != 0L) {
node.setParentId(id);
tree.add(node);
}
}
}
return tree;
}
}
package com.yeejoin.amos.api.tool.face.service;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.api.tool.face.model.PictureModel;
import com.yeejoin.amos.api.tool.face.model.TemplateModel;
import com.yeejoin.amos.api.tool.face.model.TemplateVoModel;
import com.yeejoin.amos.api.tool.face.orm.dao.TemplateMapper;
import com.yeejoin.amos.api.tool.face.orm.entity.Template;
import com.yeejoin.amos.api.tool.utils.ConvertUtil;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import org.typroject.tyboot.core.foundation.utils.StringUtil;
import org.typroject.tyboot.core.rdbms.service.BaseService;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.UUID;
@Service
public class TemplateService extends BaseService<TemplateModel, Template, TemplateMapper> {
/**
* 分页查询
*/
public Page<TemplateModel> queryForTplPage(Page<TemplateModel> page, Long categorySeq, String displayName) {
return this.queryForPage(page, null, false, categorySeq, displayName);
}
/**
* 列表查询
*/
public List<TemplateModel> queryForTplListByCategorySeq(Long categorySeq) {
return this.queryForList("", false, categorySeq);
}
/**
* 根据模板分类ID获取模板sequenceNb's
*/
public List<String> selectSeqsByCategorySeq(Long categorySeq){
List<String> strings = new ArrayList<>();
for (TemplateModel model : this.queryForTplListByCategorySeq(categorySeq)){
strings.add(Long.toString(model.getSequenceNbr()));
}
return strings;
}
/**
* 列表查询
*/
public List<TemplateModel> queryForTplList() {
return this.queryForList("", false);
}
/**
* 根据sequenceNbr获取模板并转化为VO
*/
public TemplateVoModel queryForTplVo(Long sequenceNbr){
TemplateModel templateModel = this.queryBySeq(sequenceNbr);
TemplateVoModel templateVoModel = this.convertVoModel(templateModel);
if (templateModel.getContent() != null) {
templateVoModel.setContentStr(templateModel.getContent().toString());
}
return templateVoModel;
}
/**
* TplVoModel转化TplModel
*/
public TemplateModel convertModel(TemplateVoModel tplVoModel) throws NoSuchFieldException, IllegalAccessException {
TemplateModel templateModel = new TemplateModel();
BeanUtils.copyProperties(tplVoModel, templateModel, "thumbs", "sketches", "contentStr");
//判定thumbs为空
if (tplVoModel.getThumbs().size() != 0) {
templateModel.setThumb(ConvertUtil.objectListToUrl(tplVoModel.getThumbs()));
}
//判定sketch为空
if (tplVoModel.getSketches().size() != 0) {
templateModel.setSketch(ConvertUtil.objectListToUrl(tplVoModel.getSketches()));
}
templateModel.setContent(JSON.parseObject(tplVoModel.getContentStr()));
return templateModel;
}
/**
* 读取json文件
*/
public String readMultipartFile(MultipartFile multipartFile) throws IOException {
Reader reader = new InputStreamReader(multipartFile.getInputStream(), "utf-8");
int ch = 0;
StringBuffer stringBuffer = new StringBuffer();
while ((ch = reader.read()) != -1) {
stringBuffer.append((char) ch);
}
reader.close();
return stringBuffer.toString();
}
/**
* 通过json文件建立空白模板
*/
public TemplateModel fileToTpl(MultipartFile multipartFile) throws IOException {
JSONObject content = JSON.parseObject(this.readMultipartFile(multipartFile));
String str = "1668429235251548162";
return new TemplateModel(content, Long.parseLong(str));
}
/**
* model转化VO
*/
public TemplateVoModel convertVoModel(TemplateModel templateModel){
TemplateVoModel tplVoModel = new TemplateVoModel();
BeanUtils.copyProperties(templateModel, tplVoModel);
if(templateModel.getSketch() != null)
tplVoModel.setSketches(this.urlToPicModel(templateModel.getSketch()));
if (templateModel.getThumb() != null)
tplVoModel.setThumbs(this.urlToPicModel(templateModel.getThumb()));
System.out.println(tplVoModel.getThumbs());
return tplVoModel;
}
/**
* 生成随机UID
*/
public String getUid(){
UUID uuid= UUID.randomUUID();
String str = uuid.toString();
return str.replace("-", "");
}
/**
* url转化图片
*/
public List<PictureModel> urlToPicModel(String url){
List<PictureModel> pictureModels = new ArrayList<>();
PictureModel pictureModel = new PictureModel("", this.getUid(), url, "done");
pictureModels.add(pictureModel);
return pictureModels;
}
}
package com.yeejoin.amos.api.tool.face.service;
import com.yeejoin.amos.api.tool.face.model.TemplateCategoryTreeModel;
import com.yeejoin.amos.api.tool.face.model.VisualDesignerModel;
import com.yeejoin.amos.api.tool.face.orm.dao.VisualDesignerMapper;
import com.yeejoin.amos.api.tool.face.orm.entity.VisualDesigner;
import org.springframework.stereotype.Service;
import org.typroject.tyboot.core.rdbms.service.BaseService;
import java.util.ArrayList;
import java.util.List;
@Service
public class VisualDesignerService extends BaseService<VisualDesignerModel, VisualDesigner, VisualDesignerMapper> {
/**
* 列表查询
*/
// 父List
public List<VisualDesignerModel> queryForVisualDesignerList() {
return this.queryForList("", false);
}
/**
* 设计器表单数据转化为树形节点
*/
public List<TemplateCategoryTreeModel> VisualDesignerToNode (List<VisualDesignerModel> visualDesignerModels){
List<TemplateCategoryTreeModel> nodes = new ArrayList<>();
for (VisualDesignerModel model : visualDesignerModels){
TemplateCategoryTreeModel node = new TemplateCategoryTreeModel();
node.setSequenceNbr(model.getSequenceNbr());
node.setName(model.getDesignerName());
node.setDesignerType(model.getDesignerType());
nodes.add(node);
}
return nodes;
}
}
\ No newline at end of file
package com.yeejoin.amos.api.tool.utils;
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import java.util.Base64;
/**
* 加解密工具类
* @author lima
* @date 2023/3/3 16:56
*/
public class AESUtils {
private static final String ALGORITHM = "AES";
private static final String SECRET_KEY = "aes-key-lima1995"; // 密钥
/**
* 加密
*/
public static String encrypt(String value) throws Exception {
SecretKeySpec keySpec = new SecretKeySpec(SECRET_KEY.getBytes(), ALGORITHM);
Cipher cipher = Cipher.getInstance(ALGORITHM);
cipher.init(Cipher.ENCRYPT_MODE, keySpec);
byte[] encrypted = cipher.doFinal(value.getBytes());
return Base64.getEncoder().encodeToString(encrypted);
}
/**
* 解密
*/
public static String decrypt(String value) throws Exception {
SecretKeySpec keySpec = new SecretKeySpec(SECRET_KEY.getBytes(), ALGORITHM);
Cipher cipher = Cipher.getInstance(ALGORITHM);
cipher.init(Cipher.DECRYPT_MODE, keySpec);
byte[] decoded = Base64.getDecoder().decode(value);
byte[] decrypted = cipher.doFinal(decoded);
return new String(decrypted);
}
}
\ No newline at end of file
package com.yeejoin.amos.api.tool.utils;
import org.apache.commons.beanutils.ConvertUtils;
import java.lang.reflect.Field;
import java.util.List;
public class ConvertUtil {
/**
* 图像对象列表提取url
*/
public static <Object> String objectListToUrl(List<Object> objectList) throws IllegalAccessException, NoSuchFieldException {
if (objectList.isEmpty()) {
return null;
}
System.out.println(objectList.get(0));
Class<?> cla = objectList.get(0).getClass();
Field field = cla.getDeclaredField("url");
field.setAccessible(true);
return field.get(objectList.get(0)).toString();
}
}
This diff is collapsed.
package com.yeejoin.amos.api.tool.utils;
import org.apache.ibatis.mapping.BoundSql;
import org.apache.ibatis.mapping.MappedStatement;
import org.apache.ibatis.mapping.ParameterMapping;
import org.apache.ibatis.mapping.ParameterMode;
import org.apache.ibatis.reflection.MetaObject;
import org.apache.ibatis.reflection.factory.DefaultObjectFactory;
import org.apache.ibatis.reflection.factory.ObjectFactory;
import org.apache.ibatis.reflection.wrapper.DefaultObjectWrapperFactory;
import org.apache.ibatis.reflection.wrapper.ObjectWrapperFactory;
import org.apache.ibatis.session.Configuration;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.type.JdbcType;
import org.apache.ibatis.type.TypeHandlerRegistry;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @Author: xl
* @Description:
* @Date: 2023/1/9 19:10
*/
@Component
public class SqlHelper {
@Autowired
private SqlSessionFactory sqlSessionFactory;
private final ObjectFactory DEFAULT_OBJECT_FACTORY = new DefaultObjectFactory();
private final ObjectWrapperFactory DEFAULT_OBJECT_WRAPPER_FACTORY = new DefaultObjectWrapperFactory();
/**
* 通过命名空间方式获取sql
*
* @param namespace
* @param params
* @return
*/
public String getNamespaceSql(String namespace, Object params) {
params = wrapCollection(params);
Configuration configuration = sqlSessionFactory.openSession().getConfiguration();
MappedStatement mappedStatement = configuration.getMappedStatement(namespace);
TypeHandlerRegistry typeHandlerRegistry = mappedStatement.getConfiguration().getTypeHandlerRegistry();
BoundSql boundSql = mappedStatement.getBoundSql(params);
List<ParameterMapping> parameterMappings = boundSql.getParameterMappings();
String sql = boundSql.getSql();
if (parameterMappings != null) {
for (int i = 0; i < parameterMappings.size(); i++) {
ParameterMapping parameterMapping = parameterMappings.get(i);
if (parameterMapping.getMode() != ParameterMode.OUT) {
Object value;
String propertyName = parameterMapping.getProperty();
if (boundSql.hasAdditionalParameter(propertyName)) {
value = boundSql.getAdditionalParameter(propertyName);
} else if (params == null) {
value = null;
} else if (typeHandlerRegistry.hasTypeHandler(params.getClass())) {
value = params;
} else {
MetaObject metaObject = configuration.newMetaObject(params);
value = metaObject.getValue(propertyName);
}
JdbcType jdbcType = parameterMapping.getJdbcType();
if (value == null && jdbcType == null)
jdbcType = configuration.getJdbcTypeForNull();
sql = replaceParameter(sql, value, jdbcType, parameterMapping.getJavaType());
}
}
}
return sql;
}
/**
* 根据类型替换参数
* 仅作为数字和字符串两种类型进行处理,需要特殊处理的可以继续完善这里
*
* @param sql
* @param value
* @param jdbcType
* @param javaType
* @return
*/
private String replaceParameter(String sql, Object value, JdbcType jdbcType, Class javaType) {
String strValue = String.valueOf(value);
if (jdbcType != null) {
switch (jdbcType) {
// 数字
case BIT:
case TINYINT:
case SMALLINT:
case INTEGER:
case BIGINT:
case FLOAT:
case REAL:
case DOUBLE:
case NUMERIC:
case DECIMAL:
break;
// 日期
case DATE:
case TIME:
case TIMESTAMP:
// 其他,包含字符串和其他特殊类型
default:
strValue = "'" + strValue + "'";
}
} else if (Number.class.isAssignableFrom(javaType)) {
// 不加单引号
} else {
strValue = "'" + strValue + "'";
}
return sql.replaceFirst("\\?", strValue);
}
/**
* 简单包装参数
*
* @param object
* @return
*/
private Object wrapCollection(final Object object) {
if (object instanceof List) {
Map<String, Object> map = new HashMap<String, Object>();
map.put("list", object);
return map;
} else if (object != null && object.getClass().isArray()) {
Map<String, Object> map = new HashMap<String, Object>();
map.put("array", object);
return map;
}
return object;
}
public void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory) {
this.sqlSessionFactory = sqlSessionFactory;
}
}
#DB properties:
# jdbc_config
#spring.datasource.url=jdbc:mysql://172.16.3.18:3306/amos_studio?allowMultiQueries=true
spring.datasource.url=jdbc:mysql://39.98.45.134:3306/amos_idx_biz?allowMultiQueries=true
spring.datasource.url=jdbc:mysql://39.98.45.134:3306/amos_tool_library_test?allowMultiQueries=true
spring.datasource.username=root
spring.datasource.password=Yeejoin@2020
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.type=com.zaxxer.hikari.HikariDataSource
spring.datasource.hikari.minimum-idle=3
spring.datasource.hikari.maximum-pool-size=5
spring.datasource.hikari.maximum-pool-size=10
spring.datasource.hikari.auto-commit=true
spring.datasource.hikari.idle-timeout=30000
spring.datasource.hikari.pool-name=DatebookHikariCP
......@@ -14,30 +14,44 @@ spring.datasource.hikari.max-lifetime=1800000
spring.datasource.hikari.connection-timeout=30000
spring.datasource.hikari.connection-test-query=SELECT 1
# REDIS (RedisProperties)
spring.redis.database=1
spring.redis.host=172.16.3.18
spring.redis.port=6379
spring.redis.password=yeejoin@2020
spring.redis.timeout=0
#注册中心地址
eureka.client.service-url.defaultZone=http://39.98.45.134:10001/eureka/
#??????
eureka.instance.hostname=39.98.45.134
eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:10001/eureka/
eureka.instance.prefer-ip-address=true
management.endpoints.web.exposure.include=*
eureka.instance.health-check-url=http://localhost:${server.port}${server.servlet.context-path}/actuator/health
eureka.instance.metadata-map.management.context-path=${server.servlet.context-path}/actuator
eureka.instance.status-page-url=http://localhost:${server.port}${server.servlet.context-path}/actuator/info
eureka.instance.metadata-map.management.api-docs=http://localhost:${server.port}${server.servlet.context-path}/doc.html
#redis
spring.redis.database=1
spring.redis.host=39.98.45.134
spring.redis.port=6379
spring.redis.password=yeejoin@2020
spring.redis.timeout=0
## emqx
emqx.clean-session=true
emqx.client-id=${spring.application.name}-${random.int[1024,65536]}
emqx.broker=tcp://39.98.45.134:2883
emqx.client-user-name=super
emqx.client-password=a123456
emqx.max-inflight=1000
emqx.keep-alive-interval=10
knife4j.production=false
knife4j.enable=true
knife4j.basic.enable=true
knife4j.basic.username=admin
knife4j.basic.password=a1234560
management.security.enabled=true
management.endpoint.health.show-details=always
spring.security.user.name=admin
spring.security.user.password=a1234560
spring.boot.admin.client.enabled=true
spring.boot.admin.client.instance.metadata.user.name=${spring.security.user.name}
spring.boot.admin.client.instance.metadata.user.password=${spring.security.user.password}
spring.boot.admin.client.username=admin
spring.boot.admin.client.password=a1234560
management.security.enabled=false
management.endpoint.health.show-details=always
management.endpoints.web.exposure.include=*
\ No newline at end of file
#DB properties:
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://172.16.3.67:3306/systemdeveloper?allowMultiQueries=true&serverTimezone=GMT%2B8&characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=root_123
#eureka properties:
eureka.instance.hostname=172.16.10.72
eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:10001/eureka/
eureka.instance.prefer-ip-address=true
eureka.instance.health-check-url=http://localhost:${server.port}${server.servlet.context-path}/actuator/health
eureka.instance.metadata-map.management.context-path=${server.servlet.context-path}/actuator
eureka.instance.status-page-url=http://localhost:${server.port}${server.servlet.context-path}/actuator/info
eureka.instance.metadata-map.management.api-docs=http://localhost:${server.port}${server.servlet.context-path}/swagger-ui.html
#redis
spring.redis.database=0
spring.redis.host=172.16.10.85
spring.redis.port=6379
spring.redis.password=amos2019Redis
spring.redis.lettuce.pool.max-active=200
spring.redis.lettuce.pool.max-wait=-1
spring.redis.lettuce.pool.max-idle=10
spring.redis.lettuce.pool.min-idle=0
spring.redis.expire.time=300
## emqx
emqx.clean-session=true
emqx.client-id=${spring.application.name}-${random.int[1024,65536]}
emqx.broker=tcp://172.16.10.85:1883
emqx.user-name=super
emqx.password=a123456
security.systemctl.name=AMOS-API-SYSTEMCTL
knife4j.production=false
knife4j.enable=true
knife4j.basic.enable=true
knife4j.basic.username=admin
knife4j.basic.password=a1234560
spring.security.user.name=admin
spring.security.user.password=a1234560
spring.boot.admin.client.enabled=true
spring.boot.admin.client.instance.metadata.user.name=${spring.security.user.name}
spring.boot.admin.client.instance.metadata.user.password=${spring.security.user.password}
spring.boot.admin.client.username=admin
spring.boot.admin.client.password=a1234560
management.security.enabled=false
management.endpoint.health.show-details=always
management.endpoints.web.exposure.include=*
\ No newline at end of file
spring.application.name=AMOS-API-TOOL
spring.application.name=AMOS-ATL
server.servlet.context-path=/atl
<<<<<<< HEAD
#server.servlet.context-path=/jcs
server.port=30002
#server.port=20000
=======
server.port=30201
server.servlet.context-path=/template
>>>>>>> 56d4a0ab360f8ce8f2fa01e2ecf68e745d42bc24
spring.profiles.active=dev
spring.jackson.dateFormat=yyyy-MM-dd HH:mm:ss
management.health.elasticsearch.enabled=false
spring.jackson.time-zone=GMT+8
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
logging.config=classpath:logback-${spring.profiles.active}.xml
#mybatis-plus\uFFFD\uFFFD\uFFFD\uFFFD\u05BE\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u02B9\uFFFD\uFFFDmybatis\uFFFD\u0123\uFFFD\uFFFD\uFFFD\uFFFD\u04B2\uFFFD\uFFFD\uFFFD
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
# mybatis-plus
mybatis-plus.mapper-locations=classpath*:mapper/*Mapper.xml
mybatis-plus.type-aliases-super-type=org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity
mybatis-plus.global-config.db-config.id-type=id_worker
mybatis-plus.global-config.db-config.logic-delete-field=is_delete
mybatis-plus.global-config.db-config.logic-delete-value=1
mybatis-plus.global-config.db-config.logic-not-delete-value=0
mybatis.interceptor.enabled=true
spring.datasource.type=com.zaxxer.hikari.HikariDataSource
spring.datasource.hikari.minimum-idle=10
spring.datasource.hikari.maximum-pool-size=25
spring.datasource.hikari.auto-commit=true
spring.datasource.hikari.idle-timeout=30000
spring.datasource.hikari.pool-name=DatebookHikariCP
spring.datasource.hikari.max-lifetime=120000
spring.datasource.hikari.connection-timeout=30000
spring.datasource.hikari.connection-test-query=SELECT 1
\ No newline at end of file
......@@ -16,10 +16,11 @@
<logger name="org.apache.activemq" level="INFO"/>
<logger name="org.springframework" level="DEBUG"/>
<logger name="com.yeejoin.amos" level="DEBUG"/>
<logger name="org.typroject" level="DEBUG"/>
<logger name="com.yeejoin" level="DEBUG"/>
<!-- 日志输出级别 -->
<root level="INFO">
<appender-ref ref="STDOUT" />
</root>
</configuration>
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">
<!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
<property name="LOG_HOME" value="log" />
<!-- 按照每天生成日志文件 -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--日志文件输出的文件名-->
<FileNamePattern>${LOG_HOME}/jcs.log.%d{yyyy-MM-dd}.log</FileNamePattern>
<!--日志文件保留天数-->
<MaxHistory>7</MaxHistory>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
</encoder>
<!--日志文件最大的大小-->
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<MaxFileSize>30mb</MaxFileSize>
</triggeringPolicy>
</appender>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
</encoder>
</appender>
<!--myibatis log configure-->
<logger name="com.apache.ibatis" level="INFO"/>
<logger name="org.mybatis" level="INFO" />
<logger name="java.sql.Connection" level="INFO"/>
<logger name="java.sql.Statement" level="INFO"/>
<logger name="java.sql.PreparedStatement" level="INFO"/>
<logger name="com.baomidou.mybatisplus" level="INFO"/>
<logger name="org.typroject" level="INFO"/>
<logger name="com.yeejoin" level="INFO"/>
<logger name="org.springframework" level="INFO"/>
<!-- 日志输出级别 -->
<root level="INFO">
<appender-ref ref="FILE" />
<appender-ref ref="STDOUT" />
</root>
</configuration>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yeejoin.amos.api.tool.face.orm.dao.AmosDemoMapper">
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yeejoin.amos.api.tool.face.orm.dao.StudioResourceMapper">
<select id="queryForListByTableName" resultType="com.yeejoin.amos.api.tool.face.orm.entity.TableColumn">
SELECT
column_name as columnName,
( CASE WHEN ( is_nullable = 'no' <![CDATA[ && ]]> column_key != 'PRI' ) THEN '1' ELSE NULL END ) AS isRequired,
( CASE WHEN column_key = 'PRI' THEN '1' ELSE '0' END ) AS isPk,
ordinal_position AS sort,
column_comment as columnComment,
( CASE WHEN extra = 'auto_increment' THEN '1' ELSE '0' END ) AS isIncrement,
column_type as columnType
FROM
information_schema.COLUMNS
WHERE
table_schema = database()
AND table_name = #{tableName}
ORDER BY
ordinal_position
</select>
</mapper>
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