package com.muyu.rule.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.muyu.common.core.domain.Result; import com.muyu.common.core.exception.ServiceException; import com.muyu.rule.service.RuleEditionService; import com.muyu.rule.test.OSSFileDownload; import io.swagger.v3.oas.annotations.Operation; import lombok.extern.log4j.Log4j2; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import rule.domain.RuleEdition; import com.muyu.rule.test.UploadOss; import java.util.List; /** * @ClassName RuleEditionController * @Description 规则版本控制层 * @Author Chen * @Date 2024/8/25 09:37 */ @RestController @RequestMapping("/ruleEdition") @Log4j2 public class RuleEditionController { @Autowired private RuleEditionService ruleEditionService; /** * 规则版本列表 * * @return */ @RequestMapping(path = "/list", method = RequestMethod.POST) @Operation(summary = "规则版本", description = "查看规则版本") public Result> list() { return Result.success(ruleEditionService.list()); } /** * 根据id删除 * * @param id * @return */ @Operation(summary = "删除版本", description = "删除版本") @DeleteMapping("/delete/{id}") public Result delete(@PathVariable("id") Integer id) { return Result.success(ruleEditionService.removeById(id)); } /** * 添加 * * @param ruleEdition * @return */ @PostMapping("/insert") @Operation(summary = "添加版本", description = "添加版本") public Result insert(@RequestBody @Validated RuleEdition ruleEdition) { //java OSS UploadOss.uploadFiles(ruleEdition.getRuleEngine(), ruleEdition.getRuleKind()); OSSFileDownload.streamingDownload(ruleEdition.getRuleKind()); OSSFileDownload.compile(ruleEdition.getRuleKind()); // //对路径里的.java文件进行编译 // SourceCodeCompiler.javaCompilerPath("/home"); // //指定的输出目录 // File outputDir = new File("/home"); // //获取输出目录中文件 // File[] classFiles = outputDir.listFiles(); // if (classFiles != null) { // for (File classFile : classFiles) { // if (classFile.getName().endsWith(".class")) { // log.info("找到class文件 " + classFile.getName()); // } // } // } else { // log.info("没有找到文件"); // } //cs // testService.test(); LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq( RuleEdition::getRuleKind, ruleEdition.getRuleKind() ); long count = ruleEditionService.count(queryWrapper); if (count > 0) { throw new ServiceException("版本类名重复"); } return Result.success(ruleEditionService.save(ruleEdition)); } /** * 生成引擎版本类 * * @param ruleEdition * @return */ @PostMapping("/addGenerate") @Operation(summary = "生成引擎版本类", description = "生成引擎版本类") public Result addGenerate(@RequestBody @Validated RuleEdition ruleEdition) { RuleEdition rule = ruleEditionService.generate(ruleEdition); return Result.success(rule); } /** * 修改 * * @param ruleEdition * @return */ @PutMapping("/update") @Operation(summary = "修改", description = "修改版本") public Result update(@RequestBody RuleEdition ruleEdition) { return Result.success(ruleEditionService.updateById(ruleEdition)); } /** * 通过ID禁用规则版本 * * @param id ID * @return 版本信息 */ @GetMapping("/disable/{id}") @Operation(summary = "通过ID禁用规则版本", description = "通过ID禁用规则版本") public Result disable(@PathVariable("id") Long id) { this.ruleEditionService.disable(id); return Result.success(null, "操作成功"); } /** * 通过ID启用规则版本 * * @param id ID * @return 版本信息 */ @GetMapping("/enable/{id}") @Operation(summary = "通过ID启用规则版本", description = "通过ID启用客户,启用之后禁止调用规则版本") public Result enable(@PathVariable("id") Long id) { this.ruleEditionService.enable(id); return Result.success(null, "操作成功"); } /** * 通过id查询 * * @param id * @return */ @GetMapping("/findById/{id}") @Operation(summary = "规则详细", description = "规则详细") public Result findById(@PathVariable("id") Long id) { return Result.success(ruleEditionService.list(new LambdaQueryWrapper<>() {{ eq(RuleEdition::getRuleId, id); }})); } /** * 通过id查询 * * @param id * @return */ @GetMapping("/findByEditionId/{id}") @Operation(summary = "规则版本详细", description = "规则详细") public Result findByEditionId(@PathVariable("id") Long id) { return Result.success(ruleEditionService.list(new LambdaQueryWrapper<>() {{ eq(RuleEdition::getId, id); }})); } /** * 保存代码 * * @param ruleEdition * @return */ @PutMapping("/updateRuleEngine") @Operation(summary = "保存代码", description = "保存代码") public Result updateRuleEngine(@RequestBody RuleEdition ruleEdition) { return Result.success(ruleEditionService.updateById(ruleEdition)); } }