From d3d5c2c920011bc83c8b58c2ce9e28b3ab4816b4 Mon Sep 17 00:00:00 2001 From: "YAS\\29473" <2947326429@qq.com> Date: Fri, 30 May 2025 11:42:33 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E9=97=AE=E9=A2=98=E5=8F=8D?= =?UTF-8?q?=E9=A6=88=E8=A1=A8=E8=AE=B0=E5=BD=95=E7=94=A8=E6=88=B7=E5=8F=8D?= =?UTF-8?q?=E9=A6=88=E7=9A=84=E9=97=AE=E9=A2=98,=20=E6=8F=90=E4=BE=9B?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=8E=A5=E5=8F=A3=E5=92=8C=E4=BF=9D=E5=AD=98?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/uniapp/customer/MemberController.java | 52 +++++++- .../jsowell/pile/domain/MemberFeedback.java | 78 ++++++++++++ .../jsowell/pile/dto/MemberFeedbackDTO.java | 29 +++++ .../pile/mapper/MemberFeedbackMapper.java | 25 ++++ .../pile/service/MemberFeedbackService.java | 22 ++++ .../impl/MemberFeedbackServiceImpl.java | 62 ++++++++++ .../vo/uniapp/customer/MemberFeedbackVO.java | 63 ++++++++++ .../mapper/pile/MemberFeedbackMapper.xml | 112 ++++++++++++++++++ 8 files changed, 442 insertions(+), 1 deletion(-) create mode 100644 jsowell-pile/src/main/java/com/jsowell/pile/domain/MemberFeedback.java create mode 100644 jsowell-pile/src/main/java/com/jsowell/pile/dto/MemberFeedbackDTO.java create mode 100644 jsowell-pile/src/main/java/com/jsowell/pile/mapper/MemberFeedbackMapper.java create mode 100644 jsowell-pile/src/main/java/com/jsowell/pile/service/MemberFeedbackService.java create mode 100644 jsowell-pile/src/main/java/com/jsowell/pile/service/impl/MemberFeedbackServiceImpl.java create mode 100644 jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/MemberFeedbackVO.java create mode 100644 jsowell-pile/src/main/resources/mapper/pile/MemberFeedbackMapper.xml diff --git a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/customer/MemberController.java b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/customer/MemberController.java index ffc45580c..28f85d12d 100644 --- a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/customer/MemberController.java +++ b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/customer/MemberController.java @@ -14,10 +14,10 @@ import com.jsowell.common.response.RestApiResponse; import com.jsowell.common.util.SMSUtil; import com.jsowell.common.util.StringUtils; import com.jsowell.pile.domain.MemberPlateNumberRelation; -import com.jsowell.pile.domain.UserFrequentedStationInfo; import com.jsowell.pile.dto.*; import com.jsowell.pile.service.*; import com.jsowell.pile.vo.base.MemberWalletVO; +import com.jsowell.pile.vo.uniapp.customer.MemberFeedbackVO; import com.jsowell.pile.vo.uniapp.customer.InvoiceTitleVO; import com.jsowell.pile.vo.uniapp.customer.MemberVO; import com.jsowell.pile.vo.uniapp.customer.MemberWalletInfoVO; @@ -59,6 +59,9 @@ public class MemberController extends BaseController { @Autowired private PileStationInfoService pileStationInfoService; + @Autowired + private MemberFeedbackService memberFeedbackService; + /** * 下发短信接口 business * http://localhost:8080/uniapp/member/sendSMS @@ -677,4 +680,51 @@ public class MemberController extends BaseController { return response; } + + /** + * 用户反馈信息保存 + * @param request + * @param dto + * @return + */ + @PostMapping("/saveFeedback") + public RestApiResponse saveFeedback(HttpServletRequest request, @RequestBody MemberFeedbackDTO dto) { + RestApiResponse response = null; + try { + String memberId = getMemberIdByAuthorization(request); + dto.setMemberId(memberId); + memberFeedbackService.saveFeedback(dto); + response = new RestApiResponse<>(); + }catch (Exception e) { + logger.error("用户反馈信息保存 error", e); + response = new RestApiResponse<>(e); + } + logger.info("用户反馈信息保存 result:{}", response); + return response; + } + + + /** + * 用户获取反馈信息列表 + * @param request + * @return + */ + @GetMapping("/getFeedbackList") + public RestApiResponse getFeedbackList(HttpServletRequest request) { + RestApiResponse response = null; + try { + String memberId = getMemberIdByAuthorization(request); + List list = memberFeedbackService.getFeedbackList(memberId); + logger.info("用户获取反馈信息列表 list:{}", JSON.toJSONString(list)); + response = new RestApiResponse<>(ImmutableMap.of("list", list)); + }catch (Exception e) { + logger.error("用户获取反馈信息列表 error", e); + response = new RestApiResponse<>(e); + } + logger.info("用户获取反馈信息列表 result:{}", response); + return response; + } + + + } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/domain/MemberFeedback.java b/jsowell-pile/src/main/java/com/jsowell/pile/domain/MemberFeedback.java new file mode 100644 index 000000000..9a5ee3530 --- /dev/null +++ b/jsowell-pile/src/main/java/com/jsowell/pile/domain/MemberFeedback.java @@ -0,0 +1,78 @@ +package com.jsowell.pile.domain; + +import com.jsowell.common.core.domain.BaseEntity; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class MemberFeedback extends BaseEntity { + private static final long serialVersionUID = 1L; + + /** + * 主键id + */ + private Long id; + + /** + * 会员id + */ + private String memberId; + + /** + * 会员姓名 + */ + private String memberName; + + /** + * 联系方式 + */ + private String contactInfo; + + /** + * 反馈类型 1=功能建议,2=系统BUG,3=服务投诉,4=站点问题,5=电桩问题,6=其他) + */ + private String feedbackType; + + /** + * 反馈内容 + */ + private String feedbackContent; + + /** + * 处理状态(0=未处理,1=处理中,2=已处理,3=待跟进) + */ + private String status; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 更新时间 + */ + private Date updateTime; + + /** + * 管理员回复内容 + */ + private String replyContent; + + /** + * 管理员回复时间 + */ + private Date replyTime; + + /** + * 删除标记(0=未删除,1=已删除) + */ + private String delFlag; + +} diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/dto/MemberFeedbackDTO.java b/jsowell-pile/src/main/java/com/jsowell/pile/dto/MemberFeedbackDTO.java new file mode 100644 index 000000000..03c26b680 --- /dev/null +++ b/jsowell-pile/src/main/java/com/jsowell/pile/dto/MemberFeedbackDTO.java @@ -0,0 +1,29 @@ +package com.jsowell.pile.dto; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class MemberFeedbackDTO { + + /** + * 会员ID + */ + private String memberId; + + /** + * 反馈内容 + */ + private String feedbackContent; + + /** + * 反馈类型 + */ + private String feedbackType; + + + +} diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/mapper/MemberFeedbackMapper.java b/jsowell-pile/src/main/java/com/jsowell/pile/mapper/MemberFeedbackMapper.java new file mode 100644 index 000000000..8a408f56a --- /dev/null +++ b/jsowell-pile/src/main/java/com/jsowell/pile/mapper/MemberFeedbackMapper.java @@ -0,0 +1,25 @@ +package com.jsowell.pile.mapper; + +import com.jsowell.pile.domain.MemberFeedback; +import com.jsowell.pile.vo.uniapp.customer.MemberFeedbackVO; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +@Mapper +public interface MemberFeedbackMapper { + + /** + * 保存会员反馈信息 + * @param memberFeedback + * @return + */ + public int insertMemberFeedback(MemberFeedback memberFeedback); + + /** + * 根据会员ID查询会员反馈信息列表 + * @param memberId + * @return + */ + List selectMemberFeedbackList(String memberId); +} diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/MemberFeedbackService.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/MemberFeedbackService.java new file mode 100644 index 000000000..2d80c55e0 --- /dev/null +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/MemberFeedbackService.java @@ -0,0 +1,22 @@ +package com.jsowell.pile.service; + +import com.jsowell.pile.dto.MemberFeedbackDTO; +import com.jsowell.pile.vo.uniapp.customer.MemberFeedbackVO; + +import java.util.List; + +public interface MemberFeedbackService { + + /** + * 用户反馈信息保存 + * @param dto + */ + void saveFeedback(MemberFeedbackDTO dto); + + /** + * 获取用户反馈信息列表 + * @param memberId + * @return + */ + List getFeedbackList(String memberId); +} diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/MemberFeedbackServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/MemberFeedbackServiceImpl.java new file mode 100644 index 000000000..a9fd81eae --- /dev/null +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/MemberFeedbackServiceImpl.java @@ -0,0 +1,62 @@ +package com.jsowell.pile.service.impl; + +import com.jsowell.common.constant.Constants; +import com.jsowell.common.util.DateUtils; +import com.jsowell.pile.domain.MemberBasicInfo; +import com.jsowell.pile.domain.MemberFeedback; +import com.jsowell.pile.dto.MemberFeedbackDTO; +import com.jsowell.pile.mapper.MemberBasicInfoMapper; +import com.jsowell.pile.mapper.MemberFeedbackMapper; +import com.jsowell.pile.service.MemberFeedbackService; +import com.jsowell.pile.vo.uniapp.customer.MemberFeedbackVO; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +@Slf4j +public class MemberFeedbackServiceImpl implements MemberFeedbackService { + + @Autowired + MemberBasicInfoMapper memberBasicInfoMapper; + + @Autowired + MemberFeedbackMapper memberFeedbackMapper; + + /** + * 用户反馈保存 + * @param dto + */ + @Override + public void saveFeedback(MemberFeedbackDTO dto) { + MemberBasicInfo memberInfo = memberBasicInfoMapper.selectInfoByMemberId(dto.getMemberId()); + if (memberInfo == null) { + throw new IllegalArgumentException(""); + } + MemberFeedback memberFeedback = MemberFeedback.builder () + .memberId(dto.getMemberId()) + .memberName(memberInfo.getNickName()) + .contactInfo(memberInfo.getMobileNumber()) // 联系方式 + .feedbackType(dto.getFeedbackType()) //反馈类型 + .feedbackContent(dto.getFeedbackContent()) + .status(Constants.ONE) + .createTime(DateUtils.getNowDate()) + .delFlag(Constants.ZERO) + .build(); + + // 保存反馈信息至数据库 + memberFeedbackMapper.insertMemberFeedback(memberFeedback); + } + + /** + * 获取用户反馈列表 + * @param memberId + * @return + */ + @Override + public List getFeedbackList(String memberId) { + return memberFeedbackMapper.selectMemberFeedbackList(memberId); + } +} diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/MemberFeedbackVO.java b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/MemberFeedbackVO.java new file mode 100644 index 000000000..13538b298 --- /dev/null +++ b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/MemberFeedbackVO.java @@ -0,0 +1,63 @@ +package com.jsowell.pile.vo.uniapp.customer; + +import lombok.Builder; +import lombok.Data; + +import java.util.Date; + +@Data +@Builder +public class MemberFeedbackVO { + + /** + * 会员id + */ + private String memberId; + + /** + * 会员姓名 + */ + private String memberName; + + /** + * 联系方式 + */ + private String contactInfo; + + /** + * 反馈类型 1=功能建议,2=系统BUG,3=服务投诉,4=站点问题,5=电桩问题,6=其他) + */ + private String feedbackType; + + /** + * 反馈内容 + */ + private String feedbackContent; + + /** + * 处理状态(0=未处理,1=处理中,2=已处理,3=待跟进) + */ + private String status; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 更新时间 + */ + private Date updateTime; + + /** + * 管理员回复内容 + */ + private String replyContent; + + /** + * 管理员回复时间 + */ + private Date replyTime; + + +} diff --git a/jsowell-pile/src/main/resources/mapper/pile/MemberFeedbackMapper.xml b/jsowell-pile/src/main/resources/mapper/pile/MemberFeedbackMapper.xml new file mode 100644 index 000000000..020fd6b94 --- /dev/null +++ b/jsowell-pile/src/main/resources/mapper/pile/MemberFeedbackMapper.xml @@ -0,0 +1,112 @@ + + + + + + + + + + + + + + + + + + + + + select id, member_id, member_name, contact_info, feedback_type, feedback_content, status, create_time, update_time, reply_content, reply_time, del_flag from member_feedback + + + + insert into member_feedback + + + id, + + + member_id, + + + member_name, + + + contact_info, + + + feedback_type, + + + feedback_content, + + + status, + + + create_time, + + + update_time, + + + reply_content, + + + reply_time, + + + del_flag, + + + + + #{id}, + + + #{memberId}, + + + #{memberName}, + + + #{contactInfo}, + + + #{feedbackType}, + + + #{feedbackContent}, + + + #{status}, + + + #{createTime}, + + + #{updateTime}, + + + #{replyContent}, + + + #{replyTime}, + + + #{delFlag}, + + + + + + + \ No newline at end of file