ProjectController.java 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. package com.ylx.project.controller;
  2. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  3. import com.ylx.common.annotation.Log;
  4. import com.ylx.common.core.domain.R;
  5. import com.ylx.common.enums.BusinessType;
  6. import com.ylx.common.exception.ServiceException;
  7. import com.ylx.project.domain.Project;
  8. import com.ylx.project.domain.bookMerchant.dto.BookMerchantDTO;
  9. import com.ylx.project.domain.bookMerchant.vo.BookMerchantVO;
  10. import com.ylx.project.domain.bookMerchant.vo.BookProjectDetailVO;
  11. import com.ylx.project.domain.dto.ProjectAddDTO;
  12. import com.ylx.project.domain.dto.ProjectSearchDTO;
  13. import com.ylx.project.domain.dto.ProjectUpdateDTO;
  14. import com.ylx.project.domain.vo.ProjectBaseVo;
  15. import com.ylx.project.domain.vo.ProjectDetailVo;
  16. import com.ylx.project.domain.vo.ProjectPageVo;
  17. import com.ylx.project.service.ProjectService;
  18. import io.swagger.annotations.Api;
  19. import io.swagger.annotations.ApiOperation;
  20. import lombok.extern.slf4j.Slf4j;
  21. import org.springframework.security.access.prepost.PreAuthorize;
  22. import org.springframework.validation.annotation.Validated;
  23. import org.springframework.web.bind.annotation.*;
  24. import javax.annotation.Resource;
  25. import java.util.List;
  26. @RestController
  27. @RequestMapping("/project")
  28. @Api(tags = {"项目相关"})
  29. @Slf4j
  30. public class ProjectController {
  31. @Resource
  32. private ProjectService projectService;
  33. /**
  34. * 根据条件分页获取项目列表。
  35. *
  36. * @param page 分页参数
  37. * @param dto 项目查询条件
  38. * @return R<Page<ProjectPageVo>> 项目分页数据
  39. */
  40. @PreAuthorize("@ss.hasPermi('project:list')")
  41. @ApiOperation("根据条件分页查询项目")
  42. @GetMapping("/page")
  43. public R<Page<ProjectPageVo>> page(Page<Project> page, ProjectSearchDTO dto) {
  44. try {
  45. Page<ProjectPageVo> pageData = this.projectService.list(page, dto);
  46. return R.ok(pageData);
  47. } catch (Exception e) {
  48. e.printStackTrace();
  49. throw new RuntimeException("分页查询项目异常", e);
  50. }
  51. }
  52. /**
  53. * 编辑项目信息。
  54. *
  55. * @param dto 项目编辑参数
  56. * @return 操作结果
  57. */
  58. @PreAuthorize("@ss.hasPermi('project:edit')")
  59. @ApiOperation("编辑项目")
  60. @Log(title = "编辑项目", businessType = BusinessType.UPDATE)
  61. @PutMapping
  62. public R<?> edit(@Validated @RequestBody ProjectUpdateDTO dto) {
  63. this.projectService.edit(dto);
  64. return R.ok();
  65. }
  66. /**
  67. * 新增项目信息。
  68. *
  69. * @param dto 项目新增参数
  70. * @return 操作结果
  71. */
  72. @PreAuthorize("@ss.hasPermi('project:add')")
  73. @ApiOperation("新增项目")
  74. @Log(title = "新增项目", businessType = BusinessType.INSERT)
  75. @PostMapping
  76. public R<?> add(@Validated @RequestBody ProjectAddDTO dto) {
  77. try {
  78. this.projectService.add(dto);
  79. return R.ok();
  80. } catch (Exception e) {
  81. e.printStackTrace();
  82. throw new RuntimeException("新增项目失败", e);
  83. }
  84. }
  85. /**
  86. * 根据主键ID查询项目详情信息。
  87. *
  88. * @param id 项目ID
  89. * @return 项目详情信息
  90. */
  91. @PreAuthorize("@ss.hasPermi('project:list')")
  92. @ApiOperation("根据主键ID查询项目详情")
  93. @GetMapping("/{id}")
  94. public R<ProjectDetailVo> getDetailsInfo(@PathVariable("id") Long id) {
  95. try {
  96. ProjectDetailVo vo = this.projectService.getDetailsInfo(id);
  97. return R.ok(vo);
  98. } catch (ServiceException e) {
  99. throw e;
  100. } catch (Exception e) {
  101. log.error("根据主键ID查询项目详情异常", e);
  102. throw new RuntimeException("根据主键ID查询项目详情异常", e);
  103. }
  104. }
  105. /**
  106. * 根据主键ID删除项目。
  107. *
  108. * @param id 项目ID
  109. * @return 操作结果
  110. */
  111. @PreAuthorize("@ss.hasPermi('project:remove')")
  112. @ApiOperation("根据主键ID删除项目")
  113. @Log(title = "删除项目", businessType = BusinessType.DELETE)
  114. @DeleteMapping("/{id}")
  115. public R<?> delete(@PathVariable("id") Long id) {
  116. try {
  117. this.projectService.deleteProjectById(id);
  118. return R.ok();
  119. } catch (ServiceException e) {
  120. throw e;
  121. } catch (Exception e) {
  122. log.error("根据主键ID删除项目异常", e);
  123. throw new RuntimeException("根据主键ID删除项目异常", e);
  124. }
  125. }
  126. @PreAuthorize("@customerAuth.isCustomer()")
  127. @ApiOperation("客户端根据服务标签获取服务项目集合数据")
  128. @GetMapping("/type/{type}")
  129. public R<List<ProjectBaseVo>> getProjectTabList(@PathVariable("type") Integer type) {
  130. List<ProjectBaseVo> list = this.projectService.getProjectTabListByType(type);
  131. return R.ok(list);
  132. }
  133. @PreAuthorize("@customerAuth.isCustomer()")
  134. @ApiOperation("客户端获取去预约项目详情")
  135. @PostMapping("/bookDetail")
  136. public R<BookProjectDetailVO> getBookingProjectDetail(@Validated @RequestBody BookMerchantDTO dto) {
  137. BookProjectDetailVO vo = projectService.getBookingProjectDetail(dto);
  138. return R.ok(vo);
  139. }
  140. }