Commit 65ea6ede authored by 陈祥烨's avatar 陈祥烨

last

parent d91caaef
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
<groupId>com.yeejoin.amos</groupId> <groupId>com.yeejoin.amos</groupId>
<artifactId>amos-api-tool</artifactId> <artifactId>amos-api-tool</artifactId>
<packaging>jar</packaging> <packaging>jar</packaging>
<version>1.9.0-SNAPSHOT</version> <version>1.0.0-SNAPSHOT</version>
<name>amos-api-tool</name> <name>amos-api-tool</name>
<description>amos-api-tool</description> <description>amos-api-tool</description>
...@@ -18,8 +18,14 @@ ...@@ -18,8 +18,14 @@
<dependencies> <dependencies>
<dependency> <dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId> <groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
<version>3.1.3</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
...@@ -31,6 +37,12 @@ ...@@ -31,6 +37,12 @@
<version>1.4.5.RELEASE</version> <version>1.4.5.RELEASE</version>
</dependency> </dependency>
<!--JSqlparser(高效的SQL解析工具)-->
<dependency>
<groupId>com.github.jsqlparser</groupId>
<artifactId>jsqlparser</artifactId>
<version>4.4</version>
</dependency>
<!-- easy-poi --> <!-- easy-poi -->
<dependency> <dependency>
...@@ -71,6 +83,11 @@ ...@@ -71,6 +83,11 @@
<artifactId>fastjson</artifactId> <artifactId>fastjson</artifactId>
<version>1.2.67_noneautotype2</version> <version>1.2.67_noneautotype2</version>
</dependency> </dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-text</artifactId>
<version>1.8</version>
</dependency>
<dependency> <dependency>
<groupId>org.typroject</groupId> <groupId>org.typroject</groupId>
...@@ -136,6 +153,17 @@ ...@@ -136,6 +153,17 @@
</exclusion> </exclusion>
</exclusions> </exclusions>
</dependency> </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> </dependencies>
<dependencyManagement> <dependencyManagement>
...@@ -212,7 +240,21 @@ ...@@ -212,7 +240,21 @@
<plugin> <plugin>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId> <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>
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId> <artifactId>maven-deploy-plugin</artifactId>
......
...@@ -29,6 +29,7 @@ public class AgencyTreeResource { ...@@ -29,6 +29,7 @@ public class AgencyTreeResource {
/** /**
* 根据sequenceNbr删除 * 根据sequenceNbr删除
* @param sequenceNbr 主键 * @param sequenceNbr 主键
* @return Boolean
*/ */
@TycloudOperation(ApiLevel = UserType.AGENCY,needAuth = false) @TycloudOperation(ApiLevel = UserType.AGENCY,needAuth = false)
@DeleteMapping(value = "/{sequenceNbr}") @DeleteMapping(value = "/{sequenceNbr}")
...@@ -40,12 +41,12 @@ public class AgencyTreeResource { ...@@ -40,12 +41,12 @@ public class AgencyTreeResource {
/** /**
*列表全部数据查询 *列表全部数据查询
* @return List<AgencyTreeModel>
*/ */
@TycloudOperation(ApiLevel = UserType.AGENCY,needAuth = false) @TycloudOperation(ApiLevel = UserType.AGENCY,needAuth = false)
@ApiOperation(httpMethod = "GET",value = "列表全部数据查询", notes = "列表全部数据查询") @ApiOperation(httpMethod = "GET",value = "列表全部数据查询", notes = "列表全部数据查询")
@GetMapping(value = "/list") @GetMapping(value = "/list")
public ResponseModel<List<AgencyTreeModel>> selectForList() public ResponseModel<List<AgencyTreeModel>> selectForList() {
{
return ResponseHelper.buildResponse(agencyTreeService.queryForAgencyTreeList()); return ResponseHelper.buildResponse(agencyTreeService.queryForAgencyTreeList());
} }
} }
package com.yeejoin.amos.api.tool.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.api.tool.face.model.AmosToolTemplateModel;
import com.yeejoin.amos.api.tool.face.model.AmosToolTemplateVoModel;
import com.yeejoin.amos.api.tool.face.model.ProjectModel;
import com.yeejoin.amos.api.tool.face.service.AmosToolTemplateService;
import com.yeejoin.amos.api.tool.utils.DataBaseUtils;
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.sql.SQLException;
import java.util.Arrays;
import java.util.List;
@CrossOrigin
@RestController
@RequestMapping(value = "/scene")
@Api(tags = "场景展示Api")
public class AmosToolTemplateController {
@Autowired
private AmosToolTemplateService amosToolTemplateService;
/**
* 添加单个记录
*/
@TycloudOperation(ApiLevel = UserType.SUPER_ADMIN, needAuth = false)
@PostMapping("/save")
@ApiOperation(value = "新增", notes = "新增")
public ResponseModel<AmosToolTemplateModel> create(@RequestBody AmosToolTemplateVoModel amosToolTplVoModel) throws NoSuchFieldException, IllegalAccessException {
return ResponseHelper.buildResponse(amosToolTemplateService.createWithModel(amosToolTemplateService.convertModel(amosToolTplVoModel)));
}
/**
* 根据 sequenceNbr 删除
*/
@TycloudOperation(ApiLevel = UserType.SUPER_ADMIN, needAuth = false)
@DeleteMapping("/{sequenceNbr}")
@ApiOperation(value = "删除")
public ResponseModel<Boolean> deleteById(@PathVariable(value = "sequenceNbr") Long sequenceNbr) {
return ResponseHelper.buildResponse(amosToolTemplateService.deleteBySeq(sequenceNbr));
}
/**
* 根据 sequenceNbr 批量删除
*/
@TycloudOperation(ApiLevel = UserType.SUPER_ADMIN, 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(amosToolTemplateService.removeByIds(Arrays.asList(StringUtil.string2Array(sequenceNbr))));
}
/**
* 根据 sequenceNbr 编辑单个记录
*/
@TycloudOperation(ApiLevel = UserType.SUPER_ADMIN, needAuth = false)
@ApiOperation(value = "编辑")
@RequestMapping(value = "/{sequenceNbr}", method = RequestMethod.PUT)
public ResponseModel<AmosToolTemplateModel> update(
@RequestBody AmosToolTemplateVoModel amosToolTplVoModel,
@PathVariable(value = "sequenceNbr") Long sequenceNbr) throws NoSuchFieldException, IllegalAccessException {
amosToolTplVoModel.setSequenceNbr(sequenceNbr);
return ResponseHelper.buildResponse(amosToolTemplateService.updateWithModel(amosToolTemplateService.convertModel(amosToolTplVoModel)));
}
/**
* 根据 sequenceNbr 查询单个记录
*/
@TycloudOperation(ApiLevel = UserType.SUPER_ADMIN, needAuth = false)
@ApiOperation(value = "查询单个对象")
@RequestMapping(value = "/{sequenceNbr}", method = RequestMethod.GET)
public ResponseModel<AmosToolTemplateVoModel> selectOne(@PathVariable Long sequenceNbr) {
return ResponseHelper.buildResponse(amosToolTemplateService.queryForTplVo(sequenceNbr));
}
/**
* 根据字段查询
*/
@TycloudOperation(ApiLevel = UserType.SUPER_ADMIN, needAuth = false)
@ApiOperation(value = "查询大全")
@PostMapping("/select/all")
public ResponseModel<List<AmosToolTemplateModel>> query(@RequestParam(value = "categoryScene") String categoryScene,
@RequestParam(value = "miniSences") String miniSences) {
return ResponseHelper.buildResponse(amosToolTemplateService.query(categoryScene, miniSences));
}
/**
* 列表所有记录
*/
@TycloudOperation(ApiLevel = UserType.SUPER_ADMIN, needAuth = false)
@ApiOperation("查询所有")
@GetMapping("/every")
public ResponseModel<List<AmosToolTemplateModel>> selectForList() {
return ResponseHelper.buildResponse(amosToolTemplateService.queryList());
}
/**
* 列表分页查询
*/
@TycloudOperation(ApiLevel = UserType.SUPER_ADMIN, needAuth = false)
@ApiOperation(value = "分页查询")
@GetMapping(value = "/page")
public ResponseModel<Page<AmosToolTemplateModel>> queryForPage(
@RequestParam(value = "current") int current,
@RequestParam(value = "size") int size) {
Page page = new Page();
page.setCurrent(current);
page.setSize(size);
return ResponseHelper.buildResponse(amosToolTemplateService.queryForAmosToolPage(page));
}
/**
* 点击后根据 sequenceNbr 查看次数加一
*/
@TycloudOperation(ApiLevel = UserType.SUPER_ADMIN, needAuth = false)
@ApiOperation(value = "点击查看次数加一")
@PutMapping("/update")
public ResponseModel<Boolean> updateById(@RequestParam(value = "templateId") Long sequenceNbr) {
return ResponseHelper.buildResponse(amosToolTemplateService.updateTimes(sequenceNbr));
}
}
package com.yeejoin.amos.api.tool.controller; package com.yeejoin.amos.api.tool.controller;
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 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.ApiInfoService;
import com.yeejoin.amos.api.tool.face.service.ApiSourceService; import com.yeejoin.amos.api.tool.face.service.ApiSourceService;
import org.typroject.tyboot.core.restful.utils.ResponseHelper; import io.swagger.annotations.Api;
import org.typroject.tyboot.core.restful.utils.ResponseModel; import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.api.tool.face.model.ApiInfoModel;
import org.typroject.tyboot.core.restful.doc.TycloudOperation;
import org.typroject.tyboot.core.foundation.enumeration.UserType; 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 @CrossOrigin
@RestController @RestController
@Api(tags = "接口管理Api") @Api(tags = "接口管理Api")
...@@ -23,18 +23,19 @@ import org.typroject.tyboot.core.foundation.enumeration.UserType; ...@@ -23,18 +23,19 @@ import org.typroject.tyboot.core.foundation.enumeration.UserType;
public class ApiInfoResource { public class ApiInfoResource {
@Autowired @Autowired
ApiInfoService apiInfoService; private ApiInfoService apiInfoService;
@Autowired @Autowired
ApiSourceService apiSourceService; private ApiSourceService apiSourceService;
/** /**
* 新增 * 新增
* @return * @param apiInfoModel API信息
* @return ApiInfoModel
*/ */
@TycloudOperation(ApiLevel = UserType.AGENCY,needAuth = false) @TycloudOperation(ApiLevel = UserType.AGENCY,needAuth = false)
@PostMapping(value = "/save") @PostMapping(value = "/save")
@ApiOperation(httpMethod = "POST", value = "新增", notes = "新增") @ApiOperation(httpMethod = "POST", value = "新增", notes = "新增")
public ResponseModel<ApiInfoModel> save(@RequestBody ApiInfoModel apiInfoModel) throws Exception { public ResponseModel<ApiInfoModel> save(@RequestBody ApiInfoModel apiInfoModel) {
apiInfoModel = apiInfoService.createWithModel(apiInfoModel); apiInfoModel = apiInfoService.createWithModel(apiInfoModel);
return ResponseHelper.buildResponse(apiInfoModel); return ResponseHelper.buildResponse(apiInfoModel);
} }
...@@ -42,7 +43,7 @@ public class ApiInfoResource { ...@@ -42,7 +43,7 @@ public class ApiInfoResource {
/** /**
* 根据sequenceNbr更新 * 根据sequenceNbr更新
* @param sequenceNbr 主键 * @param sequenceNbr 主键
* @return * @return ApiInfoModel
*/ */
@TycloudOperation(ApiLevel = UserType.AGENCY,needAuth = false) @TycloudOperation(ApiLevel = UserType.AGENCY,needAuth = false)
@PutMapping(value = "/{sequenceNbr}") @PutMapping(value = "/{sequenceNbr}")
...@@ -55,29 +56,31 @@ public class ApiInfoResource { ...@@ -55,29 +56,31 @@ public class ApiInfoResource {
/** /**
* 根据sequenceNbr删除 * 根据sequenceNbr删除
* @param sequenceNbr 主键 * @param sequenceNbr 主键
* @return * @return Boolean
*/ */
@TycloudOperation(ApiLevel = UserType.AGENCY,needAuth = false) @TycloudOperation(ApiLevel = UserType.AGENCY,needAuth = false)
@DeleteMapping(value = "/{sequenceNbr}") @DeleteMapping(value = "/{sequenceNbr}")
@ApiOperation(httpMethod = "DELETE", value = "根据sequenceNbr删除", notes = "根据sequenceNbr删除") @ApiOperation(httpMethod = "DELETE", value = "根据sequenceNbr删除", notes = "根据sequenceNbr删除")
public ResponseModel<Boolean> deleteBySequenceNbr(HttpServletRequest request, @PathVariable(value = "sequenceNbr") Long sequenceNbr){ public ResponseModel<Boolean> deleteBySequenceNbr(@PathVariable(value = "sequenceNbr") Long sequenceNbr){
return ResponseHelper.buildResponse(apiInfoService.removeById(sequenceNbr)); return ResponseHelper.buildResponse(apiInfoService.removeById(sequenceNbr));
} }
/** /**
* 根据sequenceNbr删除多项 * 根据sequenceNbr 批量删除
* @param sequenceNbr 主键 * @param sequenceNbr 主键
* @return * @return Boolean
*/ */
@TycloudOperation(ApiLevel = UserType.AGENCY,needAuth = false) @TycloudOperation(ApiLevel = UserType.AGENCY,needAuth = false)
@DeleteMapping(value = "/s/{sequenceNbr}") @DeleteMapping(value = "/delete/{sequenceNbr}")
@ApiOperation(httpMethod = "DELETE", value = "根据sequenceNbr删除多项", notes = "根据sequenceNbr删除多项") @ApiOperation(httpMethod = "DELETE", value = "根据sequenceNbr删除多项", notes = "根据sequenceNbr删除多项")
public ResponseModel<Boolean[]> deleteModelsBySequenceNbr(HttpServletRequest request, @PathVariable(value = "sequenceNbr")String sequenceNbr){ public ResponseModel<Boolean> deleteModelsBySequenceNbr(@PathVariable(value = "sequenceNbr")String sequenceNbr){
return ResponseHelper.buildResponse(apiInfoService.deleteByIds(sequenceNbr)); return ResponseHelper.buildResponse(apiInfoService.removeByIds(Arrays.asList(StringUtil.string2Array(sequenceNbr))));
} }
/** /**
* 根据sequenceNbr查询 * 根据sequenceNbr查询
* @param sequenceNbr 主键 * @param sequenceNbr 主键
* @return * @return ApiInfoModel
*/ */
@TycloudOperation(ApiLevel = UserType.AGENCY,needAuth = false) @TycloudOperation(ApiLevel = UserType.AGENCY,needAuth = false)
@GetMapping(value = "/{sequenceNbr}") @GetMapping(value = "/{sequenceNbr}")
...@@ -85,32 +88,38 @@ public class ApiInfoResource { ...@@ -85,32 +88,38 @@ public class ApiInfoResource {
public ResponseModel<ApiInfoModel> selectOne(@PathVariable Long sequenceNbr) throws Exception { public ResponseModel<ApiInfoModel> selectOne(@PathVariable Long sequenceNbr) throws Exception {
return ResponseHelper.buildResponse(apiInfoService.queryBySeq(sequenceNbr)); return ResponseHelper.buildResponse(apiInfoService.queryBySeq(sequenceNbr));
} }
/** /**
* 列表分页查询 * 列表分页查询
*@param current 当前页 * @param current 当前页
*@param current 每页大小 * @param size 每页大小
* @return * @param apiName API名称
* @param sequenceNbr 主键
* @return Page<ApiInfoModel>
*/ */
@TycloudOperation(ApiLevel = UserType.AGENCY,needAuth = false) @TycloudOperation(ApiLevel = UserType.AGENCY,needAuth = false)
@GetMapping(value = "/page") @GetMapping(value = "/page")
@ApiOperation(httpMethod = "GET",value = "分页查询", notes = "分页查询") @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) 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<ApiInfoModel> page=new Page<ApiInfoModel>();
page.setCurrent(current); page.setCurrent(current);
page.setSize(size); page.setSize(size);
return ResponseHelper.buildResponse(apiInfoService.queryForApiInfoPage(page, apiSourceService.queryCodeById(sequenceNbr),apiName)); return ResponseHelper.buildResponse(
apiInfoService.queryForApiInfoPage(page, apiSourceService.queryCodeById(sequenceNbr),apiName));
} }
/** /**
*列表全部数据查询 * 列表全部数据查询
*@return * @return List<ApiInfoModel>
*/ */
@TycloudOperation(ApiLevel = UserType.AGENCY,needAuth = false) @TycloudOperation(ApiLevel = UserType.AGENCY,needAuth = false)
@ApiOperation(httpMethod = "GET",value = "列表全部数据查询", notes = "列表全部数据查询") @ApiOperation(httpMethod = "GET",value = "列表全部数据查询", notes = "列表全部数据查询")
@GetMapping(value = "/list") @GetMapping(value = "/list")
public ResponseModel<List<ApiInfoModel>> selectForList() public ResponseModel<List<ApiInfoModel>> selectForList() {
{
return ResponseHelper.buildResponse(apiInfoService.queryForApiInfoList()); return ResponseHelper.buildResponse(apiInfoService.queryForApiInfoList());
} }
} }
package com.yeejoin.amos.api.tool.controller; package com.yeejoin.amos.api.tool.controller;
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.model.ApiSourceModel;
import com.yeejoin.amos.api.tool.face.model.TplModel;
import com.yeejoin.amos.api.tool.face.service.ApiInfoService; import com.yeejoin.amos.api.tool.face.service.ApiInfoService;
import com.yeejoin.amos.api.tool.face.service.ApiSourceService; import com.yeejoin.amos.api.tool.face.service.ApiSourceService;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
...@@ -15,7 +13,6 @@ import java.util.List; ...@@ -15,7 +13,6 @@ import java.util.List;
import org.typroject.tyboot.core.restful.utils.ResponseHelper; import org.typroject.tyboot.core.restful.utils.ResponseHelper;
import org.typroject.tyboot.core.restful.utils.ResponseModel; import org.typroject.tyboot.core.restful.utils.ResponseModel;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.typroject.tyboot.core.restful.doc.TycloudOperation; import org.typroject.tyboot.core.restful.doc.TycloudOperation;
import org.typroject.tyboot.core.foundation.enumeration.UserType; import org.typroject.tyboot.core.foundation.enumeration.UserType;
...@@ -27,13 +24,11 @@ import org.typroject.tyboot.core.foundation.enumeration.UserType; ...@@ -27,13 +24,11 @@ import org.typroject.tyboot.core.foundation.enumeration.UserType;
public class ApiSourceResource { public class ApiSourceResource {
@Autowired @Autowired
ApiSourceService apiSourceService; private ApiSourceService apiSourceService;
@Autowired
ApiInfoService apiInfoService;
/** /**
* 新增 * 新增
* * @param model API来源信息
* @return ApiSourceDto * @return ApiSourceDto
*/ */
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false) @TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
...@@ -46,38 +41,34 @@ public class ApiSourceResource { ...@@ -46,38 +41,34 @@ public class ApiSourceResource {
/** /**
* 根据sequenceNbr更新 * 根据sequenceNbr更新
* * @param model API来源信息
* @param sequenceNbr 编码 * @param sequenceNbr 编码
* @return ApiSourceDto * @return ApiSourceDto
*/ */
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false) @TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@PutMapping(value = "/{sequenceNbr}") @PutMapping(value = "/{sequenceNbr}")
@ApiOperation(httpMethod = "PUT", value = "根据sequenceNbr更新", notes = "根据sequenceNbr更新") @ApiOperation(httpMethod = "PUT", value = "根据sequenceNbr更新", notes = "根据sequenceNbr更新")
public ResponseModel<ApiSourceModel> updateBySeqApiSource(@RequestBody ApiSourceModel model, @PathVariable(value = "sequenceNbr") Long sequenceNbr) { public ResponseModel<ApiSourceModel> updateBySeqApiSource(
@RequestBody ApiSourceModel model,
@PathVariable(value = "sequenceNbr") Long sequenceNbr) {
model.setSequenceNbr(sequenceNbr); model.setSequenceNbr(sequenceNbr);
return ResponseHelper.buildResponse(apiSourceService.updateWithModel(model)); return ResponseHelper.buildResponse(apiSourceService.updateWithModel(model));
} }
/** /**
* 根据sequenceNbr删除 * 根据sequenceNbr删除
*
* @param sequenceNbr 编码 * @param sequenceNbr 编码
* @return Boolean * @return Boolean
*/ */
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false) @TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@DeleteMapping(value = "/{sequenceNbr}") @DeleteMapping(value = "/{sequenceNbr}")
@ApiOperation(httpMethod = "DELETE", value = "根据sequenceNbr删除", notes = "根据sequenceNbr删除") @ApiOperation(httpMethod = "DELETE", value = "根据sequenceNbr删除", notes = "根据sequenceNbr删除")
public ResponseModel<Boolean> deleteBySequenceNbr(HttpServletRequest request, @PathVariable(value = "sequenceNbr") Long sequenceNbr) { public ResponseModel<Boolean> deleteBySequenceNbr(@PathVariable(value = "sequenceNbr") Long sequenceNbr) {
List<ApiInfoModel> apiInfoModels = apiInfoService.queryForApiInfoListByApiSource(apiSourceService.queryCodeById(sequenceNbr)); return ResponseHelper.buildResponse(apiSourceService.deleteById(sequenceNbr));
for (ApiInfoModel apiInfoModel:apiInfoModels){
apiInfoService.removeById(apiInfoModel.getSequenceNbr());
}
return ResponseHelper.buildResponse(apiSourceService.removeById(sequenceNbr));
} }
/** /**
* 根据sequenceNbr查询 * 根据sequenceNbr查询
*
* @param sequenceNbr 物理主键 * @param sequenceNbr 物理主键
* @return ApiSourceDto * @return ApiSourceDto
*/ */
...@@ -88,10 +79,8 @@ public class ApiSourceResource { ...@@ -88,10 +79,8 @@ public class ApiSourceResource {
return ResponseHelper.buildResponse(apiSourceService.queryBySeq(sequenceNbr)); return ResponseHelper.buildResponse(apiSourceService.queryBySeq(sequenceNbr));
} }
/** /**
* 列表全部数据查询 * 列表全部数据查询
*
* @return List<ApiSourceDto> * @return List<ApiSourceDto>
*/ */
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false) @TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
......
package com.yeejoin.amos.api.tool.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.api.tool.face.model.ProjectModel;
import com.yeejoin.amos.api.tool.face.service.StudioResourceService;
import com.yeejoin.amos.api.tool.utils.DataBaseUtils;
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.List;
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,
@RequestParam("ipSeq") Long ipSeq,
HttpServletRequest request,
HttpServletResponse response) {
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");
variables.remove("ipSeq");
studioResourceService.generateSQL(resourceCode, dimension, ipSeq, variables, response);
}
/**
* 获取项目列表
*/
@TycloudOperation(ApiLevel = UserType.SUPER_ADMIN, needAuth = false)
@ApiOperation(value = "项目列表")
@GetMapping("/project/list")
public ResponseModel<List<ProjectModel>> selectByIpAgency(
@RequestParam(value = "ipSeq") Long ipSeq,
@RequestParam(value = "agencyCode") String agencyCode) throws SQLException {
return ResponseHelper.buildResponse(studioResourceService.getProjectList(ipSeq, agencyCode));
}
@TycloudOperation(ApiLevel = UserType.SUPER_ADMIN, needAuth = false)
@ApiOperation(value = "应用列表")
@GetMapping("application/page/project")
public ResponseModel<Page<ProjectModel>> selectApp(
@RequestParam(value = "ipSeq") Long sequenceNbr,
@RequestParam(value = "projectNbr") Long projectNbr,
@RequestParam(value = "current") int current,
@RequestParam(value = "size") int size) throws SQLException {
Page page = new Page();
page.setCurrent(current);
page.setSize(size);
return ResponseHelper.buildResponse(
DataBaseUtils.listToPage(studioResourceService.getAppList(sequenceNbr, projectNbr), current, size));
}
@TycloudOperation(ApiLevel = UserType.SUPER_ADMIN, needAuth = false)
@ApiOperation(value = "数据列表")
@GetMapping("idx/page")
public ResponseModel<Page<ProjectModel>> selectIdx(
@RequestParam(value = "ipSeq") Long ipSeq,
@RequestParam(value = "agencyCode") String agencyCode,
@RequestParam(value = "current") int current,
@RequestParam(value = "size") int size) throws SQLException {
Page page = new Page();
page.setCurrent(current);
page.setSize(size);
return ResponseHelper.buildResponse(
DataBaseUtils.listToPage(studioResourceService.getIdx(ipSeq, agencyCode), current, size));
}
}
package com.yeejoin.amos.api.tool.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.api.tool.face.model.AgencyModel;
import com.yeejoin.amos.api.tool.face.model.DataBaseLinkModel;
import com.yeejoin.amos.api.tool.face.model.TemplateVoModel;
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 javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.sql.SQLException;
import java.util.List;
/**
* @author r
*/
@RestController
@Api(tags = "数据库信息")
@RequestMapping(value = "/database_link")
public class DataBaseLinkResource {
@Autowired
private DataBaseLinkService dataBaseLinkService;
/**
* 新增
*
* @param dataBaseLinkModel 数据库连接
* @return DataBaseLinkModel
*/
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@PostMapping(value = "/save")
@ApiOperation(httpMethod = "POST", value = "新增", notes = "新增")
public ResponseModel<DataBaseLinkModel> save(@RequestBody DataBaseLinkModel dataBaseLinkModel) throws Exception {
return ResponseHelper.buildResponse(dataBaseLinkService.save(dataBaseLinkModel));
}
/**
* 根据sequenceNbr更新
*
* @param model 数据库连接
* @return DataBaseLinkModel
*/
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@PutMapping(value = "/{sequenceNbr}")
@ApiOperation(httpMethod = "PUT", value = "根据sequenceNbr更新", notes = "根据sequenceNbr更新")
public ResponseModel<DataBaseLinkModel> updateBySeq(
@RequestBody DataBaseLinkModel model,
@PathVariable(value = "sequenceNbr") Long sequenceNbr) throws Exception {
model.setSequenceNbr(sequenceNbr);
return ResponseHelper.buildResponse(dataBaseLinkService.update(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(dataBaseLinkService.removeById(sequenceNbr));
}
/**
* 根据sequenceNbr查询
* @param sequenceNbr 主键
* @return TemplateVoModel
*/
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@GetMapping(value = "/{sequenceNbr}")
@ApiOperation(httpMethod = "GET", value = "根据sequenceNbr查询单个", notes = "根据sequenceNbr查询单个")
public ResponseModel<DataBaseLinkModel> selectOne(@PathVariable Long sequenceNbr) {
return ResponseHelper.buildResponse(dataBaseLinkService.queryBySeq(sequenceNbr));
}
/**
* 机构分页查询
*
* @param current 当前分页
* @param size 分页大小
* @return Page<AgencyModel>
*/
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@GetMapping(value = "/page")
@ApiOperation(httpMethod = "GET", value = "机构分页查询", notes = "分页查询")
public ResponseModel<Page<AgencyModel>> queryForPage(
@RequestParam(value = "current") int current,
@RequestParam(value = "size") int size,
@RequestParam Long ipSeq) throws SQLException {
Page<AgencyModel> page = new Page<>();
page.setCurrent(current);
page.setSize(size);
return ResponseHelper.buildResponse(dataBaseLinkService.queryForAgencyPage(page,ipSeq));
}
/**
* 列表全部数据查询
*
* @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());
}
/**
* 机构列表查询
*
* @return Page<AgencyModel>
*/
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@GetMapping(value = "/agency/list")
@ApiOperation(httpMethod = "GET", value = "机构列表查询", notes = "列表查询")
public ResponseModel<List<AgencyModel>> queryForList() throws SQLException, IOException {
return ResponseHelper.buildResponse(dataBaseLinkService.queryForAgencyList());
}
}
package com.yeejoin.amos.api.tool.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.api.tool.face.model.DataBaseNameListModel;
import com.yeejoin.amos.api.tool.face.service.DataBaseNameListService;
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;
@RestController
@Api(tags = "数据库名称表")
@RequestMapping(value = "/database_name")
public class DataBaseNameListResource {
@Autowired
private DataBaseNameListService dataBaseNameListService;
/**
* 数据库初始化
*
* @param ipSeq 数据库连接seq
* @return List<DataBaseLinkModel>
*/
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@PostMapping(value = "/refresh/{ipSeq}")
@ApiOperation(httpMethod = "POST", value = "数据库初始化", notes = "数据库初始化")
public ResponseModel<List<String>> refresh(@PathVariable Long ipSeq) throws Exception {
return ResponseHelper.buildResponse(
dataBaseNameListService.refreshDataBase(ipSeq));
}
/**
* 分页查询
*
* @param current 当前分页
* @param size 分页大小
* @return Page<DataBaseNameListModel>
*/
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@GetMapping(value = "/page")
@ApiOperation(httpMethod = "GET", value = "分页查询", notes = "分页查询")
public ResponseModel<Page<DataBaseNameListModel>> queryForPage(
@RequestParam(value = "current") int current,
@RequestParam(value = "size") int size,
@RequestParam Long ipSeq) {
Page<DataBaseNameListModel> page = new Page<>();
page.setCurrent(current);
page.setSize(size);
return ResponseHelper.buildResponse(dataBaseNameListService.queryForDataBasePage(page,ipSeq));
}
}
...@@ -29,7 +29,9 @@ public class DataBaseResource { ...@@ -29,7 +29,9 @@ public class DataBaseResource {
DataBaseService dataBaseService; DataBaseService dataBaseService;
/** /**
* 新增 * 数据库初始化
* @param dataBaseModel 数据库连接信息
* @return List<DataBaseModel>
*/ */
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false) @TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@PostMapping(value = "/refresh") @PostMapping(value = "/refresh")
...@@ -44,9 +46,11 @@ public class DataBaseResource { ...@@ -44,9 +46,11 @@ public class DataBaseResource {
/** /**
* 根据sequenceNbr批量删除 * 根据sequenceNbr批量删除
* @param sequenceNbr 物理主键
* @return Boolean[]
*/ */
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false) @TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@DeleteMapping(value = "/s/{sequenceNbr}") @DeleteMapping(value = "/delete/{sequenceNbr}")
@ApiOperation(httpMethod = "DELETE", value = "批量删除", notes = "根据sequenceNbr删除") @ApiOperation(httpMethod = "DELETE", value = "批量删除", notes = "根据sequenceNbr删除")
public ResponseModel<Boolean[]> deleteBySequenceNbr(HttpServletRequest request, @PathVariable(value = "sequenceNbr") String sequenceNbr) { public ResponseModel<Boolean[]> deleteBySequenceNbr(HttpServletRequest request, @PathVariable(value = "sequenceNbr") String sequenceNbr) {
String Nbr[] = sequenceNbr.split(","); String Nbr[] = sequenceNbr.split(",");
......
package com.yeejoin.amos.api.tool.controller; package com.yeejoin.amos.api.tool.controller;
import com.yeejoin.amos.api.tool.face.service.AgencyTreeService; import com.yeejoin.amos.api.tool.face.service.DataBaseLinkService;
import com.yeejoin.amos.api.tool.face.service.DataBaseService;
import com.yeejoin.amos.api.tool.face.service.RelationService; import com.yeejoin.amos.api.tool.face.service.RelationService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
...@@ -12,7 +11,8 @@ import org.typroject.tyboot.core.restful.doc.TycloudOperation; ...@@ -12,7 +11,8 @@ import org.typroject.tyboot.core.restful.doc.TycloudOperation;
import org.typroject.tyboot.core.restful.utils.ResponseHelper; import org.typroject.tyboot.core.restful.utils.ResponseHelper;
import org.typroject.tyboot.core.restful.utils.ResponseModel; import org.typroject.tyboot.core.restful.utils.ResponseModel;
import java.sql.Connection; import javax.servlet.http.HttpServletResponse;
@CrossOrigin @CrossOrigin
@RestController @RestController
...@@ -20,21 +20,41 @@ import java.sql.Connection; ...@@ -20,21 +20,41 @@ import java.sql.Connection;
@RequestMapping(value = "/Agency") @RequestMapping(value = "/Agency")
public class RelationResource { public class RelationResource {
@Autowired @Autowired
RelationService relationService; private RelationService relationService;
@Autowired
DataBaseService dataBaseService;
@Autowired @Autowired
AgencyTreeService agencyTreeService; DataBaseLinkService dataBaseLinkService;
@TycloudOperation(ApiLevel = UserType.AGENCY,needAuth = false) /**
@DeleteMapping(value = "/relation/{agencyCodeId}/{sequenceNbrs}") * 根据机构ID和数据库sequenceNbr批量删除数据库
*
* @param agencyCode 机构ID
* @param sequenceNbrs 多个主键
* @return String
*/
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@DeleteMapping(value = "/relation/{agencyCode}/{sequenceNbrs}")
@ApiOperation(httpMethod = "DELETE", value = "机构删除", notes = "机构删除") @ApiOperation(httpMethod = "DELETE", value = "机构删除", notes = "机构删除")
public ResponseModel<String> deleteDataBase(@PathVariable Long agencyCodeId, @PathVariable String sequenceNbrs) throws Exception { public ResponseModel<String> deleteDataBase(
Long[] seqs = dataBaseService.stringToLong(sequenceNbrs); @PathVariable String agencyCode,
for (Long seq : seqs) { @PathVariable String sequenceNbrs) throws Exception {
Connection connection = dataBaseService.connectNewDatabase(dataBaseService.queryBySeq(seq)); relationService.deleteAgency(agencyCode, sequenceNbrs);
relationService.deleteDataBase(connection,agencyTreeService.queryForAgencyCodeById(agencyCodeId));
}
return ResponseHelper.buildResponse("The data has been deleted !"); return ResponseHelper.buildResponse("The data has been deleted !");
} }
}
/**
* 导出SQL脚本
*
* @return String
*/
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@GetMapping(value = "/output/{agencyCode}/{sequenceNbrs}")
@ApiOperation(httpMethod = "GET", value = "导出", notes = "导出")
public ResponseModel<String> generateSQL(
@PathVariable String agencyCode,
@PathVariable String sequenceNbrs,
HttpServletResponse response) throws Exception {
relationService.outputAgency(agencyCode, sequenceNbrs,response);
return ResponseHelper.buildResponse("yes");
}
}
\ No newline at end of file
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)
@ApiOperation(httpMethod = "POST", value = "根据sequenceNbr导入content", notes = "根据sequenceNbr导入content")
@PostMapping(value = "/import")
@CrossOrigin(methods = RequestMethod.POST)
public ResponseModel<TemplateModel> importTpl(@RequestParam("file") MultipartFile multipartFile) throws IOException {
return ResponseHelper.buildResponse(templateService.createWithModel(templateService.fileToTpl(multipartFile)));
}
}
package com.yeejoin.amos.api.tool.controller;
import com.yeejoin.amos.api.tool.face.service.TransferDataService;
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.sql.SQLException;
@CrossOrigin
@RestController
@Api(tags = "数据迁移")
@RequestMapping(value = "/transfer_data")
public class TransferDataResource {
@Autowired
private TransferDataService transferDataService;
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@PutMapping(value = "/relation/")
@ApiOperation(httpMethod = "Put", value = "数据迁移", notes = "数据迁移")
public ResponseModel<String> transferData( ) throws SQLException, ClassNotFoundException {
transferDataService.transferData();
return ResponseHelper.buildResponse("The data has been transferred !");
}
}
package com.yeejoin.amos.api.tool.enums;
public enum SortType {
COMPREHENSIVE("综合排序", "SEQUENCE_NBR", "asc"),
LATEST("最新发布", "REC_DATE", "desc"),
VIEW_TIMES("最多浏览", "VIEW_TIMES", "desc");
private final String name;
private final String field;
private final String direction;
SortType(String name, String field, String direction) {
this.name = name;
this.field = field;
this.direction = direction;
}
public String getName() {
return name;
}
public String getField() {
return field;
}
public String getDirection() {
return direction;
}
public static SortType fromName(String name) {
for (SortType sortType : SortType.values()) {
if (sortType.getName().equals(name)) {
return sortType;
}
}
// 默认返回综合排序
return COMPREHENSIVE;
}
}
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.model;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.typroject.tyboot.core.rdbms.model.BaseModel;
/**
* @author r
*/
@Data
@ApiModel(value = "AgencyModel", description = "")
public class AgencyModel {
@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.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.typroject.tyboot.core.rdbms.model.BaseModel;
@EqualsAndHashCode(callSuper = true)
@Data
public class AmosToolTemplateModel extends BaseModel {
/**
* 模板名称
*/
private String templateName;
/**
* 场景类型
*/
private String categoryScene;
/**
* 效果图
*/
@ApiModelProperty(value = "效果图")
protected String sketch;
/**
* 所属机构
*/
private String agencyName;
/**
* 查看次数
*/
private Integer viewTimes;
/**
* 模板URL
*/
private String templateLink;
/**
* 是否删除
*/
private Boolean isDelete;
public void setSketch(String sketch) {
this.sketch = sketch;
}
}
package com.yeejoin.amos.api.tool.face.model;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.typroject.tyboot.core.rdbms.model.BaseModel;
import java.util.ArrayList;
import java.util.List;
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@JsonIgnoreProperties({"hibernateLazyInitializer","handler"})
public class AmosToolTemplateVoModel extends AmosToolTemplateModel {
/**
* 模板名称
*/
private String templateName;
/**
* 场景类型
*/
private String categoryScene;
/**
* 效果图
*/
@ApiModelProperty(value = "效果图")
protected String sketch;
/**
* 所属机构
*/
private String agencyName;
/**
* 模板URL
*/
private String templateLink;
@ApiModelProperty(value = "效果图")
private List<PictureModel> sketches = new ArrayList<>();
}
package com.yeejoin.amos.api.tool.face.model;
import com.yeejoin.amos.api.tool.face.orm.entity.DataBaseLink;
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 = "主机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 ip, String port, String dbName, String userName, String passWord) {
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.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.typroject.tyboot.core.rdbms.model.BaseModel;
@EqualsAndHashCode(callSuper = true)
@Data
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(value = "DataBaseNameListModel", description = "")
public class DataBaseNameListModel extends BaseModel {
@ApiModelProperty(value = "数据库名")
private String dbName;
@ApiModelProperty(value = "连接id")
private Long parentId;
}
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;
@Data
@ApiModel(value = "Model", description = "")
public class ProjectModel {
@ApiModelProperty(value = "PROJECT_SEQ or APP_SEQ")
private String sequenceNbr;
@ApiModelProperty(value = "名称")
private String name;
@ApiModelProperty(value = "机构编码")
private String agencyCode;
}
...@@ -11,15 +11,15 @@ import org.typroject.tyboot.core.rdbms.model.BaseModel; ...@@ -11,15 +11,15 @@ import org.typroject.tyboot.core.rdbms.model.BaseModel;
@ApiModel(value = "RelationModel", description = "") @ApiModel(value = "RelationModel", description = "")
public class RelationModel extends BaseModel { public class RelationModel extends BaseModel {
@ApiModelProperty(value = "表1名称") @ApiModelProperty(value = "父表名称")
private String table1; private String parentName;
@ApiModelProperty(value = "表1字段") @ApiModelProperty(value = "父表字段")
private String field1; private String parentField;
@ApiModelProperty(value = "表2名称") @ApiModelProperty(value = "表名称")
private String table2; private String name;
@ApiModelProperty(value = "表2字段") @ApiModelProperty(value = "表字段")
private String field2; private String field;
} }
...@@ -4,8 +4,11 @@ import io.swagger.annotations.ApiModel; ...@@ -4,8 +4,11 @@ import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
// import sun.reflect.generics.tree.Tree;
import java.util.ArrayList;
import java.util.List; import java.util.List;
//import java.util.TreeMap;
@Data @Data
@NoArgsConstructor @NoArgsConstructor
...@@ -25,13 +28,11 @@ public class RelationTreeModel { ...@@ -25,13 +28,11 @@ public class RelationTreeModel {
private String parentName; private String parentName;
@ApiModelProperty(value = "子节点") @ApiModelProperty(value = "子节点")
private List<RelationTreeModel> children; private List<RelationTreeModel> children = new ArrayList<>();
public RelationTreeModel(String name, String field,String parentField , String parentName, List<RelationTreeModel> children) { public RelationTreeModel(String name, String field,String parentField ) {
this.name = name; this.name = name;
this.field = field; this.field = field;
this.parentField = parentField; this.parentField = parentField;
this.parentName = parentName;
this.children = children;
} }
} }
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.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.AmosToolTemplate;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import java.util.List;
@Mapper
public interface AmosToolTemplateMapper extends BaseMapper<AmosToolTemplate> {
/**
* 全部
*/
@Select("select * from amos_tool_template" +
" order by ${miniSences} ${way}")
List<AmosToolTemplateModel> listAll(@Param("miniSences") String miniSences,
@Param("way") String way);
/**
* 具体场景
*/
@Select("select * from amos_tool_template" +
" where CATEGORY_SCENE=#{categoryScene} order by `${miniSences}` ${way}")
List<AmosToolTemplateModel> queryByScenes(@Param("categoryScene") String categoryScene,
@Param("miniSences") String miniSences, @Param("way") String way);
/**
* 点击查看次数加一
*/
@Update("update amos_tool_template set VIEW_TIMES = VIEW_TIMES+1 where SEQUENCE_NBR = #{sequenceNbr}")
boolean updateTimesById(@Param("sequenceNbr") Long sequenceNbr);
}
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.core.mapper.BaseMapper;
import com.yeejoin.amos.api.tool.face.orm.entity.DataBaseNameList;
import org.mapstruct.Mapper;
import org.springframework.stereotype.Repository;
@Mapper
@Repository
public interface DataBaseNameListMapper extends BaseMapper<DataBaseNameList> {
}
...@@ -5,14 +5,25 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; ...@@ -5,14 +5,25 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yeejoin.amos.api.tool.face.orm.entity.Relation; import com.yeejoin.amos.api.tool.face.orm.entity.Relation;
import com.yeejoin.amos.api.tool.face.service.RelationService; import com.yeejoin.amos.api.tool.face.service.RelationService;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.SelectProvider; import org.apache.ibatis.annotations.SelectProvider;
import org.mapstruct.Mapper;
import org.springframework.stereotype.Repository;
import java.util.HashMap; import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.Map;
@Mapper
@Repository
public interface RelationMapper extends BaseMapper<Relation> { public interface RelationMapper extends BaseMapper<Relation> {
@SelectProvider(type = RelationService.class, method = "deleteDataBase") @SelectProvider(type = RelationService.class, method = "deleteDataBase")
@SqlParser(filter = true) @SqlParser(filter = true)
List<Relation> deleteDataBase(@Param("maps") List<HashMap<String,String>> maps); 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.orm.entity.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.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity;
@EqualsAndHashCode(callSuper = true)
@Data
@TableName("amos_tool_template")
public class AmosToolTemplate extends BaseEntity {
/**
* 模板名称
*/
@TableField("TEMPLATE_NAME")
private String templateName;
/**
* 场景类型
*/
@TableField("CATEGORY_SCENE")
private String categoryScene;
/**
*效果图
*/
@TableField("SKETCH")
private String sketch;
/**
* 所属机构
*/
@TableField("AGENCY_NAME")
private String agencyName;
/**
* 查看次数
*/
@TableField("VIEW_TIMES")
private Integer viewTimes;
/**
* 模板URL
*/
@TableField("TEMPLATE_LINK")
private String templateLink;
/**
* 是否删除
*/
@TableField("IS_DELETE")
private Boolean isDelete;
}
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 {
/**
*主机IP
*/
@TableField("IP")
private String ip;
/**
*端口
*/
@TableField("PORT")
private String port;
/**
*数据库名
*/
@TableField("DATABASE_NAME")
private String dbName;
/**
*用户名
*/
@TableField("USER_NAME")
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("database_name_list")
public class DataBaseNameList extends BaseEntity {
/**
* 数据库名
*/
@TableField("DATABASE_NAME")
private String dbName;
/**
* 连接id
*/
@TableField("PARENT_ID")
private Long parentId;
}
...@@ -16,24 +16,24 @@ public class Relation extends BaseEntity { ...@@ -16,24 +16,24 @@ public class Relation extends BaseEntity {
* 表1 * 表1
*/ */
@TableField("table1") @TableField("table1")
private String table1; private String parentName;
/** /**
* 表1 字段 * 表1 字段
*/ */
@TableField("table1_field") @TableField("table1_field")
private String field1; private String parentField;
/** /**
* 表2 * 表2
*/ */
@TableField("table2") @TableField("table2")
private String table2; private String name;
/** /**
* 表2 字段 * 表2 字段
*/ */
@TableField("table2_field") @TableField("table2_field")
private String field2; private String field;
} }
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 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.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;
}
...@@ -31,7 +31,7 @@ public class AmosDemoService extends BaseService<AmosDemoModel,AmosDemo,AmosDemo ...@@ -31,7 +31,7 @@ public class AmosDemoService extends BaseService<AmosDemoModel,AmosDemo,AmosDemo
} }
/** /**
* 列表查询 示例 * 列表查询
*/ */
public List<AmosDemoModel> queryForAmosDemoList(String agencyCode) { public List<AmosDemoModel> queryForAmosDemoList(String agencyCode) {
return this.queryForList("" , false, agencyCode); return this.queryForList("" , false, agencyCode);
......
package com.yeejoin.amos.api.tool.face.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.api.tool.enums.SortType;
import com.yeejoin.amos.api.tool.face.model.*;
import com.yeejoin.amos.api.tool.face.orm.dao.AmosToolTemplateMapper;
import com.yeejoin.amos.api.tool.face.orm.entity.AmosToolTemplate;
import com.yeejoin.amos.api.tool.utils.ConvertUtil;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.typroject.tyboot.core.rdbms.service.BaseService;
import javax.annotation.Resource;
import java.sql.*;
import java.util.*;
@Component
public class AmosToolTemplateService extends BaseService<AmosToolTemplateModel,
AmosToolTemplate, AmosToolTemplateMapper> {
@Resource
private AmosToolTemplateMapper amosToolTemplateMapper;
@Autowired
private DataBaseLinkService dataBaseLinkService;
/**
* 点击后查看次数加一
*/
public boolean updateTimes(Long sequenceNbr) {
return amosToolTemplateMapper.updateTimesById(sequenceNbr);
}
/**
* 获取排序类型
*/
private SortType getSortType(String miniSences) {
return SortType.fromName(miniSences);
}
/**
* 列表全部数据
*/
public List<AmosToolTemplateModel> queryList(){
return this.queryForList("" , false);
}
/**
* 列表分页查询
*/
public Page<AmosToolTemplateModel> queryForAmosToolPage(Page page) {
return this.queryForPage(page, null, false);
}
/**
* 统一处理
*/
public List<AmosToolTemplateModel> query(String categoryScene, String miniSences) {
SortType sortType = getSortType(miniSences);
if ("全部".equals(categoryScene)) {
return amosToolTemplateMapper.listAll(sortType.getField(), sortType.getDirection());
} else {
return amosToolTemplateMapper.queryByScenes(categoryScene, sortType.getField(), sortType.getDirection());
}
}
/**
* 生成随机UID
*/
public String getUid() {
UUID uuid = UUID.randomUUID();
String str = uuid.toString();
return str.replace("-", "");
}
/**
* url转化图片
*/
public List<PictureModel> urlToModel(String url) {
List<PictureModel> pictureModels = new ArrayList<>();
PictureModel pictureModel = new PictureModel("", this.getUid(), url, "done");
pictureModels.add(pictureModel);
return pictureModels;
}
/**
* model转化VO
*/
public AmosToolTemplateVoModel convertVoModel(AmosToolTemplateModel templateModel) {
AmosToolTemplateVoModel tplVoModel = new AmosToolTemplateVoModel();
BeanUtils.copyProperties(templateModel, tplVoModel);
if (templateModel.getSketch() != null)
tplVoModel.setSketches(this.urlToModel(templateModel.getSketch()));
return tplVoModel;
}
/**
* TplVoModel转化TplModel
*/
public AmosToolTemplateModel convertModel(AmosToolTemplateVoModel amosToolTplVoModel) throws NoSuchFieldException, IllegalAccessException {
AmosToolTemplateModel amosToolTemplateModel = new AmosToolTemplateModel();
BeanUtils.copyProperties(amosToolTplVoModel, amosToolTemplateModel, "thumbs", "sketches", "contentStr");
//判定sketch为空
if (amosToolTplVoModel.getSketches().size() != 0) {
amosToolTemplateModel.setSketch(ConvertUtil.objectListToUrl(amosToolTplVoModel.getSketches()));
}
return amosToolTemplateModel;
}
/**
* 根据sequenceNbr获取模板并转化为VO
*/
public AmosToolTemplateVoModel queryForTplVo(Long sequenceNbr) {
AmosToolTemplateModel templateModel = this.queryBySeq(sequenceNbr);
AmosToolTemplateVoModel templateVoModel = this.convertVoModel(templateModel);
return templateVoModel;
}
}
...@@ -3,18 +3,16 @@ package com.yeejoin.amos.api.tool.face.service; ...@@ -3,18 +3,16 @@ 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.entity.ApiInfo;
import com.yeejoin.amos.api.tool.face.orm.dao.ApiInfoMapper; import com.yeejoin.amos.api.tool.face.orm.dao.ApiInfoMapper;
import com.yeejoin.amos.api.tool.face.model.ApiInfoModel; import com.yeejoin.amos.api.tool.face.model.ApiInfoModel;
import org.apache.commons.beanutils.ConvertUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.typroject.tyboot.core.rdbms.service.BaseService; import org.typroject.tyboot.core.rdbms.service.BaseService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import java.util.ArrayList;
import java.util.List; import java.util.List;
@Service @Service
public class ApiInfoService extends BaseService<ApiInfoModel,ApiInfo,ApiInfoMapper> { public class ApiInfoService extends BaseService<ApiInfoModel,ApiInfo,ApiInfoMapper> {
@Autowired
ApiSourceService apiSourceService;
/** /**
* 分页查询 * 分页查询
...@@ -24,29 +22,30 @@ public class ApiInfoService extends BaseService<ApiInfoModel,ApiInfo,ApiInfoMapp ...@@ -24,29 +22,30 @@ public class ApiInfoService extends BaseService<ApiInfoModel,ApiInfo,ApiInfoMapp
} }
/** /**
* 列表查询 示例 * 列表查询
*/ */
public List<ApiInfoModel> queryForApiInfoList() { public List<ApiInfoModel> queryForApiInfoList() {
return this.queryForList("" , false); return this.queryForList("" , false);
} }
/** /**
* 列表查询 示例 * 根据来源获取Api列表
*/ */
public List<ApiInfoModel> queryForApiInfoListByApiSource(String apiSource) { public List<ApiInfoModel> selectByApiSource(String apiSource) {
return this.queryForList("" , false,apiSource); return this.queryForList("" , false,apiSource);
} }
/** /**
* 删除多个模板 * 根据来源获取Api列表主键
*/ */
public Boolean[] deleteByIds(String sequenceNbr){ public List<String> selectSeqByApiSource(String apiSource) {
String[] arr = sequenceNbr.split(","); List<String> sequenceNbrs = new ArrayList<>();
Long[] seq = (Long[]) ConvertUtils.convert(arr, Long.class); for(ApiInfoModel model : this.selectByApiSource(apiSource)){
Boolean[] arr2 = new Boolean[arr.length]; sequenceNbrs.add(Long.toString(model.getSequenceNbr()));
for (int i = 0;i < arr.length;i++){
arr2[i] = this.removeById(seq[i]);
} }
return arr2; return sequenceNbrs;
} }
} }
package com.yeejoin.amos.api.tool.face.service; 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.model.ApiSourceModel;
import com.yeejoin.amos.api.tool.face.orm.entity.ApiSource; import com.yeejoin.amos.api.tool.face.orm.entity.ApiSource;
import com.yeejoin.amos.api.tool.face.orm.dao.ApiSourceMapper; 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.typroject.tyboot.core.rdbms.service.BaseService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.List; import java.util.List;
...@@ -11,16 +13,32 @@ import java.util.List; ...@@ -11,16 +13,32 @@ import java.util.List;
@Service @Service
public class ApiSourceService extends BaseService<ApiSourceModel, ApiSource, ApiSourceMapper> { public class ApiSourceService extends BaseService<ApiSourceModel, ApiSource, ApiSourceMapper> {
@Autowired
private ApiInfoService apiInfoService;
/** /**
* 列表查询 示例 * 列表查询
*/ */
public List<ApiSourceModel> queryForApiSourceList() { public List<ApiSourceModel> queryForApiSourceList() {
return this.queryForList("", false); return this.queryForList("", false);
} }
/**
* 根据机构ID获取机构编码
*/
public String queryCodeById(Long sequenceNbr){ public String queryCodeById(Long sequenceNbr){
ApiSourceModel model = this.queryModelByParams(sequenceNbr); ApiSourceModel model = this.queryModelByParams(sequenceNbr);
return model.getCode(); 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.AgencyModel;
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 com.yeejoin.amos.api.tool.utils.DataBaseUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.typroject.tyboot.core.foundation.utils.Bean;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import org.typroject.tyboot.core.rdbms.service.BaseService;
import javax.servlet.http.HttpServletRequest;
import javax.sql.DataSource;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* 服务实现类
*
* @author r
*/
@Service
public class DataBaseLinkService extends BaseService<DataBaseLinkModel, DataBaseLink, DataBaseLinkMapper> {
private static final Logger log = LogManager.getLogger(DataBaseLinkService.class);
@Autowired
private DataSource dataSource;
/**
* 新增
*/
public DataBaseLinkModel save(DataBaseLinkModel dataBaseLinkModel) throws Exception {
DataBaseLinkModel model = this.encryptPwd(dataBaseLinkModel);
if (this.testConnection(model)) {
return this.createWithModel(model);
} else {
return new DataBaseLinkModel();
}
}
/**
* 编辑
*/
public DataBaseLinkModel update(DataBaseLinkModel dataBaseLinkModel) throws Exception {
DataBaseLinkModel model = this.encryptPwd(dataBaseLinkModel);
if (this.testConnection(model)) {
return this.updateWithModel(model);
} else {
return new DataBaseLinkModel();
}
}
/**
* 机构分页查询
*/
public Page<AgencyModel> queryForAgencyPage(Page<AgencyModel> page, Long ipSeq) throws SQLException {
Connection connection = this.connectNewDatabase(this.queryBySeq(ipSeq));
List<Map<String, Object>> maps =
DataBaseUtils.getMaps("SELECT AGENCY_NAME, AGENCY_CODE, AGENCY_DESC FROM privilege_agency;", connection);
connection.close();
List<AgencyModel> records = new ArrayList<>();
for (Map<String, Object> map : maps) {
AgencyModel model = new AgencyModel();
model.setAgencyName(map.get("AGENCY_NAME").toString());
model.setAgencyCode(map.get("AGENCY_CODE").toString());
if ((map.get("AGENCY_DESC") != null))
model.setAgencyDesc(map.get("AGENCY_DESC").toString());
records.add(model);
}
Page<AgencyModel> entiryPage = new Page(page.getCurrent(), page.getSize());
if (!ValidationUtil.isEmpty(records)) {
page.setTotal(records.size());
page.setPages(entiryPage.getPages());
page.setCurrent(entiryPage.getCurrent());
page.setSize(entiryPage.getSize());
page.setRecords(records);
}
return page;
}
/**
* 机构列表查询
*/
public List<AgencyModel> queryForAgencyList() throws SQLException, IOException {
Connection con = dataSource.getConnection();
URL url = new URL
(con.getMetaData().getURL().replace("jdbc:mysql","http"));
con.close();
log.info(url);
DataBaseLink dataBaseLink = getOne(new QueryWrapper<DataBaseLink>().eq("IP",url.getHost()));
DataBaseLinkModel dataBaseLinkModel = new DataBaseLinkModel();
Bean.toModel(dataBaseLink,dataBaseLinkModel);
Connection connection = this.connectNewDatabase(dataBaseLinkModel);
List<Map<String, Object>> maps = DataBaseUtils.getMaps
("SELECT AGENCY_NAME, AGENCY_CODE, AGENCY_DESC FROM privilege_agency;", connection);
connection.close();
List<AgencyModel> records = new ArrayList<>();
for (Map<String, Object> map : maps) {
AgencyModel model = new AgencyModel();
model.setAgencyName(map.get("AGENCY_NAME").toString());
model.setAgencyCode(map.get("AGENCY_CODE").toString());
if ((map.get("AGENCY_DESC") != null))
model.setAgencyDesc(map.get("AGENCY_DESC").toString());
records.add(model);
}
return records;
}
/**
* 列表查询
*/
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 Connection connectNewDatabase(DataBaseLinkModel model) {
try {
// 加载数据库驱动
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()));
} catch (SQLException | ClassNotFoundException e) {
e.printStackTrace();
} catch (Exception e) {
throw new RuntimeException(e);
}
return null;
}
/**
* 测试连接数据库
*/
public boolean testConnection(DataBaseLinkModel model) throws Exception {
Connection connection = this.connectNewDatabase(model);
if (connection != null) {
connection.close();
return true;
}
return false;
}
/**
* 加密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.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.model.DataBaseNameListModel;
import com.yeejoin.amos.api.tool.face.orm.dao.DataBaseNameListMapper;
import com.yeejoin.amos.api.tool.face.orm.entity.DataBaseNameList;
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.Connection;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
@Service
public class DataBaseNameListService extends BaseService<DataBaseNameListModel, DataBaseNameList, DataBaseNameListMapper> {
@Autowired
private DataBaseLinkService dataBaseLinkService;
/**
* 分页查询
*/
public Page<DataBaseNameListModel> queryForDataBasePage(Page<DataBaseNameListModel> page,Long parentId) {
return this.queryForPage(page, null, false, parentId);
}
/**
* 初始化数据库名表
*/
public List<String> refreshDataBase(Long ipSeq) throws Exception {
DataBaseLinkModel dataBaseLinkModel = dataBaseLinkService.queryBySeq(ipSeq);
//清空表单
this.remove(new QueryWrapper<DataBaseNameList>().eq("PARENT_ID", ipSeq));
//连接数据库
Connection connection = dataBaseLinkService.connectNewDatabase(dataBaseLinkModel);
if (connection == null)
return null;
List<String> strings = new ArrayList<>();
Collection<DataBaseNameList> dataBaseNameLists = new ArrayList<>();
for (String name : dataBaseLinkService.getDataBaseName(connection)) {
if (name == null)
break;
DataBaseNameListModel model = new DataBaseNameListModel(name, ipSeq);
strings.add(name);
dataBaseNameLists.add(this.prepareEntity(model));
}
this.saveBatch(dataBaseNameLists);
connection.close();
return strings;
}
}
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.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.rdbms.service.BaseService;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
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.TemplateCategoryTreeModel;
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.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
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.List;
import java.util.Objects;
import java.util.UUID;
@Service
public class TemplateService extends BaseService<TemplateModel, Template, TemplateMapper> {
@Autowired
private TemplateCategoryService templateCategoryService;
/**
* 分页查询
*/
public Page<TemplateModel> queryForTplPage(Page<TemplateModel> page, Long categorySeq, String displayName) {
List<TemplateCategoryTreeModel> modelList = templateCategoryService.getTree();
List<TemplateModel> records = new ArrayList<>();
for (TemplateCategoryTreeModel visualDesigner : modelList) {
if (Objects.equals(categorySeq, visualDesigner.getSequenceNbr())) {
for (TemplateCategoryTreeModel category : visualDesigner.getChildren()) {
records.addAll(this.queryForTplListByCategorySeq(category.getSequenceNbr()));
}
return this.queryForPages(records, page);
}
}
return this.queryForPage(page, null, false, categorySeq, displayName);
}
public Page<TemplateModel> queryForPages(List<TemplateModel> records, Page<TemplateModel> page) {
Page<TemplateModel> entiryPage = new Page(page.getCurrent(), page.getSize());
if (!ValidationUtil.isEmpty(records)) {
page.setTotal(records.size());
page.setPages(entiryPage.getPages());
page.setCurrent(entiryPage.getCurrent());
page.setSize(entiryPage.getSize());
page.setRecords(records);
}
return page;
}
/**
* 列表查询
*/
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.orm.entity.TableColumn;
import com.yeejoin.amos.api.tool.utils.DataBaseUtils;
import org.springframework.stereotype.Service;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service
public class TransferDataService {
private static final String TABLE_DES = "mcb_warning_base_source_attribution";
private static final String TABLE_ORI = "qms_explorer";
private static final String DBNAME_DES = "amos_mcb";
private static final String DBNAME_ORI = "amos_studio";
public Connection connectDataBase(String dataBaseName) throws ClassNotFoundException, SQLException {
// 加载数据库驱动
Class.forName("com.mysql.cj.jdbc.Driver");
// 生成url
String dbUrl = "jdbc:mysql://172.16.3.18:3306/" + dataBaseName;
// 连接数据库
return DriverManager.getConnection(dbUrl, "root", "Yeejoin@2020");
}
public void transferData() throws SQLException, ClassNotFoundException {
Connection connection = this.connectDataBase(DBNAME_ORI);
List<Map<String,Object>> maps = DataBaseUtils.getMaps("SELECT * FROM " + TABLE_ORI + " ;" , connection);
connection.close();
connection = this.connectDataBase(DBNAME_DES);
List<TableColumn> columns = DataBaseUtils.getTableColumn(TABLE_DES,connection);
List<Map<String,Object>> dataList = this.convertDataMap(maps, columns);
System.out.println(DataBaseUtils.getInsertSQL(dataList,columns,TABLE_DES));
}
public List<Map<String, Object>> convertDataMap(List<Map<String, Object>> maps, List<TableColumn> columns) {
List<Map<String, Object>> dataList = new ArrayList<>();
for (Map<String, Object> map : maps) {
Map<String, Object> data = new HashMap<>();
for (TableColumn column : columns) {
data.put(column.getColumnName(), null);
}
data.replace("SEQUENCE_NBR", map.get("SEQUENCE_NBR"));
data.replace("NAME", map.get("RESOURCE_NAME"));
data.replace("PARENT_ID", map.get("PARENT_ID"));
data.replace("CODE", map.get("AGENCY_CODE"));
data.replace("REC_USER_ID", map.get("REC_USER_ID"));
data.replace("REC_DATE", map.get("REC_DATE"));
dataList.add(data);
}
return dataList;
}
}
package com.yeejoin.amos.api.tool.face.service; package com.yeejoin.amos.api.tool.face.service;
import com.yeejoin.amos.api.tool.face.model.TplCateModel; import com.yeejoin.amos.api.tool.face.model.TemplateCategoryTreeModel;
import com.yeejoin.amos.api.tool.face.model.TplCateTreeModel;
import com.yeejoin.amos.api.tool.face.model.VisualDesignerModel; 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.dao.VisualDesignerMapper;
import com.yeejoin.amos.api.tool.face.orm.entity.VisualDesigner; import com.yeejoin.amos.api.tool.face.orm.entity.VisualDesigner;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.typroject.tyboot.core.rdbms.service.BaseService; import org.typroject.tyboot.core.rdbms.service.BaseService;
...@@ -17,40 +15,30 @@ import java.util.List; ...@@ -17,40 +15,30 @@ import java.util.List;
@Service @Service
public class VisualDesignerService extends BaseService<VisualDesignerModel, VisualDesigner, VisualDesignerMapper> { public class VisualDesignerService extends BaseService<VisualDesignerModel, VisualDesigner, VisualDesignerMapper> {
@Autowired
TplCateService tplCateService;
@Autowired
VisualDesignerService visualDesignerService;
/** /**
* 列表查询 示例 * 列表查询
*/ */
// 父List // 父List
public List<VisualDesignerModel> queryForVisualDesignerList() { public List<VisualDesignerModel> queryForVisualDesignerList() {
return this.queryForList("", false); return this.queryForList("", false);
} }
public List<TplCateTreeModel> getList() { /**
List<TplCateTreeModel> treeList = new ArrayList<>(); * 设计器表单数据转化为树形节点
List<TplCateModel> tplCateModels = tplCateService.queryForTplCateList(); */
List<VisualDesignerModel> visualDesignerModels = visualDesignerService.queryForVisualDesignerList(); public List<TemplateCategoryTreeModel> VisualDesignerToNode (List<VisualDesignerModel> visualDesignerModels){
for(int i = 0; i < visualDesignerModels.size();i++){ List<TemplateCategoryTreeModel> nodes = new ArrayList<>();
TplCateTreeModel tplCateTreeModel1 = new for (VisualDesignerModel model : visualDesignerModels){
TplCateTreeModel(visualDesignerModels.get(i).getSequenceNbr(), 0L, TemplateCategoryTreeModel node = new TemplateCategoryTreeModel();
visualDesignerModels.get(i).getDesignerName(),visualDesignerModels.get(i).getDesignerType()); node.setSequenceNbr(model.getSequenceNbr());
for (int j = 0, index =0 ;j < tplCateModels.size();j++){ node.setName(model.getDesignerName());
if(tplCateModels.get(j).getDesignerType().equals(tplCateTreeModel1.getDesignerType())){ node.setDesignerType(model.getDesignerType());
TplCateTreeModel tplCateTreeModel2 = new nodes.add(node);
TplCateTreeModel(tplCateModels.get(j).getSequenceNbr(), tplCateTreeModel1.getSequenceNbr(),
tplCateModels.get(j).getCateName(),tplCateTreeModel1.getDesignerType(),null);
tplCateTreeModel1.getChildren().add(index++,tplCateTreeModel2);
}
}
treeList.add(i,tplCateTreeModel1);
} }
return treeList; 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();
}
}
package com.yeejoin.amos.api.tool.utils;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.api.tool.face.orm.entity.TableColumn;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils;
import javax.servlet.http.HttpServletRequest;
import javax.sql.DataSource;
import java.net.Inet4Address;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.sql.*;
import java.util.*;
public class DataBaseUtils {
/**
* 数据库备份路径
*/
public static final String BACKUP_PATH = "/db/";
/**
* 数据库备份文本前缀
*/
public static String ONESQL_PREFIX = "";
public static String SUFFIX = "sql";
public static String BR = "\r\n";
public static String SLASH = "/";
public static String BRANCH = ";";
private static String SPLIT = "`";
private static String SPACE = " ";
private static String INSERT_INTO = " INSERT INTO ";
private static String CREATE_INTO = " CREATE TABLE ";
private static String VALUES = "VALUES";
private static String LEFTBRACE = "(";
private static String RIGHTBRACE = ")";
private static String QUOTES = "'";
private static String COMMA = ",";
private static String DISABLEFOREIGN = "SET FOREIGN_KEY_CHECKS = 0;\r\n";
private static String ABLEFOREIGN = "SET FOREIGN_KEY_CHECKS = 1;\r\n";
public static String DELIMITER = "###################################";
/**
* 获取maps
*/
public static List<Map<String, Object>> getMaps(String sql, Connection connection) throws SQLException {
Statement statement = connection.createStatement();
ResultSet rs = statement.executeQuery(sql);
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
try {
ResultSetMetaData md = rs.getMetaData();
int columnCount = md.getColumnCount();
while (rs.next()) {
Map<String, Object> rowData = new HashMap<String, Object>();
for (int i = 1; i <= columnCount; i++) {
rowData.put(md.getColumnName(i), rs.getObject(i));
}
list.add(rowData);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (rs != null)
rs.close();
rs = null;
} catch (SQLException e) {
e.printStackTrace();
}
}
return list;
}
/**
* 获取表单列名
*/
public static List<TableColumn> getTableColumn(String tableName, Connection connection) throws SQLException {
String columnSql = "" +
"\t\t SELECT\n" +
"\t\t table_name as table_name,\n" +
"\t\t\tcolumn_name as columnName,\n" +
"\t\t\t( CASE WHEN ( is_nullable = 'no' && column_key != 'PRI' ) THEN '1' ELSE NULL END ) AS isRequired,\n" +
"\t\t\t( CASE WHEN column_key = 'PRI' THEN '1' ELSE '0' END ) AS isPk,\n" +
"\t\t\tordinal_position AS sort,\n" +
"\t\t\tcolumn_comment as columnComment,\n" +
"\t\t\t( CASE WHEN extra = 'auto_increment' THEN '1' ELSE '0' END ) AS isIncrement,\n" +
"\t\t\tcolumn_type as columnType \n" +
"\t\tFROM\n" +
"\t\t\tinformation_schema.COLUMNS \n" +
"\t\tWHERE\n" +
"\t\t\ttable_schema = database()\n" +
"\t\t\tAND table_name = \"" + tableName + "\"\n" +
"\t\tORDER BY\n" +
"\t\t\tordinal_position\t";
List<Map<String, Object>> columnList = DataBaseUtils.getMaps(columnSql, connection);
List<TableColumn> columns = new ArrayList<>();
for (Map<String, Object> map : columnList) {
TableColumn column = JSON.parseObject(JSON.toJSONString(map), TableColumn.class);
if (!column.getColumnName().equals("content"))
columns.add(column);
}
return columns;
}
/**
* 获取insert语句
*/
public static StringBuffer getInsertSQL(List<Map<String, Object>> dataList, List<TableColumn> columns, String tableName) {
StringBuffer sql = new StringBuffer();
for (Map<String, Object> map : dataList) {
sql.append(INSERT_INTO);
sql.append(SPACE).append(tableName).append(SPACE);
sql.append(LEFTBRACE);
for (TableColumn column : columns) {
sql.append(SPLIT);
sql.append(column.getColumnName());
sql.append(SPLIT);
sql.append(COMMA);
}
sql.deleteCharAt(sql.length() - 1);
sql.append(RIGHTBRACE);
sql.append(VALUES);
sql.append(LEFTBRACE);
for (TableColumn column : columns) {
if (column.getColumnType().contains("bigint") ||
column.getColumnType().contains("int") ||
column.getColumnType().contains("bit(1)")) {
if (!ObjectUtils.isEmpty(map.get(column.getColumnName()))) {
sql.append(map.get(column.getColumnName()));
} else {
sql.append("0");
}
} else {
if (!ObjectUtils.isEmpty(map.get(column.getColumnName()))) {
sql.append("'").append(map.get(column.getColumnName())).append("'");
} else {
sql.append("null");
}
}
sql.append(COMMA);
}
sql.deleteCharAt(sql.length() - 1);
sql.append(RIGHTBRACE);
sql.append(BRANCH).append(BR);
}
return sql;
}
public static <V> Page<V> listToPage(List<V> list, int current, int size) {
//当前页
Page<V> page = new Page<>(current, size);
int count = list.size();
List<V> pageList = new ArrayList<>();
//计算当前页第一条数据的下标
int currId = current > 1 ? (current - 1) * size : 0;
for (int i = 0; i < size && i < count - currId; i++) {
pageList.add(list.get(currId + i));
}
page.setSize(size);
page.setCurrent(current);
page.setTotal(count);
//计算分页总页数
page.setPages(count % 10 == 0 ? count / 10 : count / 10 + 1);
page.setRecords(pageList);
return page;
}
}
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: #DB properties:
# jdbc_config # jdbc_config
spring.datasource.url=jdbc:mysql://39.98.45.134:3306/amos_studio_delete?allowMultiQueries=true spring.datasource.url=jdbc:mysql://39.98.45.134:3306/amos_tool_library_test?allowMultiQueries=true
spring.datasource.username=root spring.datasource.username=root
spring.datasource.password=Yeejoin@2020 spring.datasource.password=Yeejoin@2020
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
...@@ -14,8 +14,8 @@ spring.datasource.hikari.max-lifetime=1800000 ...@@ -14,8 +14,8 @@ spring.datasource.hikari.max-lifetime=1800000
spring.datasource.hikari.connection-timeout=30000 spring.datasource.hikari.connection-timeout=30000
spring.datasource.hikari.connection-test-query=SELECT 1 spring.datasource.hikari.connection-test-query=SELECT 1
#?????? #eureka
eureka.instance.hostname=39.98.45.134 eureka.instance.hostname=172.16.3.18
eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:10001/eureka/ eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:10001/eureka/
eureka.instance.prefer-ip-address=true eureka.instance.prefer-ip-address=true
eureka.instance.health-check-url=http://localhost:${server.port}${server.servlet.context-path}/actuator/health eureka.instance.health-check-url=http://localhost:${server.port}${server.servlet.context-path}/actuator/health
...@@ -25,7 +25,7 @@ eureka.instance.metadata-map.management.api-docs=http://localhost:${server.port} ...@@ -25,7 +25,7 @@ eureka.instance.metadata-map.management.api-docs=http://localhost:${server.port}
#redis #redis
spring.redis.database=1 spring.redis.database=1
spring.redis.host=39.98.45.134 spring.redis.host=172.16.3.18
spring.redis.port=6379 spring.redis.port=6379
spring.redis.password=yeejoin@2020 spring.redis.password=yeejoin@2020
spring.redis.timeout=0 spring.redis.timeout=0
...@@ -33,7 +33,7 @@ spring.redis.timeout=0 ...@@ -33,7 +33,7 @@ spring.redis.timeout=0
## emqx ## emqx
emqx.clean-session=true emqx.clean-session=true
emqx.client-id=${spring.application.name}-${random.int[1024,65536]} emqx.client-id=${spring.application.name}-${random.int[1024,65536]}
emqx.broker=tcp://39.98.45.134:2883 emqx.broker=tcp://172.16.3.18:2883
emqx.client-user-name=super emqx.client-user-name=super
emqx.client-password=a123456 emqx.client-password=a123456
emqx.max-inflight=1000 emqx.max-inflight=1000
......
spring.application.name=DemoProject spring.application.name=AMOS-ATL
server.servlet.context-path=/jcs server.servlet.context-path=/atl
server.port=20000 #server.servlet.context-path=/jcs
server.port=30002
#server.port=20000
spring.profiles.active=dev spring.profiles.active=dev
management.health.elasticsearch.enabled=false management.health.elasticsearch.enabled=false
...@@ -9,6 +11,7 @@ spring.jackson.date-format=yyyy-MM-dd HH:mm:ss ...@@ -9,6 +11,7 @@ spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
logging.config=classpath:logback-${spring.profiles.active}.xml 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\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.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
mybatis-plus.configuration.map-underscore-to-camel-case=true
spring.datasource.type=com.zaxxer.hikari.HikariDataSource spring.datasource.type=com.zaxxer.hikari.HikariDataSource
spring.datasource.hikari.minimum-idle=10 spring.datasource.hikari.minimum-idle=10
......
<?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.AmosToolTemplateMapper">
<!-- <select id="queryAll" parameterType="com.yeejoin.amos.api.tool.face.orm.dao.AmosToolTemplateMappermplateMapper">-->
<!-- select * from view;-->
<!-- </select>-->
</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