feat: collaboration and statistics
This commit is contained in:
+104
@@ -0,0 +1,104 @@
|
||||
package com.agileboot.admin.controller.collaboration;
|
||||
|
||||
import com.agileboot.admin.customize.aop.accessLog.AccessLog;
|
||||
import com.agileboot.common.core.base.BaseController;
|
||||
import com.agileboot.common.core.dto.ResponseDTO;
|
||||
import com.agileboot.common.core.page.PageDTO;
|
||||
import com.agileboot.common.enums.common.BusinessTypeEnum;
|
||||
import com.agileboot.domain.collaboration.record.CollaborationRecordApplicationService;
|
||||
import com.agileboot.domain.collaboration.record.command.AddCollaborationRecordCommand;
|
||||
import com.agileboot.domain.collaboration.record.command.UpdateCollaborationRecordCommand;
|
||||
import com.agileboot.domain.collaboration.record.dto.CollaborationMonthlyStatisticsDTO;
|
||||
import com.agileboot.domain.collaboration.record.dto.CollaborationOptionDTO;
|
||||
import com.agileboot.domain.collaboration.record.dto.CollaborationRecordDTO;
|
||||
import com.agileboot.domain.collaboration.record.dto.CollaborationRecordDetailDTO;
|
||||
import com.agileboot.domain.collaboration.record.query.CollaborationRecordQuery;
|
||||
import com.agileboot.domain.common.command.BulkOperationCommand;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import java.util.List;
|
||||
import javax.validation.Valid;
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import javax.validation.constraints.Positive;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.DeleteMapping;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.PutMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/**
|
||||
* @author codex
|
||||
*/
|
||||
@Tag(name = "合作记录API", description = "合作记录相关的增删查改和统计")
|
||||
@RestController
|
||||
@RequestMapping("/collaboration/record")
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
public class CollaborationRecordController extends BaseController {
|
||||
|
||||
private final CollaborationRecordApplicationService recordApplicationService;
|
||||
|
||||
@Operation(summary = "合作记录列表")
|
||||
@PreAuthorize("@permission.has('collaboration:record:list')")
|
||||
@GetMapping("/list")
|
||||
public ResponseDTO<PageDTO<CollaborationRecordDTO>> list(CollaborationRecordQuery query) {
|
||||
return ResponseDTO.ok(recordApplicationService.getRecordList(query));
|
||||
}
|
||||
|
||||
@Operation(summary = "合作记录详情")
|
||||
@PreAuthorize("@permission.has('collaboration:record:query')")
|
||||
@GetMapping("/{recordId}")
|
||||
public ResponseDTO<CollaborationRecordDetailDTO> getInfo(@PathVariable @Positive Long recordId) {
|
||||
return ResponseDTO.ok(recordApplicationService.getRecordInfo(recordId));
|
||||
}
|
||||
|
||||
@Operation(summary = "合作记录选项")
|
||||
@PreAuthorize("@permission.has('collaboration:record:list')")
|
||||
@GetMapping("/options")
|
||||
public ResponseDTO<List<CollaborationOptionDTO>> options() {
|
||||
return ResponseDTO.ok(recordApplicationService.getOptions());
|
||||
}
|
||||
|
||||
@Operation(summary = "合作记录月度统计")
|
||||
@PreAuthorize("@permission.has('collaboration:record:statistics')")
|
||||
@GetMapping("/monthly-statistics")
|
||||
public ResponseDTO<List<CollaborationMonthlyStatisticsDTO>> monthlyStatistics(@RequestParam Integer year) {
|
||||
return ResponseDTO.ok(recordApplicationService.getMonthlyStatistics(year));
|
||||
}
|
||||
|
||||
@Operation(summary = "新增合作记录")
|
||||
@PreAuthorize("@permission.has('collaboration:record:add')")
|
||||
@AccessLog(title = "合作记录", businessType = BusinessTypeEnum.ADD)
|
||||
@PostMapping
|
||||
public ResponseDTO<Void> add(@Valid @RequestBody AddCollaborationRecordCommand command) {
|
||||
recordApplicationService.addRecord(command);
|
||||
return ResponseDTO.ok();
|
||||
}
|
||||
|
||||
@Operation(summary = "修改合作记录")
|
||||
@PreAuthorize("@permission.has('collaboration:record:edit')")
|
||||
@AccessLog(title = "合作记录", businessType = BusinessTypeEnum.MODIFY)
|
||||
@PutMapping
|
||||
public ResponseDTO<Void> edit(@Valid @RequestBody UpdateCollaborationRecordCommand command) {
|
||||
recordApplicationService.updateRecord(command);
|
||||
return ResponseDTO.ok();
|
||||
}
|
||||
|
||||
@Operation(summary = "删除合作记录")
|
||||
@PreAuthorize("@permission.has('collaboration:record:remove')")
|
||||
@AccessLog(title = "合作记录", businessType = BusinessTypeEnum.DELETE)
|
||||
@DeleteMapping
|
||||
public ResponseDTO<Void> remove(@RequestParam @NotNull @NotEmpty List<Long> ids) {
|
||||
recordApplicationService.deleteRecord(new BulkOperationCommand<>(ids));
|
||||
return ResponseDTO.ok();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -50,7 +50,7 @@ spring:
|
||||
datasource:
|
||||
# 主库数据源
|
||||
master:
|
||||
url: jdbc:mysql://localhost:3306/agileboot_pure?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
|
||||
url: jdbc:mysql://localhost:33061/todo_agileboot_pure?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
|
||||
username: root
|
||||
password: root123
|
||||
# 从库数据源
|
||||
@@ -64,7 +64,7 @@ spring:
|
||||
# 地址
|
||||
host: localhost
|
||||
# 端口,默认为6379
|
||||
port: 6379
|
||||
port: 63791
|
||||
# 数据库索引
|
||||
database: 0
|
||||
# 密码
|
||||
@@ -84,7 +84,7 @@ spring:
|
||||
|
||||
logging:
|
||||
file:
|
||||
path: D:/logs/agileboot-dev
|
||||
path: /home/agileboot/logs/agileboot-dev
|
||||
|
||||
|
||||
springdoc:
|
||||
@@ -98,8 +98,8 @@ springdoc:
|
||||
|
||||
# 项目相关配置
|
||||
agileboot:
|
||||
# 文件基路径 示例( Windows配置D:\agileboot,Linux配置 /home/agileboot)
|
||||
file-base-dir: D:\agileboot
|
||||
# 文件基路径 示例(Linux配置 /home/agileboot)
|
||||
file-base-dir: /home/agileboot
|
||||
# 前端url请求转发前缀
|
||||
api-prefix: /dev-api
|
||||
demo-enabled: false
|
||||
|
||||
+6
-9
@@ -6,14 +6,11 @@ import com.agileboot.common.config.AgileBootConfig;
|
||||
import com.agileboot.common.constant.Constants.UploadSubDir;
|
||||
import java.io.File;
|
||||
import javax.annotation.Resource;
|
||||
import org.junit.Test;
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.test.context.junit4.SpringRunner;
|
||||
|
||||
@SpringBootTest(classes = AgileBootAdminApplication.class)
|
||||
@RunWith(SpringRunner.class)
|
||||
public class AgileBootConfigTest {
|
||||
|
||||
@Resource
|
||||
@@ -21,7 +18,7 @@ public class AgileBootConfigTest {
|
||||
|
||||
@Test
|
||||
public void testConfig() {
|
||||
String fileBaseDir = "D:\\agileboot\\profile";
|
||||
String fileBaseDir = "/home/agileboot/profile";
|
||||
|
||||
Assertions.assertEquals("AgileBoot", config.getName());
|
||||
Assertions.assertEquals("1.8.0", config.getVersion());
|
||||
@@ -31,13 +28,13 @@ public class AgileBootConfigTest {
|
||||
Assertions.assertFalse(AgileBootConfig.isAddressEnabled());
|
||||
Assertions.assertEquals("math", AgileBootConfig.getCaptchaType());
|
||||
Assertions.assertEquals("math", AgileBootConfig.getCaptchaType());
|
||||
Assertions.assertEquals(fileBaseDir + "\\import",
|
||||
Assertions.assertEquals(fileBaseDir + "/import",
|
||||
AgileBootConfig.getFileBaseDir() + File.separator + UploadSubDir.IMPORT_PATH);
|
||||
Assertions.assertEquals(fileBaseDir + "\\avatar",
|
||||
Assertions.assertEquals(fileBaseDir + "/avatar",
|
||||
AgileBootConfig.getFileBaseDir() + File.separator + UploadSubDir.AVATAR_PATH);
|
||||
Assertions.assertEquals(fileBaseDir + "\\download",
|
||||
Assertions.assertEquals(fileBaseDir + "/download",
|
||||
AgileBootConfig.getFileBaseDir() + File.separator + UploadSubDir.DOWNLOAD_PATH);
|
||||
Assertions.assertEquals(fileBaseDir + "\\upload",
|
||||
Assertions.assertEquals(fileBaseDir + "/upload",
|
||||
AgileBootConfig.getFileBaseDir() + File.separator + UploadSubDir.UPLOAD_PATH);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user