From fc9d8e83b3c38ecfff612b2dfd8e90db720ed3db Mon Sep 17 00:00:00 2001
From: liurunyu <lry9898@163.com>
Date: 星期五, 01 十一月 2024 11:25:22 +0800
Subject: [PATCH] Merge branch 'master' of http://8.140.179.55:20000/r/pipIrr-SV

---
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeRechargeProfile.java                   |   49 ++++
 pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/issue/dto/DtoReportReply.java    |   35 +++
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeReportReplyMapper.xml                                 |  114 ++++++++++
 pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/issue/IssueSv.java               |   34 +++
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeIssueReportMapper.xml                                 |    3 
 pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/virtualCard/VirtualCardCtrl.java |   15 +
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeRechargeProfileMapper.java              |   36 +++
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoIssueReportReply.java                    |   45 ++++
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeReportReply.java                       |   59 +++++
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoRechargeProfile.java                     |   31 ++
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeRechargeProfileMapper.xml                             |  103 +++++++++
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeReportReplyMapper.java                  |   35 +++
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoIssueReport.java                         |    8 
 pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/virtualCard/VirtualCardSv.java   |   12 +
 pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/issue/IssueCtrl.java             |   63 +++++
 15 files changed, 638 insertions(+), 4 deletions(-)

diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeRechargeProfileMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeRechargeProfileMapper.java
new file mode 100644
index 0000000..eac20da
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeRechargeProfileMapper.java
@@ -0,0 +1,36 @@
+package com.dy.pipIrrGlobal.daoSe;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.dy.pipIrrGlobal.pojoSe.SeRechargeProfile;
+import com.dy.pipIrrGlobal.voSe.VoRechargeProfile;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2024-11-01 9:40
+ * @LastEditTime 2024-11-01 9:40
+ * @Description
+ */
+
+@Mapper
+public interface SeRechargeProfileMapper extends BaseMapper<SeRechargeProfile> {
+    int deleteByPrimaryKey(Long id);
+
+    int insert(SeRechargeProfile record);
+
+    int insertSelective(SeRechargeProfile record);
+
+    SeRechargeProfile selectByPrimaryKey(Long id);
+
+    int updateByPrimaryKeySelective(SeRechargeProfile record);
+
+    int updateByPrimaryKey(SeRechargeProfile record);
+
+    /**
+     * 鑾峰彇铏氭嫙鍗″父鐢ㄥ厖鍊奸噾棰濋厤缃�
+     * @return
+     */
+    List<VoRechargeProfile> gerRechargeProfiles();
+}
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeReportReplyMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeReportReplyMapper.java
new file mode 100644
index 0000000..b85e4a5
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeReportReplyMapper.java
@@ -0,0 +1,35 @@
+package com.dy.pipIrrGlobal.daoSe;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.dy.pipIrrGlobal.pojoSe.SeReportReply;
+import com.dy.pipIrrGlobal.voSe.VoIssueReportReply;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2024-10-31 14:59
+ * @LastEditTime 2024-10-31 14:59
+ * @Description
+ */
+
+@Mapper
+public interface SeReportReplyMapper extends BaseMapper<SeReportReply> {
+    int deleteByPrimaryKey(Long id);
+
+    int insert(SeReportReply record);
+
+    int insertSelective(SeReportReply record);
+
+    SeReportReply selectByPrimaryKey(Long id);
+
+    int updateByPrimaryKeySelective(SeReportReply record);
+
+    int updateByPrimaryKey(SeReportReply record);
+
+    /**
+     * 鏍规嵁闂涓婃姤ID鑾峰彇涓婃姤鍥炲淇℃伅
+     * @param reportId
+     * @return
+     */
+    VoIssueReportReply getReportReplyByReportId(Long reportId);
+}
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeRechargeProfile.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeRechargeProfile.java
new file mode 100644
index 0000000..7b4a1f4
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeRechargeProfile.java
@@ -0,0 +1,49 @@
+package com.dy.pipIrrGlobal.pojoSe;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2024-11-01 9:40
+ * @LastEditTime 2024-11-01 9:40
+ * @Description 铏氭嫙鍗″父鐢ㄥ厖鍊奸噾棰濋厤缃疄浣撶被
+ */
+
+import com.alibaba.fastjson2.annotation.JSONField;
+import com.alibaba.fastjson2.writer.ObjectWriterImplToString;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.dy.common.po.BaseEntity;
+import lombok.*;
+
+@TableName(value="se_recharge_profile", autoResultMap = true)
+@Data
+@Builder
+@ToString
+@NoArgsConstructor
+@AllArgsConstructor
+public class SeRechargeProfile implements BaseEntity {
+    public static final long serialVersionUID = 202411010943001L;
+
+    /**
+    * 涓婚敭
+    */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    @TableId(type = IdType.INPUT)
+    private Long id;
+
+    /**
+    * 鍏呭�奸噾棰�
+    */
+    private Integer rechargeAmount;
+
+    /**
+    * 鎺掑簭
+    */
+    private Integer sort;
+
+    /**
+    * 閫昏緫鍒犻櫎鏍囪瘑;鏈垹闄や负0锛屽凡鍒犻櫎涓哄垹闄ゆ椂闂�
+    */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    private Long deleted;
+}
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeReportReply.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeReportReply.java
new file mode 100644
index 0000000..3c13a8f
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeReportReply.java
@@ -0,0 +1,59 @@
+package com.dy.pipIrrGlobal.pojoSe;
+
+import com.alibaba.fastjson2.annotation.JSONField;
+import com.alibaba.fastjson2.writer.ObjectWriterImplToString;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.dy.common.po.BaseEntity;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.*;
+
+import java.util.Date;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2024-10-31 14:59
+ * @LastEditTime 2024-10-31 14:59
+ * @Description 鍐滄埛闂涓婃姤鍥炲瀹炰綋绫�
+ */
+
+@TableName(value="se_report_reply", autoResultMap = true)
+@Data
+@Builder
+@ToString
+@NoArgsConstructor
+@AllArgsConstructor
+public class SeReportReply implements BaseEntity {
+    public static final long serialVersionUID = 202410311502001L;
+
+    /**
+    * 涓婚敭
+    */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    @TableId(type = IdType.INPUT)
+    private Long id;
+
+    /**
+    * 闂涓婃姤ID
+    */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    private Long reportId;
+
+    /**
+    * 绛斿鍐呭
+    */
+    private String replyContent;
+
+    /**
+    * 绛斿鏃堕棿
+    */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date replyTime;
+
+    /**
+    * 绛斿浜篒D
+    */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    private Long replierId;
+}
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoIssueReport.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoIssueReport.java
index 950ddf2..4f5b493 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoIssueReport.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoIssueReport.java
@@ -17,7 +17,7 @@
  */
 
 @Data
-@JsonPropertyOrder({"issueReportId", "clientName", "phone", "reportTime", "content", "images", "audios", "videos", "state"})
+@JsonPropertyOrder({"issueReportId", "clientName", "phone", "reportTime", "content", "images", "audios", "videos", "replyTime", "stateId", "state"})
 public class VoIssueReport implements BaseEntity {
     private static final long serialVersionUID = 202410301354001L;
 
@@ -64,6 +64,12 @@
     private String videos;
 
     /**
+     * 涓婃姤鍥炲鏃堕棿
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date replyTime;
+
+    /**
      * 鐘舵�佸��
      */
     private Integer stateId;
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoIssueReportReply.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoIssueReportReply.java
new file mode 100644
index 0000000..790ff9b
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoIssueReportReply.java
@@ -0,0 +1,45 @@
+package com.dy.pipIrrGlobal.voSe;
+
+import com.alibaba.fastjson2.annotation.JSONField;
+import com.alibaba.fastjson2.writer.ObjectWriterImplToString;
+import com.dy.common.po.BaseEntity;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2024-10-31 15:46
+ * @LastEditTime 2024-10-31 15:46
+ * @Description 鍐滄埛闂涓婃姤鍥炲瑙嗗浘瀵硅薄
+ */
+
+@Data
+@JsonPropertyOrder({"replyContent", "replyTime", "replierId", "replier"})
+public class VoIssueReportReply implements BaseEntity {
+    private static final long serialVersionUID = 202410311548001L;
+
+    /**
+     * 鍥炲鍐呭
+     */
+    private String replyContent;
+
+    /**
+     * 鍥炲鏃堕棿
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date replyTime;
+
+    /**
+     * 鍥炲浜篒D
+     */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    private Long replierId;
+
+    /**
+     * 鍥炲浜哄鍚�
+     */
+    private String replier;
+}
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoRechargeProfile.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoRechargeProfile.java
new file mode 100644
index 0000000..81f1e79
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoRechargeProfile.java
@@ -0,0 +1,31 @@
+package com.dy.pipIrrGlobal.voSe;
+
+import com.alibaba.fastjson2.annotation.JSONField;
+import com.alibaba.fastjson2.writer.ObjectWriterImplToString;
+import com.dy.common.po.BaseEntity;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import lombok.Data;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2024-11-01 9:46
+ * @LastEditTime 2024-11-01 9:46
+ * @Description 铏氭嫙鍗″父鐢ㄥ厖鍊奸噾棰濊鍥惧璞�
+ */
+
+@Data
+@JsonPropertyOrder({"profileId", "rechargeAmount", "sort"})
+public class VoRechargeProfile implements BaseEntity {
+    private static final long serialVersionUID = 202411010948001L;
+
+    /**
+     * 閰嶇疆ID
+     */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    private Long profileId;
+
+    /**
+     * 鍏呭�奸噾棰�
+     */
+    private Integer rechargeAmount;
+}
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeIssueReportMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeIssueReportMapper.xml
index 7c433e3..3183e50 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeIssueReportMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeIssueReportMapper.xml
@@ -175,6 +175,7 @@
     SELECT COUNT(*) AS recordCount
     FROM se_issue_report rpt
         LEFT JOIN se_client cli ON cli.id = rpt.client_id
+        LEFT JOIN se_report_reply rpy ON rpy.report_id = rpt.id
     <where>
       AND rpt.state != 3
 
@@ -211,6 +212,7 @@
         rpt.images,
         rpt.audios,
         rpt.videos,
+        rpy.reply_time AS replyTime,
         rpt.state AS stateId,
         CASE
             WHEN rpt.state = 1 THEN '鏈彈鐞�'
@@ -218,6 +220,7 @@
         END AS state
     FROM se_issue_report rpt
         LEFT JOIN se_client cli ON cli.id = rpt.client_id
+        LEFT JOIN se_report_reply rpy ON rpy.report_id = rpt.id
     <where>
       AND rpt.state != 3
 
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeRechargeProfileMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeRechargeProfileMapper.xml
new file mode 100644
index 0000000..987b18e
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeRechargeProfileMapper.xml
@@ -0,0 +1,103 @@
+<?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="com.dy.pipIrrGlobal.daoSe.SeRechargeProfileMapper">
+  <resultMap id="BaseResultMap" type="com.dy.pipIrrGlobal.pojoSe.SeRechargeProfile">
+    <!--@mbg.generated-->
+    <!--@Table se_recharge_profile-->
+    <id column="id" jdbcType="BIGINT" property="id" />
+    <result column="recharge_amount" jdbcType="INTEGER" property="rechargeAmount" />
+    <result column="sort" jdbcType="INTEGER" property="sort" />
+    <result column="deleted" jdbcType="BIGINT" property="deleted" />
+  </resultMap>
+  <sql id="Base_Column_List">
+    <!--@mbg.generated-->
+    id, recharge_amount, sort, deleted
+  </sql>
+  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
+    <!--@mbg.generated-->
+    select 
+    <include refid="Base_Column_List" />
+    from se_recharge_profile
+    where id = #{id,jdbcType=BIGINT}
+  </select>
+  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
+    <!--@mbg.generated-->
+    delete from se_recharge_profile
+    where id = #{id,jdbcType=BIGINT}
+  </delete>
+  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoSe.SeRechargeProfile">
+    <!--@mbg.generated-->
+    insert into se_recharge_profile (id, recharge_amount, sort, 
+      deleted)
+    values (#{id,jdbcType=BIGINT}, #{rechargeAmount,jdbcType=INTEGER}, #{sort,jdbcType=INTEGER}, 
+      #{deleted,jdbcType=BIGINT})
+  </insert>
+  <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoSe.SeRechargeProfile">
+    <!--@mbg.generated-->
+    insert into se_recharge_profile
+    <trim prefix="(" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        id,
+      </if>
+      <if test="rechargeAmount != null">
+        recharge_amount,
+      </if>
+      <if test="sort != null">
+        sort,
+      </if>
+      <if test="deleted != null">
+        deleted,
+      </if>
+    </trim>
+    <trim prefix="values (" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        #{id,jdbcType=BIGINT},
+      </if>
+      <if test="rechargeAmount != null">
+        #{rechargeAmount,jdbcType=INTEGER},
+      </if>
+      <if test="sort != null">
+        #{sort,jdbcType=INTEGER},
+      </if>
+      <if test="deleted != null">
+        #{deleted,jdbcType=BIGINT},
+      </if>
+    </trim>
+  </insert>
+  <update id="updateByPrimaryKeySelective" parameterType="com.dy.pipIrrGlobal.pojoSe.SeRechargeProfile">
+    <!--@mbg.generated-->
+    update se_recharge_profile
+    <set>
+      <if test="rechargeAmount != null">
+        recharge_amount = #{rechargeAmount,jdbcType=INTEGER},
+      </if>
+      <if test="sort != null">
+        sort = #{sort,jdbcType=INTEGER},
+      </if>
+      <if test="deleted != null">
+        deleted = #{deleted,jdbcType=BIGINT},
+      </if>
+    </set>
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+  <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoSe.SeRechargeProfile">
+    <!--@mbg.generated-->
+    update se_recharge_profile
+    set recharge_amount = #{rechargeAmount,jdbcType=INTEGER},
+      sort = #{sort,jdbcType=INTEGER},
+      deleted = #{deleted,jdbcType=BIGINT}
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+
+  <!--鑾峰彇铏氭嫙鍗″父鐢ㄥ厖鍊奸噾棰濋厤缃�-->
+  <select id="gerRechargeProfiles" resultType="com.dy.pipIrrGlobal.voSe.VoRechargeProfile">
+    SELECT
+      id AS profileId,
+      recharge_amount AS rechargeAmount
+    FROM se_recharge_profile
+    ORDER BY sort
+  </select>
+
+
+
+</mapper>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeReportReplyMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeReportReplyMapper.xml
new file mode 100644
index 0000000..bb58259
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeReportReplyMapper.xml
@@ -0,0 +1,114 @@
+<?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="com.dy.pipIrrGlobal.daoSe.SeReportReplyMapper">
+  <resultMap id="BaseResultMap" type="com.dy.pipIrrGlobal.pojoSe.SeReportReply">
+    <!--@mbg.generated-->
+    <!--@Table se_report_reply-->
+    <id column="id" jdbcType="BIGINT" property="id" />
+    <result column="report_id" jdbcType="BIGINT" property="reportId" />
+    <result column="reply_content" jdbcType="VARCHAR" property="replyContent" />
+    <result column="reply_time" jdbcType="TIMESTAMP" property="replyTime" />
+    <result column="replier_id" jdbcType="BIGINT" property="replierId" />
+  </resultMap>
+  <sql id="Base_Column_List">
+    <!--@mbg.generated-->
+    id, report_id, reply_content, reply_time, replier_id
+  </sql>
+  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
+    <!--@mbg.generated-->
+    select 
+    <include refid="Base_Column_List" />
+    from se_report_reply
+    where id = #{id,jdbcType=BIGINT}
+  </select>
+  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
+    <!--@mbg.generated-->
+    delete from se_report_reply
+    where id = #{id,jdbcType=BIGINT}
+  </delete>
+  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoSe.SeReportReply">
+    <!--@mbg.generated-->
+    insert into se_report_reply (id, report_id, reply_content, 
+      reply_time, replier_id)
+    values (#{id,jdbcType=BIGINT}, #{reportId,jdbcType=BIGINT}, #{replyContent,jdbcType=VARCHAR}, 
+      #{replyTime,jdbcType=TIMESTAMP}, #{replierId,jdbcType=BIGINT})
+  </insert>
+  <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoSe.SeReportReply">
+    <!--@mbg.generated-->
+    insert into se_report_reply
+    <trim prefix="(" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        id,
+      </if>
+      <if test="reportId != null">
+        report_id,
+      </if>
+      <if test="replyContent != null">
+        reply_content,
+      </if>
+      <if test="replyTime != null">
+        reply_time,
+      </if>
+      <if test="replierId != null">
+        replier_id,
+      </if>
+    </trim>
+    <trim prefix="values (" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        #{id,jdbcType=BIGINT},
+      </if>
+      <if test="reportId != null">
+        #{reportId,jdbcType=BIGINT},
+      </if>
+      <if test="replyContent != null">
+        #{replyContent,jdbcType=VARCHAR},
+      </if>
+      <if test="replyTime != null">
+        #{replyTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="replierId != null">
+        #{replierId,jdbcType=BIGINT},
+      </if>
+    </trim>
+  </insert>
+  <update id="updateByPrimaryKeySelective" parameterType="com.dy.pipIrrGlobal.pojoSe.SeReportReply">
+    <!--@mbg.generated-->
+    update se_report_reply
+    <set>
+      <if test="reportId != null">
+        report_id = #{reportId,jdbcType=BIGINT},
+      </if>
+      <if test="replyContent != null">
+        reply_content = #{replyContent,jdbcType=VARCHAR},
+      </if>
+      <if test="replyTime != null">
+        reply_time = #{replyTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="replierId != null">
+        replier_id = #{replierId,jdbcType=BIGINT},
+      </if>
+    </set>
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+  <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoSe.SeReportReply">
+    <!--@mbg.generated-->
+    update se_report_reply
+    set report_id = #{reportId,jdbcType=BIGINT},
+      reply_content = #{replyContent,jdbcType=VARCHAR},
+      reply_time = #{replyTime,jdbcType=TIMESTAMP},
+      replier_id = #{replierId,jdbcType=BIGINT}
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+
+  <!--鏍规嵁闂涓婃姤ID鑾峰彇涓婃姤鍥炲淇℃伅-->
+  <select id="getReportReplyByReportId" resultType="com.dy.pipIrrGlobal.voSe.VoIssueReportReply">
+    SELECT
+        rpy.reply_content AS replyContent,
+        rpy.reply_time AS replyTime,
+        rpy.replier_id AS replierId,
+        user.name AS replier
+    FROM se_report_reply rpy
+        INNER JOIN ba_user user ON user.id = rpy.replier_id
+    WHERE rpy.report_id = #{reportId}
+  </select>
+</mapper>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/issue/IssueCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/issue/IssueCtrl.java
index 8ea2eec..8091d44 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/issue/IssueCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/issue/IssueCtrl.java
@@ -5,8 +5,11 @@
 import com.dy.common.webUtil.BaseResponseUtils;
 import com.dy.common.webUtil.QueryResultVo;
 import com.dy.pipIrrGlobal.pojoSe.SeIssueReport;
+import com.dy.pipIrrGlobal.pojoSe.SeReportReply;
 import com.dy.pipIrrGlobal.voSe.VoIssueReport;
+import com.dy.pipIrrGlobal.voSe.VoIssueReportReply;
 import com.dy.pipIrrWechat.issue.dto.DtoIssueReport;
+import com.dy.pipIrrWechat.issue.dto.DtoReportReply;
 import com.dy.pipIrrWechat.issue.qo.QoIssueReport;
 import jakarta.validation.Valid;
 import lombok.RequiredArgsConstructor;
@@ -104,16 +107,70 @@
         }
 
         try {
-            //鍙栨按鍙D
             Integer recordCount = Optional.ofNullable(issueSv.deleteIssueReport(issueReportId)).orElse(0);
             if (recordCount == 0) {
                 return BaseResponseUtils.buildErrorMsg("鍐滄埛闂涓婃姤鍒犻櫎澶辫触");
-            } else {
-                return BaseResponseUtils.buildSuccess(true);
+            }else {
+                return BaseResponseUtils.buildSuccess();
             }
         } catch (Exception e) {
             log.error("鍐滄埛闂涓婃姤鍒犻櫎澶辫触", e);
             return BaseResponseUtils.buildException(e.getMessage());
         }
     }
+
+    /**
+     * 鍥炲鍐滄埛闂涓婃姤
+     * @param po
+     * @param bindingResult
+     * @return
+     */
+    @PostMapping(path = "replyReport")
+    @Transactional(rollbackFor = Exception.class)
+    public BaseResponse<Boolean> replyReport(@RequestBody @Valid DtoReportReply po, BindingResult bindingResult) {
+        if(bindingResult != null && bindingResult.hasErrors()){
+            return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
+        }
+
+        // 娣诲姞涓婃姤鍥炲璁板綍
+        SeReportReply seReportReply = new SeReportReply();
+        seReportReply.setReportId(po.getReportId());
+        seReportReply.setReplyContent(po.getReplyContent());
+        seReportReply.setReplyTime(new Date());
+        seReportReply.setReplierId(po.getReplierId());
+        Long reportReplyId = issueSv.insertReportReply(seReportReply);
+        if(reportReplyId == null) {
+            return BaseResponseUtils.buildErrorMsg("鍥炲鍐滄埛闂涓婃姤澶辫触");
+        }
+
+        // 淇敼闂涓婃姤鐘舵�佷负宸插洖澶�
+        SeIssueReport seIssueReport = new SeIssueReport();
+        seIssueReport.setId(po.getReportId());
+        seIssueReport.setState((byte)2);
+        Integer issueReportId = issueSv.updateIssueReport(seIssueReport);
+        if(issueReportId == null) {
+            return BaseResponseUtils.buildErrorMsg("鍐滄埛闂涓婃姤淇敼澶辫触");
+        }
+
+        return BaseResponseUtils.buildSuccess(true) ;
+    }
+
+    /**
+     * 鏍规嵁闂涓婃姤ID鑾峰彇涓婃姤鍥炲淇℃伅
+     * @param reportId
+     * @return
+     */
+    @GetMapping(path = "/getReportReply")
+    public BaseResponse<VoIssueReportReply> getReportReply(@RequestParam("reportId") Long reportId) {
+        if(reportId == null) {
+            return BaseResponseUtils.buildErrorMsg("璇烽�夋嫨涓�涓棶棰樹笂鎶�");
+        }
+
+        try {
+            return BaseResponseUtils.buildSuccess(issueSv.getReportReplyByReportId(reportId));
+        } catch (Exception e) {
+            log.error("鑾峰彇涓婃姤鍥炲淇℃伅褰曞紓甯�", e);
+            return BaseResponseUtils.buildException(e.getMessage());
+        }
+    }
 }
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/issue/IssueSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/issue/IssueSv.java
index dc3836c..dce5580 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/issue/IssueSv.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/issue/IssueSv.java
@@ -2,8 +2,11 @@
 
 import com.dy.common.webUtil.QueryResultVo;
 import com.dy.pipIrrGlobal.daoSe.SeIssueReportMapper;
+import com.dy.pipIrrGlobal.daoSe.SeReportReplyMapper;
 import com.dy.pipIrrGlobal.pojoSe.SeIssueReport;
+import com.dy.pipIrrGlobal.pojoSe.SeReportReply;
 import com.dy.pipIrrGlobal.voSe.VoIssueReport;
+import com.dy.pipIrrGlobal.voSe.VoIssueReportReply;
 import com.dy.pipIrrWechat.issue.qo.QoIssueReport;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.common.utils.PojoUtils;
@@ -26,6 +29,9 @@
     @Autowired
     private SeIssueReportMapper seIssueReportMapper;
 
+    @Autowired
+    private SeReportReplyMapper seReportReplyMapper;
+
     /**
      * 娣诲姞闂涓婃姤淇℃伅
      * @param po
@@ -34,6 +40,15 @@
     public Long insertIssueReport(SeIssueReport po) {
         seIssueReportMapper.insert(po);
         return po.getId();
+    }
+
+    /**
+     * 淇敼鍐滄埛闂涓婃姤鐘舵�侊紝鍥炲鍙婂垹闄ゆ椂浣跨敤
+     * @param po
+     * @return
+     */
+    public Integer updateIssueReport(SeIssueReport po) {
+        return seIssueReportMapper.updateByPrimaryKeySelective(po);
     }
 
     /**
@@ -76,4 +91,23 @@
         return seIssueReportMapper.deleteIssueReport(issueReportId);
     }
 
+    /**
+     * 娣诲姞鍐滄埛闂涓婃姤鍥炲
+     * @param po
+     * @return
+     */
+    public Long insertReportReply(SeReportReply po) {
+        seReportReplyMapper.insert(po);
+        return po.getId();
+    }
+
+    /**
+     * 鏍规嵁闂涓婃姤ID鑾峰彇涓婃姤鍥炲淇℃伅
+     * @param reportId
+     * @return
+     */
+    public VoIssueReportReply getReportReplyByReportId(Long reportId) {
+        return seReportReplyMapper.getReportReplyByReportId(reportId);
+    }
+
 }
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/issue/dto/DtoReportReply.java b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/issue/dto/DtoReportReply.java
new file mode 100644
index 0000000..4adf5ca
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/issue/dto/DtoReportReply.java
@@ -0,0 +1,35 @@
+package com.dy.pipIrrWechat.issue.dto;
+
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2024-10-31 15:18
+ * @LastEditTime 2024-10-31 15:18
+ * @Description 鍐滄埛闂涓婃姤鍥炲浼犺緭绫�
+ */
+
+@Data
+public class DtoReportReply {
+    public static final long serialVersionUID = 202410311519001L;
+
+    /**
+     * 闂涓婃姤ID
+     */
+    @NotNull(message = "蹇呴』閫夋嫨涓�涓棶棰樹笂鎶�")
+    private Long reportId;
+
+    /**
+     * 绛斿鍐呭
+     */
+    @NotBlank(message = "绛斿鍐呭涓嶈兘涓虹┖")
+    private String replyContent;
+
+    /**
+     * 绛斿浜篒D
+     */
+    @NotNull(message = "绛斿浜轰笉鑳戒负绌�")
+    private Long replierId;
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/virtualCard/VirtualCardCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/virtualCard/VirtualCardCtrl.java
index b8dd640..3e6b1fd 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/virtualCard/VirtualCardCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/virtualCard/VirtualCardCtrl.java
@@ -5,6 +5,7 @@
 import com.dy.common.webUtil.QueryResultVo;
 import com.dy.pipIrrGlobal.pojoSe.SeVcOperate;
 import com.dy.pipIrrGlobal.pojoSe.SeVirtualCard;
+import com.dy.pipIrrGlobal.voSe.VoRechargeProfile;
 import com.dy.pipIrrGlobal.voSe.VoVcRecharge;
 import com.dy.pipIrrGlobal.voSe.VoVirtualCard;
 import com.dy.pipIrrWechat.result.WechatResultCode;
@@ -329,4 +330,18 @@
             return BaseResponseUtils.buildException(e.getMessage()) ;
         }
     }
+
+    /**
+     * 鑾峰彇铏氭嫙鍗″父鐢ㄥ厖鍊奸噾棰濋厤缃�
+     * @return
+     */
+    @GetMapping(path = "/gerRechargeProfiles")
+    public BaseResponse<List<VoRechargeProfile>> gerRechargeProfiles(){
+        try {
+            return BaseResponseUtils.buildSuccess(virtualCardSv.gerRechargeProfiles());
+        } catch (Exception e) {
+            log.error("鑾峰彇铏氭嫙鍗″父鐢ㄥ厖鍊奸噾棰濋厤缃紓甯�", e);
+            return BaseResponseUtils.buildException(e.getMessage()) ;
+        }
+    }
 }
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/virtualCard/VirtualCardSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/virtualCard/VirtualCardSv.java
index 903bf55..9957fdf 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/virtualCard/VirtualCardSv.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/virtualCard/VirtualCardSv.java
@@ -6,6 +6,7 @@
 import com.dy.pipIrrGlobal.daoSe.*;
 import com.dy.pipIrrGlobal.pojoSe.*;
 import com.dy.pipIrrGlobal.voSe.VoOrders;
+import com.dy.pipIrrGlobal.voSe.VoRechargeProfile;
 import com.dy.pipIrrGlobal.voSe.VoVcRecharge;
 import com.dy.pipIrrGlobal.voSe.VoVirtualCard;
 import com.dy.pipIrrWechat.result.WechatResultCode;
@@ -51,6 +52,9 @@
 
     @Autowired
     private SeVcOperateMapper seVcOperateMapper;
+
+    @Autowired
+    private SeRechargeProfileMapper seRechargeProfileMapper;
 
     @Value("${vc.alarmValue}")
     private Integer alarmValue;
@@ -386,4 +390,12 @@
         seVcOperateMapper.insert(po);
         return po.getId();
     }
+
+    /**
+     * 鑾峰彇铏氭嫙鍗″父鐢ㄥ厖鍊奸噾棰濋厤缃�
+     * @return
+     */
+    public List<VoRechargeProfile> gerRechargeProfiles() {
+        return seRechargeProfileMapper.gerRechargeProfiles();
+    }
 }
\ No newline at end of file

--
Gitblit v1.8.0