瀏覽代碼

意见反馈模块功能开发(未完成)1.3

panzhilin 1 周之前
父節點
當前提交
f139033bb3

+ 4 - 0
alien-entity/src/main/java/shop/alien/entity/store/LifeFeedback.java

@@ -48,6 +48,10 @@ public class LifeFeedback implements Serializable {
     @TableField("contact_way")
     private String contactWay;
 
+    @ApiModelProperty(value = "图片URL(多个用逗号分隔)")
+    @TableField("img_url")
+    private String imgUrl;
+
     @ApiModelProperty(value = "反馈时间")
     @TableField("feedback_time")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")

+ 0 - 62
alien-entity/src/main/java/shop/alien/entity/store/LifeImg.java

@@ -1,62 +0,0 @@
-package shop.alien.entity.store;
-
-import com.baomidou.mybatisplus.annotation.*;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import com.fasterxml.jackson.annotation.JsonInclude;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-
-import java.io.Serializable;
-import java.util.Date;
-
-/**
- * 反馈图片表
- */
-@Data
-@JsonInclude
-@TableName("life_img")
-@ApiModel(value = "LifeImg对象", description = "反馈图片")
-public class LifeImg implements Serializable {
-    private static final long serialVersionUID = 1L;
-
-    @ApiModelProperty(value = "主键ID")
-    @TableId(value = "id", type = IdType.AUTO)
-    private Integer id;
-
-    @ApiModelProperty(value = "反馈ID(关联life_feedback)")
-    @TableField("feedback_id")
-    private Integer feedbackId;
-
-    @ApiModelProperty(value = "图片URL")
-    @TableField("img_url")
-    private String imgUrl;
-
-    @ApiModelProperty(value = "图片排序")
-    @TableField("img_sort")
-    private Integer imgSort;
-
-    @ApiModelProperty(value = "删除标记, 0:未删除, 1:已删除")
-    @TableField("delete_flag")
-    @TableLogic
-    private Integer deleteFlag;
-
-    @ApiModelProperty(value = "创建时间")
-    @TableField(value = "created_time", fill = FieldFill.INSERT)
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
-    private Date createdTime;
-
-    @ApiModelProperty(value = "创建人ID")
-    @TableField("created_user_id")
-    private Integer createdUserId;
-
-    @ApiModelProperty(value = "修改时间")
-    @TableField(value = "updated_time", fill = FieldFill.UPDATE)
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
-    private Date updatedTime;
-
-    @ApiModelProperty(value = "修改人ID")
-    @TableField("updated_user_id")
-    private Integer updatedUserId;
-}
-

+ 2 - 2
alien-entity/src/main/java/shop/alien/entity/store/dto/LifeFeedbackDto.java

@@ -33,7 +33,7 @@ public class LifeFeedbackDto implements Serializable {
     @ApiModelProperty(value = "联系方式(手机号或邮箱)")
     private String contactWay;
 
-    @ApiModelProperty(value = "图片URL列表")
-    private List<String> imgUrlList;
+    @ApiModelProperty(value = "图片URL(多个用逗号分隔)")
+    private String imgUrl;
 }
 

+ 3 - 3
alien-entity/src/main/java/shop/alien/entity/store/vo/LifeFeedbackVo.java

@@ -38,6 +38,9 @@ public class LifeFeedbackVo implements Serializable {
     @ApiModelProperty(value = "联系方式")
     private String contactWay;
 
+    @ApiModelProperty(value = "图片URL(多个用逗号分隔)")
+    private String imgUrl;
+
     @ApiModelProperty(value = "反馈时间")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date feedbackTime;
@@ -48,9 +51,6 @@ public class LifeFeedbackVo implements Serializable {
     @ApiModelProperty(value = "跟进工作人员姓名")
     private String staffName;
 
-    @ApiModelProperty(value = "附件图片列表")
-    private List<String> imgUrlList;
-
     @ApiModelProperty(value = "平台反馈建议列表")
     private List<LifeFeedbackVo> platformReplies;
 }

+ 0 - 44
alien-entity/src/main/java/shop/alien/mapper/LifeImgMapper.java

@@ -1,44 +0,0 @@
-package shop.alien.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.apache.ibatis.annotations.Mapper;
-import org.apache.ibatis.annotations.Param;
-import shop.alien.entity.store.LifeImg;
-
-import java.util.List;
-
-/**
- * 反馈图片 Mapper 接口
- */
-@Mapper
-public interface LifeImgMapper extends BaseMapper<LifeImg> {
-
-    /**
-     * 根据反馈ID查询图片列表
-     * @param feedbackId 反馈ID
-     * @return 图片列表
-     */
-    List<LifeImg> selectByFeedbackId(@Param("feedbackId") Integer feedbackId);
-
-    /**
-     * 批量插入图片
-     * @param list 图片列表
-     * @return 插入数量
-     */
-    Integer batchInsert(@Param("list") List<LifeImg> list);
-
-    /**
-     * 根据反馈ID删除图片(逻辑删除)
-     * @param feedbackId 反馈ID
-     * @return 删除数量
-     */
-    Integer deleteByFeedbackId(@Param("feedbackId") Integer feedbackId);
-
-    /**
-     * 查询反馈的图片URL列表
-     * @param feedbackId 反馈ID
-     * @return 图片URL列表
-     */
-    List<String> selectImgUrlsByFeedbackId(@Param("feedbackId") Integer feedbackId);
-}
-

+ 6 - 2
alien-entity/src/main/resources/mapper/LifeFeedbackMapper.xml

@@ -13,6 +13,7 @@
         <result column="feedback_type" property="feedbackType" />
         <result column="content" property="content" />
         <result column="contact_way" property="contactWay" />
+        <result column="img_url" property="imgUrl" />
         <result column="feedback_time" property="feedbackTime" />
         <result column="follow_up_staff" property="followUpStaff" />
         <result column="handle_status" property="handleStatus" />
@@ -26,7 +27,7 @@
     <!-- 基础字段 -->
     <sql id="Base_Column_List">
         id, user_id, feedback_source, feedback_way, feedback_type, 
-        content, contact_way, feedback_time, follow_up_staff, handle_status,
+        content, contact_way, img_url, feedback_time, follow_up_staff, handle_status,
         delete_flag, created_time, created_user_id, updated_time, updated_user_id
     </sql>
 
@@ -40,6 +41,7 @@
             f.feedback_type AS feedbackType,
             f.content,
             f.contact_way AS contactWay,
+            f.img_url AS imgUrl,
             f.feedback_time AS feedbackTime,
             f.follow_up_staff AS followUpStaff,
             f.handle_status AS handleStatus,
@@ -62,7 +64,7 @@
         ORDER BY f.feedback_time DESC
     </select>
 
-    <!-- 查询反馈详情(带工作人员名称和图片) -->
+    <!-- 查询反馈详情(带工作人员名称) -->
     <select id="selectFeedbackDetail" resultType="shop.alien.entity.store.vo.LifeFeedbackVo">
         SELECT 
             f.id,
@@ -72,6 +74,7 @@
             f.feedback_type AS feedbackType,
             f.content,
             f.contact_way AS contactWay,
+            f.img_url AS imgUrl,
             f.feedback_time AS feedbackTime,
             f.follow_up_staff AS followUpStaff,
             f.handle_status AS handleStatus,
@@ -101,6 +104,7 @@
             f.feedback_way AS feedbackWay,
             f.feedback_type AS feedbackType,
             f.content,
+            f.img_url AS imgUrl,
             f.feedback_time AS feedbackTime,
             f.follow_up_staff AS followUpStaff,
             f.handle_status AS handleStatus,

+ 0 - 71
alien-entity/src/main/resources/mapper/LifeImgMapper.xml

@@ -1,71 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE mapper
-        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
-        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="shop.alien.mapper.LifeImgMapper">
-
-    <!-- 通用结果映射 -->
-    <resultMap id="BaseResultMap" type="shop.alien.entity.store.LifeImg">
-        <id column="id" property="id" />
-        <result column="feedback_id" property="feedbackId" />
-        <result column="img_url" property="imgUrl" />
-        <result column="img_sort" property="imgSort" />
-        <result column="delete_flag" property="deleteFlag" />
-        <result column="created_time" property="createdTime" />
-        <result column="created_user_id" property="createdUserId" />
-        <result column="updated_time" property="updatedTime" />
-        <result column="updated_user_id" property="updatedUserId" />
-    </resultMap>
-
-    <!-- 基础字段 -->
-    <sql id="Base_Column_List">
-        id, feedback_id, img_url, img_sort, 
-        delete_flag, created_time, created_user_id, updated_time, updated_user_id
-    </sql>
-
-    <!-- 根据反馈ID查询图片列表 -->
-    <select id="selectByFeedbackId" resultMap="BaseResultMap">
-        SELECT 
-            <include refid="Base_Column_List" />
-        FROM life_img
-        WHERE feedback_id = #{feedbackId}
-        AND delete_flag = 0
-        ORDER BY img_sort ASC
-    </select>
-
-    <!-- 批量插入图片 -->
-    <insert id="batchInsert" parameterType="java.util.List">
-        INSERT INTO life_img (
-            feedback_id, img_url, img_sort, 
-            delete_flag, created_time, created_user_id
-        ) VALUES
-        <foreach collection="list" item="item" separator=",">
-            (
-                #{item.feedbackId},
-                #{item.imgUrl},
-                #{item.imgSort},
-                0,
-                NOW(),
-                #{item.createdUserId}
-            )
-        </foreach>
-    </insert>
-
-    <!-- 根据反馈ID删除图片 -->
-    <delete id="deleteByFeedbackId">
-        UPDATE life_img 
-        SET delete_flag = 1
-        WHERE feedback_id = #{feedbackId}
-    </delete>
-
-    <!-- 查询反馈的图片URL列表 -->
-    <select id="selectImgUrlsByFeedbackId" resultType="java.lang.String">
-        SELECT img_url
-        FROM life_img
-        WHERE feedback_id = #{feedbackId}
-        AND delete_flag = 0
-        ORDER BY img_sort ASC
-    </select>
-
-</mapper>
-

+ 0 - 16
alien-store/src/main/java/shop/alien/store/controller/LifeFeedbackController.java

@@ -66,21 +66,5 @@ public class LifeFeedbackController {
         log.info("LifeFeedbackController.getFeedbackDetail, feedbackId={}", feedbackId);
         return lifeFeedbackService.getFeedbackDetail(feedbackId);
     }
-
-    @ApiOperation(value = "更新反馈处理状态", httpMethod = "POST")
-    @ApiImplicitParams({
-            @ApiImplicitParam(name = "feedbackId", value = "反馈ID", dataType = "Integer", paramType = "query", required = true),
-            @ApiImplicitParam(name = "handleStatus", value = "处理状态:0-待处理,1-处理中,2-已完成", dataType = "Integer", paramType = "query", required = true),
-            @ApiImplicitParam(name = "staffId", value = "跟进工作人员ID", dataType = "Integer", paramType = "query", required = false)
-    })
-    @PostMapping("/updateStatus")
-    public R<String> updateHandleStatus(
-            @RequestParam("feedbackId") Integer feedbackId,
-            @RequestParam("handleStatus") Integer handleStatus,
-            @RequestParam(value = "staffId", required = false) Integer staffId) {
-        log.info("LifeFeedbackController.updateHandleStatus, feedbackId={}, handleStatus={}, staffId={}", 
-                feedbackId, handleStatus, staffId);
-        return lifeFeedbackService.updateHandleStatus(feedbackId, handleStatus, staffId);
-    }
 }
 

+ 0 - 9
alien-store/src/main/java/shop/alien/store/service/LifeFeedbackService.java

@@ -43,14 +43,5 @@ public interface LifeFeedbackService extends IService<LifeFeedback> {
      * @return 反馈详情
      */
     R<LifeFeedbackVo> getFeedbackDetail(Integer feedbackId);
-
-    /**
-     * 更新反馈处理状态
-     * @param feedbackId 反馈ID
-     * @param handleStatus 处理状态
-     * @param staffId 跟进人员ID
-     * @return 更新结果
-     */
-    R<String> updateHandleStatus(Integer feedbackId, Integer handleStatus, Integer staffId);
 }
 

+ 0 - 41
alien-store/src/main/java/shop/alien/store/service/LifeImgService.java

@@ -1,41 +0,0 @@
-package shop.alien.store.service;
-
-import com.baomidou.mybatisplus.extension.service.IService;
-import shop.alien.entity.store.LifeImg;
-
-import java.util.List;
-
-/**
- * 反馈图片 Service
- */
-public interface LifeImgService extends IService<LifeImg> {
-
-    /**
-     * 根据反馈ID查询图片列表
-     * @param feedbackId 反馈ID
-     * @return 图片列表
-     */
-    List<LifeImg> getByFeedbackId(Integer feedbackId);
-
-    /**
-     * 批量保存图片
-     * @param imgList 图片列表
-     * @return 是否成功
-     */
-    boolean batchSave(List<LifeImg> imgList);
-
-    /**
-     * 根据反馈ID删除图片
-     * @param feedbackId 反馈ID
-     * @return 是否成功
-     */
-    boolean removeByFeedbackId(Integer feedbackId);
-
-    /**
-     * 查询反馈的图片URL列表
-     * @param feedbackId 反馈ID
-     * @return 图片URL列表
-     */
-    List<String> getImgUrlsByFeedbackId(Integer feedbackId);
-}
-

+ 3 - 56
alien-store/src/main/java/shop/alien/store/service/impl/LifeFeedbackServiceImpl.java

@@ -11,7 +11,6 @@ import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 import shop.alien.entity.result.R;
 import shop.alien.entity.store.LifeFeedback;
-import shop.alien.entity.store.LifeImg;
 import shop.alien.entity.store.LifeLog;
 import shop.alien.entity.store.dto.FeedbackReplyDto;
 import shop.alien.entity.store.dto.LifeFeedbackDto;
@@ -19,7 +18,6 @@ import shop.alien.entity.store.vo.LifeFeedbackVo;
 import shop.alien.mapper.LifeFeedbackMapper;
 import shop.alien.mapper.LifeLogMapper;
 import shop.alien.store.service.LifeFeedbackService;
-import shop.alien.store.service.LifeImgService;
 
 import java.util.Date;
 import java.util.List;
@@ -34,7 +32,6 @@ import java.util.List;
 public class LifeFeedbackServiceImpl extends ServiceImpl<LifeFeedbackMapper, LifeFeedback> implements LifeFeedbackService {
 
     private final LifeFeedbackMapper lifeFeedbackMapper;
-    private final LifeImgService lifeImgService;
     private final LifeLogMapper lifeLogMapper;
 
     @Override
@@ -67,23 +64,7 @@ public class LifeFeedbackServiceImpl extends ServiceImpl<LifeFeedbackMapper, Lif
                 return R.fail("提交反馈失败");
             }
 
-            // 3. 保存附件图片(使用批量插入)
-            if (!CollectionUtils.isEmpty(dto.getImgUrlList())) {
-                List<LifeImg> imgList = new java.util.ArrayList<>();
-                int sort = 1;
-                for (String imgUrl : dto.getImgUrlList()) {
-                    LifeImg img = new LifeImg();
-                    img.setFeedbackId(feedback.getId());
-                    img.setImgUrl(imgUrl);
-                    img.setImgSort(sort++);
-                    img.setCreatedTime(new Date());
-                    img.setCreatedUserId(dto.getUserId());
-                    imgList.add(img);
-                }
-                lifeImgService.batchSave(imgList);
-            }
-
-            // 4. 记录日志
+            // 3. 记录日志
             saveLog("用户提交反馈,ID:" + feedback.getId());
 
             return R.success("提交成功");
@@ -134,7 +115,7 @@ public class LifeFeedbackServiceImpl extends ServiceImpl<LifeFeedbackMapper, Lif
             // 4. 更新原始反馈的处理状态和跟进人员(使用MyBatis Plus的updateById方法)
             LifeFeedback updateFeedback = new LifeFeedback();
             updateFeedback.setId(dto.getFeedbackId());
-            updateFeedback.setHandleStatus(1); // 处理中
+            updateFeedback.setHandleStatus(2); // 已完成
             updateFeedback.setFollowUpStaff(dto.getStaffId());
             updateFeedback.setUpdatedTime(new Date());
             updateFeedback.setUpdatedUserId(dto.getStaffId());
@@ -158,13 +139,6 @@ public class LifeFeedbackServiceImpl extends ServiceImpl<LifeFeedbackMapper, Lif
             IPage<LifeFeedbackVo> voPage = lifeFeedbackMapper.selectFeedbackListWithStaff(
                     pageParam, userId, feedbackSource, 1, null
             );
-
-            // 为每条记录查询附件图片
-            voPage.getRecords().forEach(vo -> {
-                List<String> imgUrls = lifeImgService.getImgUrlsByFeedbackId(vo.getId());
-                vo.setImgUrlList(imgUrls);
-            });
-
             return voPage;
         } catch (Exception e) {
             log.error("查询反馈列表失败", e);
@@ -181,11 +155,7 @@ public class LifeFeedbackServiceImpl extends ServiceImpl<LifeFeedbackMapper, Lif
                 return R.fail("反馈记录不存在");
             }
 
-            // 2. 查询附件图片
-            List<String> imgUrls = lifeImgService.getImgUrlsByFeedbackId(feedbackId);
-            vo.setImgUrlList(imgUrls);
-
-            // 3. 查询平台回复列表(如果是主动反馈)
+            // 2. 查询平台回复列表(如果是主动反馈)
             if (vo.getFeedbackWay() == 1) {
                 List<LifeFeedbackVo> replyList = lifeFeedbackMapper.selectPlatformReplies(
                         vo.getUserId(), vo.getFeedbackSource(), vo.getFeedbackTime()
@@ -200,29 +170,6 @@ public class LifeFeedbackServiceImpl extends ServiceImpl<LifeFeedbackMapper, Lif
         }
     }
 
-    @Override
-    public R<String> updateHandleStatus(Integer feedbackId, Integer handleStatus, Integer staffId) {
-        try {
-            // 使用MyBatis Plus的updateById方法
-            LifeFeedback feedback = new LifeFeedback();
-            feedback.setId(feedbackId);
-            feedback.setHandleStatus(handleStatus);
-            feedback.setFollowUpStaff(staffId);
-            feedback.setUpdatedTime(new Date());
-            feedback.setUpdatedUserId(staffId);
-
-            boolean result = this.updateById(feedback);
-            if (result) {
-                saveLog("更新反馈处理状态,反馈ID:" + feedbackId + ",状态:" + handleStatus);
-                return R.success("更新成功");
-            }
-            return R.fail("更新失败");
-        } catch (Exception e) {
-            log.error("更新反馈处理状态失败", e);
-            return R.fail("更新失败:" + e.getMessage());
-        }
-    }
-
     /**
      * 保存操作日志
      */

+ 0 - 46
alien-store/src/main/java/shop/alien/store/service/impl/LifeImgServiceImpl.java

@@ -1,46 +0,0 @@
-package shop.alien.store.service.impl;
-
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Service;
-import shop.alien.entity.store.LifeImg;
-import shop.alien.mapper.LifeImgMapper;
-import shop.alien.store.service.LifeImgService;
-
-import java.util.List;
-
-/**
- * 反馈图片 Service实现类
- */
-@Slf4j
-@Service
-@RequiredArgsConstructor
-public class LifeImgServiceImpl extends ServiceImpl<LifeImgMapper, LifeImg> implements LifeImgService {
-
-    private final LifeImgMapper lifeImgMapper;
-
-    @Override
-    public List<LifeImg> getByFeedbackId(Integer feedbackId) {
-        return lifeImgMapper.selectByFeedbackId(feedbackId);
-    }
-
-    @Override
-    public boolean batchSave(List<LifeImg> imgList) {
-        if (imgList == null || imgList.isEmpty()) {
-            return false;
-        }
-        return lifeImgMapper.batchInsert(imgList) > 0;
-    }
-
-    @Override
-    public boolean removeByFeedbackId(Integer feedbackId) {
-        return lifeImgMapper.deleteByFeedbackId(feedbackId) > 0;
-    }
-
-    @Override
-    public List<String> getImgUrlsByFeedbackId(Integer feedbackId) {
-        return lifeImgMapper.selectImgUrlsByFeedbackId(feedbackId);
-    }
-}
-