CI/CD集成

master
chenyuepan 3 weeks ago
parent 8950477b8e
commit e45f1877ba

@ -3,40 +3,67 @@ package com.example.venue_reservation_service.controller;
import com.example.venue_reservation_service.dto.QuestionDTO; import com.example.venue_reservation_service.dto.QuestionDTO;
import com.example.venue_reservation_service.dto.QuestionQueryDTO; import com.example.venue_reservation_service.dto.QuestionQueryDTO;
import com.example.venue_reservation_service.dto.ReservationDTO;
import com.example.venue_reservation_service.service.QuestionService; import com.example.venue_reservation_service.service.QuestionService;
import com.example.venue_reservation_service.vo.Result; import com.example.venue_reservation_service.vo.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.tags.Tag;
@RestController @RestController
@RequestMapping("/question") @RequestMapping("/question")
@Api("提问管理") @Tag(name = "提问管理", description = "用户提问及管理员审核相关接口")
@CrossOrigin @CrossOrigin
public class QuestionController { public class QuestionController {
@Resource @Resource
private QuestionService questionService; private QuestionService questionService;
@Operation(summary = "创建提问", description = "用户提交新的提问内容",
@ApiOperation("添加提问") parameters = {
@Parameter(
name = "dto",
description = "用户账号,联系电话、疑问类型等信息",
required = true,
schema = @Schema(implementation = QuestionDTO.class)
)
}
)
@PostMapping("/create") @PostMapping("/create")
public Result create(@RequestBody QuestionDTO dto) { public Result create(@RequestBody QuestionDTO dto) {
return questionService.create(dto); return questionService.create(dto);
} }
@ApiOperation("用户分页查询提问") @Operation(summary = "用户分页查询提问", description = "用户查询自己的提问列表,支持分页和筛选",
parameters = {
@Parameter(
name = "dto",
description = "筛选条件:场馆、状态",
required = true,
schema = @Schema(implementation = QuestionQueryDTO.class)
)
}
)
@PostMapping("/user/page") @PostMapping("/user/page")
public Result userPage(@RequestBody QuestionQueryDTO dto) { public Result userPage(@RequestBody QuestionQueryDTO dto) {
return questionService.userPage(dto); return questionService.userPage(dto);
} }
@ApiOperation("管理员分页查询提问") @Operation(summary = "管理员分页查询提问", description = "管理员查询所有用户的提问列表,支持分页和筛选",
parameters = {
@Parameter(
name = "dto",
description = "提问查询DTO包含用户ID、状态等筛选条件",
required = true,
schema = @Schema(implementation = ReservationDTO.class)
)
}
)
@PostMapping("/admin/page") @PostMapping("/admin/page")
public Result adminPage(@RequestBody QuestionQueryDTO dto) { public Result adminPage(@RequestBody ReservationDTO dto) {
return questionService.adminPage(dto); return questionService.adminPage(dto);
} }
}
}

@ -1,36 +1,44 @@
package com.example.venue_reservation_service.dto; package com.example.venue_reservation_service.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
@Data @Data
@Schema(description = "用户提问对象")
public class QuestionDTO { public class QuestionDTO {
/** /**
* *
*/ */
@Schema(description = "用户编号")
private Integer userId; private Integer userId;
/** /**
* *
*/ */
@Schema(description = "用户账号")
private String username; private String username;
/** /**
* *
*/ */
@Schema(description = "联系电话")
private String phone; private String phone;
/** /**
* or * or
*/ */
@Schema(description = "疑问类型(建议 or 提问)")
private String questionType; private String questionType;
/** /**
* *
*/ */
@Schema(description = "问题描述")
private String description; private String description;
/** /**
* *
*/ */
@Schema(description = "场馆")
private String type; private String type;
} }

@ -1,9 +1,11 @@
package com.example.venue_reservation_service.dto; package com.example.venue_reservation_service.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
@Data @Data
@Schema(description = "用户")
public class QuestionQueryDTO extends PageDTO{ public class QuestionQueryDTO extends PageDTO{
//场馆 //场馆

@ -1,16 +1,20 @@
package com.example.venue_reservation_service.dto; package com.example.venue_reservation_service.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import java.time.LocalDateTime; import java.time.LocalDateTime;
@Data @Data
@Schema(description = "分类查询,用于用户预约订单查询,管理员留言查询")
public class ReservationDTO extends PageDTO{ public class ReservationDTO extends PageDTO{
// 用户编号 // 用户编号
@Schema(description = "用户编号")
private Integer userId; private Integer userId;
// 预约订单状态 // 预约订单状态
@Schema(description = "状态")
private Integer status; private Integer status;
} }

@ -1,6 +1,8 @@
package com.example.venue_reservation_service.dto; package com.example.venue_reservation_service.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data; import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDate; import java.time.LocalDate;
@ -11,5 +13,7 @@ public class ViewDTO extends PageDTO{
private String phone; private String phone;
@JsonFormat(pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDate date; private LocalDate date;
} }

@ -4,6 +4,7 @@ import com.example.venue_reservation_service.domain.Question;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.example.venue_reservation_service.dto.QuestionDTO; import com.example.venue_reservation_service.dto.QuestionDTO;
import com.example.venue_reservation_service.dto.QuestionQueryDTO; import com.example.venue_reservation_service.dto.QuestionQueryDTO;
import com.example.venue_reservation_service.dto.ReservationDTO;
import com.example.venue_reservation_service.vo.Result; import com.example.venue_reservation_service.vo.Result;
/** /**
@ -17,5 +18,5 @@ public interface QuestionService extends IService<Question> {
Result userPage(QuestionQueryDTO dto); Result userPage(QuestionQueryDTO dto);
Result adminPage(QuestionQueryDTO dto); Result adminPage(ReservationDTO dto);
} }

@ -1,12 +1,15 @@
package com.example.venue_reservation_service.service.impl; package com.example.venue_reservation_service.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.Query;
import com.baomidou.mybatisplus.core.metadata.OrderItem; import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.example.venue_reservation_service.domain.Question; import com.example.venue_reservation_service.domain.Question;
import com.example.venue_reservation_service.dto.QuestionDTO; import com.example.venue_reservation_service.dto.QuestionDTO;
import com.example.venue_reservation_service.dto.QuestionQueryDTO; import com.example.venue_reservation_service.dto.QuestionQueryDTO;
import com.example.venue_reservation_service.dto.ReservationDTO;
import com.example.venue_reservation_service.mapper.QuestionMapper; import com.example.venue_reservation_service.mapper.QuestionMapper;
import com.example.venue_reservation_service.service.QuestionService; import com.example.venue_reservation_service.service.QuestionService;
import com.example.venue_reservation_service.vo.QueryVO; import com.example.venue_reservation_service.vo.QueryVO;
@ -17,6 +20,7 @@ import org.springframework.stereotype.Service;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List; import java.util.List;
import java.util.Optional;
/** /**
* @author 31586 * @author 31586
@ -31,27 +35,21 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question>
@Override @Override
public Result create(QuestionDTO dto) { public Result create(QuestionDTO dto) {
String word = dto.getDescription().trim(); String word = dto.getDescription().strip();
Question question = lambdaQuery() Question question = lambdaQuery()
.eq(Question::getDescription, word) .eq(Question::getDescription, word)
.eq(Question::getUserId, dto.getUserId()) .eq(Question::getUserId, dto.getUserId())
.one(); .one();
if(question != null) { if(Optional.ofNullable(question).isPresent()) {
question.setCreatedTime(LocalDateTime.now());
}else {
question = BeanUtil.copyProperties(dto, Question.class);
question.setStatus(0);
question.setCreatedTime(LocalDateTime.now()); question.setCreatedTime(LocalDateTime.now());
updateById(question);
return Result.ok().message("已有相同问题,修改创建时间成功");
} }
Question newQuestion = new Question(); saveOrUpdate(question);
BeanUtils.copyProperties(dto, newQuestion);
newQuestion.setStatus(0);
newQuestion.setCreatedTime(LocalDateTime.now());
save(newQuestion);
return Result.ok().message("保存问题成功"); return Result.ok().message("保存问题成功");
} }
@ -83,7 +81,7 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question>
} }
@Override @Override
public Result adminPage(QuestionQueryDTO dto) { public Result adminPage(ReservationDTO dto) {
Page<Question> page = Page.of(dto.getCurrent(), dto.getSize()); Page<Question> page = Page.of(dto.getCurrent(), dto.getSize());

Loading…
Cancel
Save