StatisticController.java 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. /*
  2. * <<
  3. * Davinci
  4. * ==
  5. * Copyright (C) 2016 - 2019 EDP
  6. * ==
  7. * Licensed under the Apache License, Version 2.0 (the "License");
  8. * you may not use this file except in compliance with the License.
  9. * You may obtain a copy of the License at
  10. * http://www.apache.org/licenses/LICENSE-2.0
  11. * Unless required by applicable law or agreed to in writing, software
  12. * distributed under the License is distributed on an "AS IS" BASIS,
  13. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14. * See the License for the specific language governing permissions and
  15. * limitations under the License.
  16. * >>
  17. */
  18. package edp.davinci.controller;
  19. import edp.core.utils.TokenUtils;
  20. import edp.davinci.common.model.ValidList;
  21. import edp.davinci.core.common.Constants;
  22. import edp.davinci.core.common.ResultMap;
  23. import edp.davinci.dto.statistic.DavinciStatisticDurationInfo;
  24. import edp.davinci.dto.statistic.DavinciStatisticTerminalInfo;
  25. import edp.davinci.dto.statistic.DavinciStatisticVisitorOperationInfo;
  26. import edp.davinci.dto.statistic.DavinciStatisticVisitorOperationInfoCopy;
  27. import edp.davinci.service.StatisticService;
  28. import io.swagger.annotations.Api;
  29. import io.swagger.annotations.ApiOperation;
  30. import io.swagger.annotations.ApiResponse;
  31. import io.swagger.annotations.ApiResponses;
  32. import lombok.extern.slf4j.Slf4j;
  33. import org.springframework.beans.BeanUtils;
  34. import org.springframework.beans.factory.annotation.Autowired;
  35. import org.springframework.http.MediaType;
  36. import org.springframework.http.ResponseEntity;
  37. import org.springframework.util.StringUtils;
  38. import org.springframework.web.bind.annotation.PostMapping;
  39. import org.springframework.web.bind.annotation.RequestBody;
  40. import org.springframework.web.bind.annotation.RequestMapping;
  41. import org.springframework.web.bind.annotation.RestController;
  42. import javax.servlet.http.HttpServletRequest;
  43. import javax.validation.Valid;
  44. import java.util.ArrayList;
  45. import java.util.List;
  46. @Api(value = "/statistic", tags = "statistic", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
  47. @ApiResponses(@ApiResponse(code = 404, message = "statistic not found"))
  48. @Slf4j
  49. @RestController
  50. @RequestMapping(value = Constants.BASE_API_PATH + "/statistic", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
  51. public class StatisticController {
  52. @Autowired
  53. private StatisticService statisticService;
  54. @Autowired
  55. public TokenUtils tokenUtils;
  56. @ApiOperation(value = "collect duration info ")
  57. @PostMapping(value = "/duration", consumes = MediaType.APPLICATION_JSON_VALUE)
  58. public ResponseEntity collectDurationInfo(@Valid @RequestBody ValidList<DavinciStatisticDurationInfo> durationInfos,
  59. HttpServletRequest request){
  60. statisticService.insert(durationInfos, DavinciStatisticDurationInfo.class);
  61. return ResponseEntity.ok(new ResultMap(tokenUtils).successAndRefreshToken(request));
  62. }
  63. @ApiOperation(value = "collect terminal info ")
  64. @PostMapping(value = "/terminal", consumes = MediaType.APPLICATION_JSON_VALUE)
  65. public ResponseEntity collectTerminalInfo(@Valid @RequestBody ValidList<DavinciStatisticTerminalInfo> terminalInfoInfos,
  66. HttpServletRequest request){
  67. statisticService.insert(terminalInfoInfos, DavinciStatisticTerminalInfo.class);
  68. return ResponseEntity.ok(new ResultMap(tokenUtils).successAndRefreshToken(request));
  69. }
  70. @ApiOperation(value = "collect visitor operation info ")
  71. @PostMapping(value = "/visitoroperation", consumes = MediaType.APPLICATION_JSON_VALUE)
  72. public ResponseEntity collectVisitorOperationInfo(@Valid @RequestBody ValidList<DavinciStatisticVisitorOperationInfoCopy> visitorOperationInfos,
  73. HttpServletRequest request){
  74. // 转换 string to Integer
  75. List<DavinciStatisticVisitorOperationInfo> davinciStatisticVisitorOperationInfoList = new ArrayList<DavinciStatisticVisitorOperationInfo>();
  76. for(DavinciStatisticVisitorOperationInfoCopy davinciStatisticVisitorOperationInfoCopy:visitorOperationInfos){
  77. DavinciStatisticVisitorOperationInfo statisticVisitorOperationInfo = new DavinciStatisticVisitorOperationInfo();
  78. BeanUtils.copyProperties(davinciStatisticVisitorOperationInfoCopy,statisticVisitorOperationInfo);
  79. statisticVisitorOperationInfo.setUser_id(Long.getLong(davinciStatisticVisitorOperationInfoCopy.getUser_id()));
  80. davinciStatisticVisitorOperationInfoList.add(statisticVisitorOperationInfo);
  81. }
  82. statisticService.insert(davinciStatisticVisitorOperationInfoList, DavinciStatisticVisitorOperationInfo.class);
  83. return ResponseEntity.ok(new ResultMap(tokenUtils).successAndRefreshToken(request));
  84. }
  85. }