parent
1934fc460b
commit
4aaaa1fc6a
@ -0,0 +1,67 @@
|
||||
package com.luojia_channel.modules.feedback.config;
|
||||
|
||||
import org.springframework.amqp.core.*;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
@Configuration
|
||||
public class FeedbackRabbitMQConfig {
|
||||
|
||||
// 反馈工单交换机
|
||||
public static final String FEEDBACK_EXCHANGE = "feedback.exchange";
|
||||
|
||||
// 延迟队列 - 消息先进入此队列,过期后转发到死信队列
|
||||
public static final String FEEDBACK_DELAY_QUEUE = "feedback.delay.queue";
|
||||
|
||||
// 死信交换机 - 延迟队列的死信会转发到此交换机
|
||||
public static final String FEEDBACK_DLX_EXCHANGE = "feedback.dlx.exchange";
|
||||
|
||||
// 死信队列 - 最终消费者监听此队列
|
||||
public static final String FEEDBACK_DLX_QUEUE = "feedback.dlx.queue";
|
||||
|
||||
// 路由键
|
||||
public static final String FEEDBACK_ROUTING_KEY = "feedback.routing.key";
|
||||
|
||||
// 声明反馈交换机
|
||||
@Bean
|
||||
DirectExchange feedbackExchange() {
|
||||
return new DirectExchange(FEEDBACK_EXCHANGE, true, false);
|
||||
}
|
||||
|
||||
// 声明死信交换机
|
||||
@Bean
|
||||
DirectExchange feedbackDlxExchange() {
|
||||
return new DirectExchange(FEEDBACK_DLX_EXCHANGE, true, false);
|
||||
}
|
||||
|
||||
// 声明延迟队列,并绑定到死信交换机
|
||||
@Bean
|
||||
Queue feedbackDelayQueue() {
|
||||
return QueueBuilder.durable(FEEDBACK_DELAY_QUEUE)
|
||||
.withArgument("x-dead-letter-exchange", FEEDBACK_DLX_EXCHANGE)
|
||||
.withArgument("x-dead-letter-routing-key", FEEDBACK_ROUTING_KEY)
|
||||
.build();
|
||||
}
|
||||
|
||||
// 声明死信队列
|
||||
@Bean
|
||||
Queue feedbackDlxQueue() {
|
||||
return new Queue(FEEDBACK_DLX_QUEUE, true);
|
||||
}
|
||||
|
||||
// 绑定延迟队列到反馈交换机
|
||||
@Bean
|
||||
Binding feedbackDelayBinding() {
|
||||
return BindingBuilder.bind(feedbackDelayQueue())
|
||||
.to(feedbackExchange())
|
||||
.with(FEEDBACK_ROUTING_KEY);
|
||||
}
|
||||
|
||||
// 绑定死信队列到死信交换机
|
||||
@Bean
|
||||
Binding feedbackDlxBinding() {
|
||||
return BindingBuilder.bind(feedbackDlxQueue())
|
||||
.to(feedbackDlxExchange())
|
||||
.with(FEEDBACK_ROUTING_KEY);
|
||||
}
|
||||
}
|
@ -0,0 +1,51 @@
|
||||
package com.luojia_channel.modules.feedback.controller;
|
||||
|
||||
import com.luojia_channel.common.domain.Result;
|
||||
import com.luojia_channel.common.domain.page.PageRequest;
|
||||
import com.luojia_channel.common.domain.page.PageResponse;
|
||||
import com.luojia_channel.modules.feedback.entity.FeedbackTicket;
|
||||
import com.luojia_channel.modules.feedback.service.FeedbackTicketService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/feedback")
|
||||
@Tag(name = "反馈工单模块", description = "反馈工单相关接口")
|
||||
@RequiredArgsConstructor
|
||||
public class FeedbackTicketController {
|
||||
|
||||
private final FeedbackTicketService feedbackTicketService;
|
||||
|
||||
@PostMapping
|
||||
@Operation(summary = "创建反馈工单", description = "用户创建反馈工单")
|
||||
public Result<Long> createFeedbackTicket(@RequestBody FeedbackTicket feedbackTicket) {
|
||||
Long id = feedbackTicketService.createFeedbackTicket(feedbackTicket);
|
||||
return Result.success(id);
|
||||
}
|
||||
|
||||
@PutMapping
|
||||
@Operation(summary = "编辑反馈工单", description = "编辑已有的反馈工单")
|
||||
public Result<Void> updateFeedbackTicket(@RequestBody FeedbackTicket feedbackTicket) {
|
||||
feedbackTicketService.updateFeedbackTicket(feedbackTicket);
|
||||
return Result.success();
|
||||
}
|
||||
|
||||
@GetMapping("/personal")
|
||||
@Operation(summary = "个人反馈工单查询", description = "查询当前用户的反馈工单")
|
||||
public Result<List<FeedbackTicket>> getPersonalFeedbackTickets(@RequestParam Long userId) {
|
||||
List<FeedbackTicket> tickets = feedbackTicketService.getPersonalFeedbackTickets(userId);
|
||||
return Result.success(tickets);
|
||||
}
|
||||
|
||||
@GetMapping("/admin")
|
||||
@Operation(summary = "管理员反馈工单分页查询", description = "管理员分页查询所有反馈工单")
|
||||
public Result<PageResponse<FeedbackTicket>> getAdminFeedbackTickets(PageRequest request) {
|
||||
PageResponse<FeedbackTicket> pageResponse = feedbackTicketService.getAdminFeedbackTickets(request);
|
||||
return Result.success(pageResponse);
|
||||
}
|
||||
}
|
@ -0,0 +1,2 @@
|
||||
package com.luojia_channel.modules.feedback.dto;public class FeedbackTicketBasicInfoDTO {
|
||||
}
|
@ -0,0 +1,2 @@
|
||||
package com.luojia_channel.modules.feedback.dto;public class FeedbackTicketPageQueryDTO {
|
||||
}
|
@ -0,0 +1,2 @@
|
||||
package com.luojia_channel.modules.feedback.entity;public class FeedbackTicket {
|
||||
}
|
@ -0,0 +1,10 @@
|
||||
package com.luojia_channel.modules.feedback.mapper;
|
||||
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.luojia_channel.modules.feedback.entity.FeedbackTicket;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
@Mapper
|
||||
public interface FeedbackTicketMapper extends BaseMapper<FeedbackTicket> {
|
||||
}
|
@ -0,0 +1,2 @@
|
||||
package com.luojia_channel.modules.feedback.mq.domain;public class DelayHandleTicketMessage {
|
||||
}
|
@ -0,0 +1,37 @@
|
||||
package com.luojia_channel.modules.feedback.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.luojia_channel.modules.feedback.entity.FeedbackTicket;
|
||||
import com.luojia_channel.common.domain.page.PageRequest;
|
||||
import com.luojia_channel.common.domain.page.PageResponse;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface FeedbackTicketService extends IService<FeedbackTicket> {
|
||||
/**
|
||||
* 创建反馈工单
|
||||
* @param feedbackTicket 反馈工单实体
|
||||
* @return 工单 ID
|
||||
*/
|
||||
Long createFeedbackTicket(FeedbackTicket feedbackTicket);
|
||||
|
||||
/**
|
||||
* 编辑反馈工单
|
||||
* @param feedbackTicket 反馈工单实体
|
||||
*/
|
||||
void updateFeedbackTicket(FeedbackTicket feedbackTicket);
|
||||
|
||||
/**
|
||||
* 个人反馈工单查询
|
||||
* @param userId 用户 ID
|
||||
* @return 反馈工单列表
|
||||
*/
|
||||
List<FeedbackTicket> getPersonalFeedbackTickets(Long userId);
|
||||
|
||||
/**
|
||||
* 管理员反馈工单分页查询
|
||||
* @param request 分页查询参数
|
||||
* @return 分页结果
|
||||
*/
|
||||
PageResponse<FeedbackTicket> getAdminFeedbackTickets(PageRequest request);
|
||||
}
|
@ -0,0 +1,2 @@
|
||||
package com.luojia_channel.modules.feedback.service.impl;public class FeedbackTicketServiceImpl {
|
||||
}
|
Loading…
Reference in new issue