123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242 |
- /*
- * <<
- * Davinci
- * ==
- * Copyright (C) 2016 - 2019 EDP
- * ==
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * http://www.apache.org/licenses/LICENSE-2.0
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * >>
- *
- */
- package edp.davinci.controller;
- import edp.core.annotation.AuthShare;
- import edp.core.annotation.CurrentUser;
- import edp.core.model.Paginate;
- import edp.davinci.common.controller.BaseController;
- import edp.davinci.core.common.Constants;
- import edp.davinci.core.common.ResultMap;
- import edp.davinci.dto.shareDto.ShareDashboard;
- import edp.davinci.dto.shareDto.ShareDisplay;
- import edp.davinci.dto.shareDto.ShareWidget;
- import edp.davinci.dto.userDto.UserLogin;
- import edp.davinci.dto.userDto.UserLoginResult;
- import edp.davinci.dto.viewDto.DistinctParam;
- import edp.davinci.dto.viewDto.ViewExecuteParam;
- import edp.davinci.model.User;
- import edp.davinci.service.ShareService;
- import edp.davinci.service.share.ShareOperation;
- import edp.davinci.service.share.ShareType;
- import io.swagger.annotations.Api;
- import io.swagger.annotations.ApiOperation;
- import io.swagger.annotations.ApiResponse;
- import io.swagger.annotations.ApiResponses;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.http.MediaType;
- import org.springframework.http.ResponseEntity;
- import org.springframework.validation.BindingResult;
- import org.springframework.web.bind.annotation.*;
- import springfox.documentation.annotations.ApiIgnore;
- import javax.servlet.http.HttpServletRequest;
- import javax.validation.Valid;
- import java.sql.SQLException;
- import java.util.List;
- import java.util.Map;
- @Api(value = "/share", tags = "share", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
- @ApiResponses(@ApiResponse(code = 404, message = "resource not found"))
- @Slf4j
- @RestController
- @RequestMapping(value = Constants.BASE_API_PATH + "/share", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
- public class ShareController extends BaseController {
- @Autowired
- private ShareService shareService;
- @ApiOperation(value = "share preflight")
- @AuthShare(type = ShareType.LOGIN)
- @GetMapping(value = "/preflight/{token}")
- public ResponseEntity preFlight(@PathVariable String token) {
- Map<String, Object> result = shareService.checkShareToken();
- return ResponseEntity.ok(new ResultMap().success().payload(result));
- }
- @ApiOperation(value = "get share permission")
- @AuthShare(type = ShareType.PERMISSION, operation = ShareOperation.PERMISSION)
- @GetMapping(value = "/permissions/{token}")
- public ResponseEntity permission(@PathVariable(name = "token") String token,
- @RequestParam(required = false) String password,
- @ApiIgnore @CurrentUser User user,
- HttpServletRequest request) {
- Map<String, Object> result = shareService.getSharePermissions();
- if (null == user || user.getId() == null) {
- return ResponseEntity.ok(new ResultMap().success().payload(result));
- } else {
- return ResponseEntity.ok(new ResultMap(tokenUtils).successAndRefreshToken(request).payload(result));
- }
- }
- /**
- * share页登录
- *
- * @param token
- * @param userLogin
- * @param bindingResult
- * @return
- */
- @ApiOperation(value = "share login")
- @AuthShare(type = ShareType.LOGIN)
- @PostMapping("/login/{token}")
- public ResponseEntity shareLogin(@PathVariable String token,
- @Valid @RequestBody UserLogin userLogin,
- @ApiIgnore BindingResult bindingResult) {
- if (bindingResult.hasErrors()) {
- ResultMap resultMap = new ResultMap().fail().message(bindingResult.getFieldErrors().get(0).getDefaultMessage());
- return ResponseEntity.status(resultMap.getCode()).body(resultMap);
- }
- User user = shareService.shareLogin(userLogin);
- return ResponseEntity.ok(new ResultMap().success(tokenUtils.generateToken(user)).payload(new UserLoginResult(user)));
- }
- /**
- * share页获取dashboard信息
- *
- * @param token
- * @param user
- * @param request
- * @return
- */
- @ApiOperation(value = "get share dashboard")
- @AuthShare(type = ShareType.DASHBOARD, operation = ShareOperation.READ)
- @GetMapping("/dashboard/{token}")
- public ResponseEntity getShareDashboard(@PathVariable String token,
- @RequestParam(required = false) String password,
- @ApiIgnore @CurrentUser User user,
- HttpServletRequest request) {
- ShareDashboard shareDashboard = shareService.getShareDashboard(user);
- if (null == user || user.getId() == null) {
- return ResponseEntity.ok(new ResultMap().success().payload(shareDashboard));
- } else {
- return ResponseEntity.ok(new ResultMap(tokenUtils).successAndRefreshToken(request).payload(shareDashboard));
- }
- }
- /**
- * share页获取display信息
- *
- * @param token
- * @param user
- * @param request
- * @return
- */
- @ApiOperation(value = "get share display")
- @AuthShare(type = ShareType.DISPLAY, operation = ShareOperation.READ)
- @GetMapping("/display/{token}")
- public ResponseEntity getShareDisplay(@PathVariable String token,
- @RequestParam(required = false) String password,
- @ApiIgnore @CurrentUser User user,
- HttpServletRequest request) {
- ShareDisplay shareDisplay = shareService.getShareDisplay(user);
- if (null == user || user.getId() == null) {
- return ResponseEntity.ok(new ResultMap().success().payload(shareDisplay));
- } else {
- return ResponseEntity.ok(new ResultMap(tokenUtils).successAndRefreshToken(request).payload(shareDisplay));
- }
- }
- /**
- * share页获取widget信息
- *
- * @param token
- * @param user
- * @param request
- * @return
- */
- @ApiOperation(value = "get share widget")
- @AuthShare(type = ShareType.WIDGET, operation = ShareOperation.READ)
- @GetMapping("/widget/{token}")
- public ResponseEntity getShareWidget(@PathVariable String token,
- @RequestParam(required = false) String password,
- @ApiIgnore @CurrentUser User user,
- HttpServletRequest request) {
- ShareWidget shareWidget = shareService.getShareWidget(user);
- if (null == user || user.getId() == null) {
- return ResponseEntity.ok(new ResultMap().success().payload(shareWidget));
- } else {
- return ResponseEntity.ok(new ResultMap(tokenUtils).successAndRefreshToken(request).payload(shareWidget));
- }
- }
- /**
- * share页获取源数据
- *
- * @param token
- * @param executeParam
- * @param user
- * @param request
- * @return
- */
- @ApiOperation(value = "get share data")
- @AuthShare(type = ShareType.DATA, operation = ShareOperation.LOAD_DATA)
- @PostMapping(value = "/data/{token}", consumes = MediaType.APPLICATION_JSON_VALUE)
- public ResponseEntity getShareData(@PathVariable String token,
- @RequestParam(required = false) String password,
- @RequestBody(required = false) ViewExecuteParam executeParam,
- @ApiIgnore @CurrentUser User user,
- HttpServletRequest request) throws SQLException {
- Paginate<Map<String, Object>> shareData = shareService.getShareData(executeParam, user);
- if (null == user || user.getId() == null) {
- return ResponseEntity.ok(new ResultMap().success().payload(shareData));
- } else {
- return ResponseEntity.ok(new ResultMap(tokenUtils).successAndRefreshToken(request).payload(shareData));
- }
- }
- /**
- * share获取控制器的值
- *
- * @param token
- * @param param
- * @param bindingResult
- * @param user
- * @param request
- * @return
- */
- @ApiOperation(value = "get share data")
- @AuthShare(type = ShareType.DATA, operation = ShareOperation.LOAD_DISTINCT_DATA)
- @PostMapping(value = "/data/{token}/distinctvalue", consumes = MediaType.APPLICATION_JSON_VALUE)
- public ResponseEntity getDistinctValue(@PathVariable("token") String token,
- @Valid @RequestBody DistinctParam param,
- @ApiIgnore BindingResult bindingResult,
- @ApiIgnore @CurrentUser User user,
- HttpServletRequest request) {
- List<Map<String, Object>> resultList = shareService.getDistinctValue(param, user);
- if (null == user || user.getId() == null) {
- return ResponseEntity.ok(new ResultMap().success().payloads(resultList));
- } else {
- return ResponseEntity.ok(new ResultMap(tokenUtils).successAndRefreshToken(request).payloads(resultList));
- }
- }
- }
|