All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.arextest.storage.web.controller.config.ApplicationController Maven / Gradle / Ivy

There is a newer version: 2.0.7
Show newest version
package com.arextest.storage.web.controller.config;

import com.arextest.common.annotation.AppAuth;
import com.arextest.common.model.response.Response;
import com.arextest.common.utils.ResponseUtils;
import com.arextest.config.model.vo.AddApplicationRequest;
import com.arextest.config.model.vo.AddApplicationResponse;
import com.arextest.config.model.vo.DeleteApplicationRequest;
import com.arextest.config.model.vo.UpdateApplicationRequest;
import com.arextest.model.replay.AppVisibilityLevelEnum;
import com.arextest.storage.service.config.ApplicationService;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutorService;
import javax.annotation.Resource;
import javax.validation.Valid;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * @author wildeslam.
 * @create 2023/9/15 14:20
 */
@Slf4j
@Controller
@RequestMapping(path = "/api/config/app", produces = MediaType.APPLICATION_JSON_VALUE)
public class ApplicationController {

  @Autowired
  private ApplicationService applicationService;

  @Resource(name = "custom-fork-join-executor")
  private ExecutorService customForkJoinExecutor;

  @PostMapping("/add")
  @ResponseBody
  public Response load(@RequestBody @Valid AddApplicationRequest request) {
    if (!AppVisibilityLevelEnum.valid(request.getVisibilityLevel())) {
      return ResponseUtils.parameterInvalidResponse("visibilityLevel invalid");
    }
    AddApplicationResponse response = applicationService.addApplication(request);
    return ResponseUtils.successResponse(response);
  }

  @PostMapping("/modify")
  @ResponseBody
  @AppAuth
  public Response modify(@RequestBody @Valid UpdateApplicationRequest request) {
    if (request.getVisibilityLevel() != null && !AppVisibilityLevelEnum.valid(
        request.getVisibilityLevel())) {
      return ResponseUtils.parameterInvalidResponse("visibilityLevel invalid");
    }
    return ResponseUtils.successResponse(applicationService.modifyApplication(request));
  }

  @PostMapping("/delete")
  @ResponseBody
  public Response delete(@RequestBody @Valid DeleteApplicationRequest request) {
    CompletableFuture.runAsync(() -> applicationService.deleteApplication(request),
        customForkJoinExecutor);
    return ResponseUtils.successResponse(true);
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy