From b626045de227625ab4f64f5d41536f5bc983cda8 Mon Sep 17 00:00:00 2001 From: forely <1605769034@qq.com> Date: Tue, 3 Jun 2025 12:06:31 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=AF=84=E8=AE=BA=E8=BF=94?= =?UTF-8?q?=E5=9B=9E=E6=A8=A1=E5=9E=8B=EF=BC=8C=E6=B3=A8=E6=84=8F=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=BA=93=E8=A1=A8=E5=8F=98=E6=9B=B4=EF=BC=8C=E9=9C=80?= =?UTF-8?q?=E8=A6=81=E9=87=8D=E6=96=B0=E8=BF=90=E8=A1=8Csql=E8=84=9A?= =?UTF-8?q?=E6=9C=AC=E3=80=82=E5=AE=8C=E6=88=90=E8=AF=84=E8=AE=BA=E5=92=8C?= =?UTF-8?q?=E5=B8=96=E5=AD=90=E7=9A=84=E8=87=AA=E5=AE=9A=E4=B9=89=E7=83=AD?= =?UTF-8?q?=E5=BA=A6=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/FeedbackTicketController.java | 26 +++- .../dto/FeedbackTicketBasicInfoDTO.java | 40 ++++++- .../dto/FeedbackTicketPageQueryDTO.java | 14 ++- .../feedback/entity/FeedbackTicket.java | 23 +++- .../mq/consumer/FeedbackMessageConsumer.java | 2 +- .../mq/domain/DelayHandleTicketMessage.java | 13 +- .../mq/producer/FeedbackMessageProducer.java | 47 +++----- .../service/FeedbackTicketService.java | 14 ++- .../impl/FeedbackTicketServiceImpl.java | 111 +++++++++++++++++- .../mq/AbstractSendProduceTemplate.java | 4 +- .../modules/post/dto/resp/CommentInfoDTO.java | 2 +- .../src/main/resources/application-local.yaml | 58 ++++----- .../src/main/resources/db/luojia_channel.sql | 17 +++ 13 files changed, 294 insertions(+), 77 deletions(-) diff --git a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/feedback/controller/FeedbackTicketController.java b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/feedback/controller/FeedbackTicketController.java index 86a61d2..dd3638c 100644 --- a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/feedback/controller/FeedbackTicketController.java +++ b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/feedback/controller/FeedbackTicketController.java @@ -3,9 +3,15 @@ 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.common.exception.UserException; +import com.luojia_channel.common.utils.UserContext; +import com.luojia_channel.modules.feedback.dto.FeedbackTicketBasicInfoDTO; +import com.luojia_channel.modules.feedback.dto.FeedbackTicketPageQueryDTO; 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.responses.ApiResponse; +import io.swagger.v3.oas.annotations.responses.ApiResponses; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; @@ -35,17 +41,25 @@ public class FeedbackTicketController { return Result.success(); } - @GetMapping("/personal") + @GetMapping("/of/me") @Operation(summary = "个人反馈工单查询", description = "查询当前用户的反馈工单") - public Result> getPersonalFeedbackTickets(@RequestParam Long userId) { + public Result> getPersonalFeedbackTickets() { + Long userId = UserContext.getUserId(); + if(userId == null){ + throw new UserException("用户未登录"); + } List tickets = feedbackTicketService.getPersonalFeedbackTickets(userId); return Result.success(tickets); } - @GetMapping("/admin") - @Operation(summary = "管理员反馈工单分页查询", description = "管理员分页查询所有反馈工单") - public Result> getAdminFeedbackTickets(PageRequest request) { - PageResponse pageResponse = feedbackTicketService.getAdminFeedbackTickets(request); + @GetMapping("/list") + @Operation(summary = "分页查询反馈工单", description = "分页查询反馈工单列表") + @ApiResponses(value = { + @ApiResponse(responseCode = "200", description = "获取成功"), + @ApiResponse(responseCode = "500", description = "获取失败,请稍后重试") + }) + public Result> pageFeedbackTicket(FeedbackTicketPageQueryDTO feedbackTicketPageQueryDTO) { + PageResponse pageResponse = feedbackTicketService.pageFeedbackTicket(feedbackTicketPageQueryDTO); return Result.success(pageResponse); } } diff --git a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/feedback/dto/FeedbackTicketBasicInfoDTO.java b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/feedback/dto/FeedbackTicketBasicInfoDTO.java index a89efee..0074a17 100644 --- a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/feedback/dto/FeedbackTicketBasicInfoDTO.java +++ b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/feedback/dto/FeedbackTicketBasicInfoDTO.java @@ -1,2 +1,40 @@ -package com.luojia_channel.modules.feedback.dto;public class FeedbackTicketBasicInfoDTO { +package com.luojia_channel.modules.feedback.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDateTime; + +@Data +@Schema(description = "反馈工单基本信息") +public class FeedbackTicketBasicInfoDTO { + @Schema(description = "主键ID") + private Long id; + + @Schema(description = "用户ID") + private Long userId; + + @Schema(description = "反馈内容") + private String content; + + @Schema(description = "反馈类型,例如:功能建议、问题反馈等") + private String feedbackType; + + @Schema(description = "工单状态,1:待处理,2:处理中,3:已处理") + private Integer status; + + @Schema(description = "联系方式,如手机号、邮箱等") + private String contactInfo; + + @Schema(description = "创建时间") + private LocalDateTime createTime; + + @Schema(description = "处理时间") + private LocalDateTime handleTime; + + @Schema(description = "用户名") + private String userName; + + @Schema(description = "用户头像") + private String userAvatar; } diff --git a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/feedback/dto/FeedbackTicketPageQueryDTO.java b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/feedback/dto/FeedbackTicketPageQueryDTO.java index 7cd3627..cbe22c8 100644 --- a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/feedback/dto/FeedbackTicketPageQueryDTO.java +++ b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/feedback/dto/FeedbackTicketPageQueryDTO.java @@ -1,2 +1,14 @@ -package com.luojia_channel.modules.feedback.dto;public class FeedbackTicketPageQueryDTO { +package com.luojia_channel.modules.feedback.dto; + +import com.luojia_channel.common.domain.page.PageRequest; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +public class FeedbackTicketPageQueryDTO extends PageRequest { + @Schema(description = "反馈类型,例如:功能建议、问题反馈等") + private String feedbackType; + + @Schema(description = "工单状态,1:待处理,2:处理中,3:已处理") + private Integer status; } diff --git a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/feedback/entity/FeedbackTicket.java b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/feedback/entity/FeedbackTicket.java index 9c9c6c0..916b71f 100644 --- a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/feedback/entity/FeedbackTicket.java +++ b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/feedback/entity/FeedbackTicket.java @@ -1,2 +1,23 @@ -package com.luojia_channel.modules.feedback.entity;public class FeedbackTicket { +package com.luojia_channel.modules.feedback.entity; + + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.time.LocalDateTime; + +@Data +@TableName("feedback_ticket") +public class FeedbackTicket { + @TableId(type = IdType.AUTO) + private Long id; + private Long userId; + private String content; + private String feedbackType; + private Integer status; + private String contactInfo; + private LocalDateTime createTime; + private LocalDateTime handleTime; } diff --git a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/feedback/mq/consumer/FeedbackMessageConsumer.java b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/feedback/mq/consumer/FeedbackMessageConsumer.java index 8ecd5a3..ed7ba16 100644 --- a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/feedback/mq/consumer/FeedbackMessageConsumer.java +++ b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/feedback/mq/consumer/FeedbackMessageConsumer.java @@ -23,7 +23,7 @@ public class FeedbackMessageConsumer { FeedbackTicket ticket = wrapper.getMessage(); log.info("收到反馈工单延时消息,工单ID:{}", ticket.getId()); - // 处理延时任务,例如更新工单状态 + // 处理延时任务,更新工单状态 feedbackTicketService.processDelayedFeedback(ticket.getId()); } catch (Exception e) { diff --git a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/feedback/mq/domain/DelayHandleTicketMessage.java b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/feedback/mq/domain/DelayHandleTicketMessage.java index 45cab50..2d45003 100644 --- a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/feedback/mq/domain/DelayHandleTicketMessage.java +++ b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/feedback/mq/domain/DelayHandleTicketMessage.java @@ -1,2 +1,13 @@ -package com.luojia_channel.modules.feedback.mq.domain;public class DelayHandleTicketMessage { +package com.luojia_channel.modules.feedback.mq.domain; + +import lombok.Data; + +@Data +public class DelayHandleTicketMessage { + private Long id; + private Long userId; + private String content; + private String feedbackType; + private Integer status; + private String contactInfo; } diff --git a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/feedback/mq/producer/FeedbackMessageProducer.java b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/feedback/mq/producer/FeedbackMessageProducer.java index 14cc61c..33101b6 100644 --- a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/feedback/mq/producer/FeedbackMessageProducer.java +++ b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/feedback/mq/producer/FeedbackMessageProducer.java @@ -2,46 +2,33 @@ package com.luojia_channel.modules.feedback.mq.producer; import com.luojia_channel.modules.feedback.config.FeedbackRabbitMQConfig; -import com.luojia_channel.modules.feedback.entity.FeedbackTicket; +import com.luojia_channel.modules.feedback.mq.domain.DelayHandleTicketMessage; import com.luojia_channel.modules.message.mq.AbstractSendProduceTemplate; +import com.luojia_channel.modules.message.mq.BaseSendExtendDTO; import com.luojia_channel.modules.message.mq.MessageWrapper; import lombok.RequiredArgsConstructor; + import lombok.extern.slf4j.Slf4j; import org.springframework.amqp.rabbit.core.RabbitTemplate; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; - @Slf4j @Component -@RequiredArgsConstructor -public class FeedbackMessageProducer { - - private final RabbitTemplate rabbitTemplate; +public class FeedbackMessageProducer extends AbstractSendProduceTemplate{ - public void sendDelayMessage(FeedbackTicket ticket, Long delayTime) { - try { - // 构建消息包装器 - MessageWrapper wrapper = MessageWrapper.builder() - .keys("feedback_" + ticket.getId()) - .message(ticket) - .build(); - - // 发送消息到延迟队列,设置消息TTL(过期时间) - rabbitTemplate.convertAndSend( - FeedbackRabbitMQConfig.FEEDBACK_EXCHANGE, - FeedbackRabbitMQConfig.FEEDBACK_ROUTING_KEY, - wrapper, - message -> { - message.getMessageProperties().setExpiration(delayTime.toString()); - return message; - } - ); + public FeedbackMessageProducer(@Autowired RabbitTemplate rabbitTemplate){ + super(rabbitTemplate); + } - log.info("反馈工单延时消息发送成功,工单ID:{},延迟时间:{}ms", - ticket.getId(), delayTime); - } catch (Exception e) { - log.error("反馈工单延时消息发送失败,工单ID:{}", ticket.getId(), e); - throw e; - } + @Override + protected BaseSendExtendDTO buildBaseSendParam(DelayHandleTicketMessage messageSendEvent) { + return BaseSendExtendDTO.builder() + .eventName("DelayHandleTicketMessageEvent") + .exchange(FeedbackRabbitMQConfig.FEEDBACK_EXCHANGE) + .routingKey(FeedbackRabbitMQConfig.FEEDBACK_ROUTING_KEY) + .keys(messageSendEvent.getId().toString()) + .delay(24*60*60*1000L) //延迟消息是1天 + .build(); } } diff --git a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/feedback/service/FeedbackTicketService.java b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/feedback/service/FeedbackTicketService.java index cb985b0..e9004dc 100644 --- a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/feedback/service/FeedbackTicketService.java +++ b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/feedback/service/FeedbackTicketService.java @@ -1,6 +1,8 @@ package com.luojia_channel.modules.feedback.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.luojia_channel.modules.feedback.dto.FeedbackTicketBasicInfoDTO; +import com.luojia_channel.modules.feedback.dto.FeedbackTicketPageQueryDTO; import com.luojia_channel.modules.feedback.entity.FeedbackTicket; import com.luojia_channel.common.domain.page.PageRequest; import com.luojia_channel.common.domain.page.PageResponse; @@ -29,9 +31,15 @@ public interface FeedbackTicketService extends IService { List getPersonalFeedbackTickets(Long userId); /** - * 管理员反馈工单分页查询 - * @param request 分页查询参数 + * 分页查询反馈工单 + * @param feedbackTicketPageQueryDTO 分页查询参数 * @return 分页结果 */ - PageResponse getAdminFeedbackTickets(PageRequest request); + PageResponse pageFeedbackTicket(FeedbackTicketPageQueryDTO feedbackTicketPageQueryDTO); + + /** + * 处理延时反馈工单 + * @param ticketId 工单ID + */ + void processDelayedFeedback(Long ticketId); } diff --git a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/feedback/service/impl/FeedbackTicketServiceImpl.java b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/feedback/service/impl/FeedbackTicketServiceImpl.java index 286369d..4d685ec 100644 --- a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/feedback/service/impl/FeedbackTicketServiceImpl.java +++ b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/feedback/service/impl/FeedbackTicketServiceImpl.java @@ -1,2 +1,111 @@ -package com.luojia_channel.modules.feedback.service.impl;public class FeedbackTicketServiceImpl { +package com.luojia_channel.modules.feedback.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.luojia_channel.common.domain.page.PageRequest; +import com.luojia_channel.common.domain.page.PageResponse; +import com.luojia_channel.modules.feedback.dto.FeedbackTicketBasicInfoDTO; +import com.luojia_channel.modules.feedback.dto.FeedbackTicketPageQueryDTO; +import com.luojia_channel.modules.feedback.entity.FeedbackTicket; +import com.luojia_channel.modules.feedback.mapper.FeedbackTicketMapper; +import com.luojia_channel.modules.feedback.mq.domain.DelayHandleTicketMessage; +import com.luojia_channel.modules.feedback.mq.producer.FeedbackMessageProducer; +import com.luojia_channel.modules.feedback.service.FeedbackTicketService; +import com.luojia_channel.modules.user.entity.User; +import com.luojia_channel.modules.user.mapper.UserMapper; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +@Service +@RequiredArgsConstructor +public class FeedbackTicketServiceImpl extends ServiceImpl implements FeedbackTicketService { + + private final UserMapper userMapper; + private final FeedbackMessageProducer feedbackMessageProducer; + + @Override + @Transactional(rollbackFor = Exception.class) + public Long createFeedbackTicket(FeedbackTicket feedbackTicket) { + feedbackTicket.setCreateTime(LocalDateTime.now()); + feedbackTicket.setStatus(1); + if(!save(feedbackTicket)) + throw new RuntimeException("保存工单失败"); + // 发送延时消息 + feedbackMessageProducer.sendMessage(BeanUtil.copyProperties(feedbackTicket, DelayHandleTicketMessage.class)); + return feedbackTicket.getId(); + } + + @Override + public void updateFeedbackTicket(FeedbackTicket feedbackTicket) { + updateById(feedbackTicket); + } + + @Override + public List getPersonalFeedbackTickets(Long userId) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(FeedbackTicket::getUserId, userId); + return list(queryWrapper); + } + + @Override + public PageResponse pageFeedbackTicket(FeedbackTicketPageQueryDTO feedbackTicketPageQueryDTO) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + if (feedbackTicketPageQueryDTO.getFeedbackType() != null) { + queryWrapper.eq(FeedbackTicket::getFeedbackType, feedbackTicketPageQueryDTO.getFeedbackType()); + } + if (feedbackTicketPageQueryDTO.getStatus() != null) { + queryWrapper.eq(FeedbackTicket::getStatus, feedbackTicketPageQueryDTO.getStatus()); + } + queryWrapper.orderByDesc(FeedbackTicket::getCreateTime); + + Page page = new Page<>(feedbackTicketPageQueryDTO.getCurrent(), feedbackTicketPageQueryDTO.getSize()); + IPage feedbackTicketPage = baseMapper.selectPage(page, queryWrapper); + + List userIds = new ArrayList<>(); + feedbackTicketPage.getRecords().forEach(ticket -> userIds.add(ticket.getUserId())); + List users = userMapper.selectBatchIds(userIds); + Map userMap = users.stream() + .collect(Collectors.toMap(User::getId, user -> user)); + + List feedbackTicketBasicInfoDTOS = new ArrayList<>(); + feedbackTicketPage.getRecords().forEach(ticket -> { + FeedbackTicketBasicInfoDTO dto = new FeedbackTicketBasicInfoDTO(); + BeanUtil.copyProperties(ticket, dto); + User user = userMap.getOrDefault(ticket.getUserId(), new User()); + dto.setUserName(user.getUsername()); + dto.setUserAvatar(user.getAvatar()); + feedbackTicketBasicInfoDTOS.add(dto); + }); + + return PageResponse.builder() + .current(feedbackTicketPage.getCurrent()) + .size(feedbackTicketPage.getSize()) + .total(feedbackTicketPage.getTotal()) + .records(feedbackTicketBasicInfoDTOS) + .build(); + } + + @Override + public void processDelayedFeedback(Long ticketId) { + // 查询工单 + FeedbackTicket ticket = getById(ticketId); + if (ticket == null || ticket.getStatus().equals(3)) { + return; + } + // 处理延时任务,更新工单状态为超时 + ticket.setStatus(4); // + updateById(ticket); + // TODO 向管理员发送消息 + + } } diff --git a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/message/mq/AbstractSendProduceTemplate.java b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/message/mq/AbstractSendProduceTemplate.java index cd8b44d..db527a7 100644 --- a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/message/mq/AbstractSendProduceTemplate.java +++ b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/message/mq/AbstractSendProduceTemplate.java @@ -29,9 +29,9 @@ public abstract class AbstractSendProduceTemplate { m -> { // 设置消息头 m.getMessageProperties().setHeader(KEYS, baseSendDTO.getKeys()); - // 设置消息属性(如延迟时间) TODO 若需要延迟消息,需安装延时插件 + // 设置消息属性(如延迟时间) if (baseSendDTO.getDelay() != null) { - // m.getMessageProperties().setDelay(baseSendDTO.getDelay()); + m.getMessageProperties().setExpiration(baseSendDTO.getDelay().toString()); } return m; } diff --git a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/dto/resp/CommentInfoDTO.java b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/dto/resp/CommentInfoDTO.java index 70126bd..475cc2b 100644 --- a/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/dto/resp/CommentInfoDTO.java +++ b/珞珈岛-项目相关文件/luojia-island/service/src/main/java/com/luojia_channel/modules/post/dto/resp/CommentInfoDTO.java @@ -79,5 +79,5 @@ public class CommentInfoDTO { @Schema( description = "子评论列表" ) - private List commentInfoDTOList; + private List commentInfoDTOList; //当前返回空 } diff --git a/珞珈岛-项目相关文件/luojia-island/service/src/main/resources/application-local.yaml b/珞珈岛-项目相关文件/luojia-island/service/src/main/resources/application-local.yaml index 0822dbe..7cae4ed 100644 --- a/珞珈岛-项目相关文件/luojia-island/service/src/main/resources/application-local.yaml +++ b/珞珈岛-项目相关文件/luojia-island/service/src/main/resources/application-local.yaml @@ -1,36 +1,36 @@ -###本地开发环境 -#lj: -# db: -# host: 192.168.59.129 -# password: Forely123! -# redis: -# host: 192.168.59.129 -# port: 6379 -# password: Forely123! -# rabbitmq: -# host: 192.168.59.129 -# port: 5672 -# username: admin -# password: Forely123! -# minio: -# endpoint: http://192.168.59.129:9000 -# accessKey: forely -# secretKey: Forely123! - +##本地开发环境 lj: db: - host: 192.168.125.128 - password: MySQL@5678 + host: 192.168.59.129 + password: Forely123! redis: - host: 192.168.125.128 + host: 192.168.59.129 port: 6379 - password: Redis@9012 + password: Forely123! rabbitmq: - host: 192.168.125.128 + host: 192.168.59.129 port: 5672 - username: rabbit_admin - password: Rabbit@3456 + username: admin + password: Forely123! minio: - endpoint: http://192.168.125.128:9000 - accessKey: minio_admin - secretKey: Minio@1234 + endpoint: http://192.168.59.129:9000 + accessKey: forely + secretKey: Forely123! + +#lj: +# db: +# host: 192.168.125.128 +# password: MySQL@5678 +# redis: +# host: 192.168.125.128 +# port: 6379 +# password: Redis@9012 +# rabbitmq: +# host: 192.168.125.128 +# port: 5672 +# username: rabbit_admin +# password: Rabbit@3456 +# minio: +# endpoint: http://192.168.125.128:9000 +# accessKey: minio_admin +# secretKey: Minio@1234 \ No newline at end of file diff --git a/珞珈岛-项目相关文件/luojia-island/service/src/main/resources/db/luojia_channel.sql b/珞珈岛-项目相关文件/luojia-island/service/src/main/resources/db/luojia_channel.sql index 90b40ec..f8c0afe 100644 --- a/珞珈岛-项目相关文件/luojia-island/service/src/main/resources/db/luojia_channel.sql +++ b/珞珈岛-项目相关文件/luojia-island/service/src/main/resources/db/luojia_channel.sql @@ -177,3 +177,20 @@ CREATE TABLE `follow` ( `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', PRIMARY KEY (`id`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='关注表'; + +## 反馈工单表 +DROP TABLE IF EXISTS `feedback_ticket`; +CREATE TABLE `feedback_ticket` ( + `id` BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID', + `user_id` BIGINT NOT NULL COMMENT '用户ID', + `content` TEXT NOT NULL COMMENT '反馈内容', + `feedback_type` VARCHAR(50) NOT NULL COMMENT '反馈类型,例如:功能建议、问题反馈等', + `status` INT NOT NULL COMMENT '工单状态,1:待处理,2:处理中,3:已处理,4超时', + `contact_info` VARCHAR(100) COMMENT '联系方式,如手机号、邮箱等', + `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `handle_time` DATETIME COMMENT '处理时间', + INDEX idx_user_id (`user_id`), + INDEX idx_feedback_type (`feedback_type`), + INDEX idx_status (`status`), + INDEX idx_create_time (`create_time`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='反馈工单表';