123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- package com.ichaoj.ams.controller;
- import cn.hutool.core.bean.BeanUtil;
- import cn.hutool.core.util.StrUtil;
- import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
- import com.ichaoj.ams.entity.AmsAirdropProject;
- import com.ichaoj.ams.entity.AmsAirdropTask;
- import com.ichaoj.ams.request.airdrop.CreateAirdropProject;
- import com.ichaoj.ams.request.airdrop.PageProjectRequest;
- import com.ichaoj.ams.request.airdrop.UpdateAirdropProject;
- import com.ichaoj.ams.request.airdrop.UpdateProjectStatus;
- import com.ichaoj.ams.response.airdrop.AirdropProjectResponse;
- import com.ichaoj.ams.response.airdrop.ProjectDetailResponse;
- import com.ichaoj.ams.response.task.TaskResponse;
- import com.ichaoj.ams.service.IAmsAirdropProjectService;
- import com.ichaoj.ams.service.IAmsAirdropTaskService;
- import com.ichaoj.common.annotation.AuthResource;
- import com.ichaoj.common.exception.ErrorServiceException;
- import com.ichaoj.common.model.PublicPage;
- import com.ichaoj.common.model.PublicResult;
- import io.swagger.v3.oas.annotations.Operation;
- import io.swagger.v3.oas.annotations.tags.Tag;
- import jnr.ffi.annotations.In;
- import org.springframework.validation.annotation.Validated;
- import org.springframework.web.bind.annotation.*;
- import javax.annotation.Resource;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import static com.ichaoj.ams.constant.AmsConstant.AirdropStatus.ONGOING;
- /**
- * <p>
- * 空投项目 前端控制器
- * </p>
- *
- * @author cjwen
- * @since 2023-04-25
- */
- @RestController
- @RequestMapping("/airdrop-project")
- @Tag(name = "项目模块")
- public class AirdropProjectController {
- @Resource
- private IAmsAirdropProjectService airdropProjectService;
- @Resource
- private IAmsAirdropTaskService taskService;
- @PostMapping
- @Operation(summary = "创建空投项目")
- @AuthResource
- public PublicResult<Object> createAirdropProject(@RequestBody CreateAirdropProject createAirdropProject) {
- airdropProjectService.createAirdropProject(createAirdropProject);
- return PublicResult.success();
- }
- @PutMapping
- @Operation(summary = "修改空投项目")
- @AuthResource
- public PublicResult<Object> updateAirdropProject(@RequestBody @Validated UpdateAirdropProject updateAirdropProject) {
- airdropProjectService.updateAirdropProject(updateAirdropProject);
- return PublicResult.success();
- }
- @PutMapping("update-status")
- @Operation(summary = "修改项目状态")
- @AuthResource
- public PublicResult<Object> updateProjectStatus(@RequestBody @Validated UpdateProjectStatus projectStatus) {
- if (projectStatus.getStatus() == null) {
- throw new ErrorServiceException("状态不能为空");
- }
- AmsAirdropProject project = airdropProjectService.getById(projectStatus.getAmsProjectId());
- if (project == null) {
- throw new ErrorServiceException("项目id错误");
- }
- project.setStatus(projectStatus.getStatus());
- airdropProjectService.updateById(project);
- return PublicResult.success();
- }
- @DeleteMapping("/{projectId}")
- @Operation(summary = "删除空投项目")
- @AuthResource
- public PublicResult<Object> deleteAirdropProject(@PathVariable String projectId) {
- airdropProjectService.removeById(projectId);
- return PublicResult.success();
- }
- @PostMapping("/page")
- @Operation(summary = "分页查询空投项目")
- @AuthResource
- public PublicResult<PublicPage<AirdropProjectResponse>> pageAirdropProject(@RequestBody PageProjectRequest projectRequest) {
- PublicPage<AirdropProjectResponse> result = airdropProjectService.pageAirdropProject(projectRequest);
- return PublicResult.success(result);
- }
- @GetMapping("/detail/{projectId}")
- @Operation(summary = "根据项目id查询详情")
- @AuthResource
- public PublicResult<ProjectDetailResponse> getByProjectId(@PathVariable String projectId) {
- if (StrUtil.isBlank(projectId)) {
- throw new ErrorServiceException("projectId 不能为空");
- }
- ProjectDetailResponse project = BeanUtil.copyProperties(airdropProjectService.getById(projectId), ProjectDetailResponse.class);
- List<AmsAirdropTask> tasks = taskService.list(new LambdaQueryWrapper<AmsAirdropTask>().eq(AmsAirdropTask::getAirdropProjectId, project.getAmsProjectId()));
- List<TaskResponse> taskResponses = BeanUtil.copyToList(tasks, TaskResponse.class);
- project.setTasks(taskResponses);
- return PublicResult.success(project);
- }
- @GetMapping("/count/projectNum")
- @Operation(summary = "统计项目数量")
- @AuthResource
- public PublicResult<Map<String, Object>> getProjectNum() {
- Map<String, Object> map = new HashMap<>(4);
- map.put("totalCount", airdropProjectService.count());
- map.put("runningCount", airdropProjectService.count(new LambdaQueryWrapper<AmsAirdropProject>().eq(AmsAirdropProject::getStatus, ONGOING)));
- return PublicResult.success(map);
- }
- }
|