From 5c2efa49ab86d6fa9dbba3fb658d05d594fd513d Mon Sep 17 00:00:00 2001
From: cloudroam <cloudroam>
Date: 星期三, 11 九月 2024 15:17:58 +0800
Subject: [PATCH] add:会员成长值统计和明细功能

---
 src/main/java/com/mzl/flower/web/member/MemberController.java                       |   15 ++++++-
 src/main/java/com/mzl/flower/dto/response/member/UserGrowthRecordVO.java            |   28 ++++++++++++++
 src/main/java/com/mzl/flower/dto/request/menber/MemberRecordQueryDTO.java           |    2 +
 src/main/java/com/mzl/flower/dto/response/member/MemberGrowthRecordVO.java          |    4 ++
 src/main/java/com/mzl/flower/mapper/member/MemberGrowthRecordMapper.java            |    4 ++
 src/main/java/com/mzl/flower/dto/request/menber/UserMemberRecordQueryDTO.java       |   13 ++++++
 src/main/java/com/mzl/flower/service/menber/impl/MemberGrowthRecordServiceImpl.java |   13 ++++--
 src/main/java/com/mzl/flower/service/menber/MemberGrowthRecordService.java          |    5 ++
 src/main/resources/mapper/member/MemberGrowthRecordMapper.xml                       |   23 +++++++++++
 9 files changed, 101 insertions(+), 6 deletions(-)

diff --git a/src/main/java/com/mzl/flower/dto/request/menber/MemberRecordQueryDTO.java b/src/main/java/com/mzl/flower/dto/request/menber/MemberRecordQueryDTO.java
index 29306ce..64cd4b9 100644
--- a/src/main/java/com/mzl/flower/dto/request/menber/MemberRecordQueryDTO.java
+++ b/src/main/java/com/mzl/flower/dto/request/menber/MemberRecordQueryDTO.java
@@ -15,4 +15,6 @@
     private Date startRecordDate;
     @ApiModelProperty(value = "记录结束日期")
     private Date endRecordDate;
+    @ApiModelProperty("用户ID")
+    private String userId;
 }
diff --git a/src/main/java/com/mzl/flower/dto/request/menber/UserMemberRecordQueryDTO.java b/src/main/java/com/mzl/flower/dto/request/menber/UserMemberRecordQueryDTO.java
new file mode 100644
index 0000000..47fd2d8
--- /dev/null
+++ b/src/main/java/com/mzl/flower/dto/request/menber/UserMemberRecordQueryDTO.java
@@ -0,0 +1,13 @@
+package com.mzl.flower.dto.request.menber;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+
+@Data
+public class UserMemberRecordQueryDTO {
+    @ApiModelProperty(value = "用户名称")
+    private String nickName;
+    @ApiModelProperty(value = "联系方式")
+    private String tel;
+}
diff --git a/src/main/java/com/mzl/flower/dto/response/member/MemberGrowthRecordVO.java b/src/main/java/com/mzl/flower/dto/response/member/MemberGrowthRecordVO.java
index 1442ea7..50eddd9 100644
--- a/src/main/java/com/mzl/flower/dto/response/member/MemberGrowthRecordVO.java
+++ b/src/main/java/com/mzl/flower/dto/response/member/MemberGrowthRecordVO.java
@@ -1,9 +1,11 @@
 package com.mzl.flower.dto.response.member;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.mzl.flower.base.AbstractTransDTO;
 import com.mzl.flower.base.annotation.DictTrans;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
 
 import java.math.BigInteger;
 import java.time.LocalDateTime;
@@ -14,6 +16,8 @@
     private Long id;
 
     @ApiModelProperty("记录日期")
+    @JsonFormat(pattern="yyyy-MM-dd" ,timezone="GMT+8")
+    @DateTimeFormat
     private Date recordDate;
 
     @ApiModelProperty("成长值")
diff --git a/src/main/java/com/mzl/flower/dto/response/member/UserGrowthRecordVO.java b/src/main/java/com/mzl/flower/dto/response/member/UserGrowthRecordVO.java
new file mode 100644
index 0000000..db73dd5
--- /dev/null
+++ b/src/main/java/com/mzl/flower/dto/response/member/UserGrowthRecordVO.java
@@ -0,0 +1,28 @@
+package com.mzl.flower.dto.response.member;
+
+import com.mzl.flower.base.AbstractTransDTO;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class UserGrowthRecordVO extends AbstractTransDTO {
+    private Long id;
+
+    @ApiModelProperty("用户名称")
+    private String nickName;
+
+    @ApiModelProperty("联系方式")
+    private String tel;
+
+    @ApiModelProperty("当前成长值")
+    private int sumGrowthValue;
+
+    @ApiModelProperty("当前会员等级ID")
+    private Long levelId;
+
+    @ApiModelProperty("当前会员等级名称")
+    private String levelName;
+
+    @ApiModelProperty("用户ID")
+    private String userId;
+}
diff --git a/src/main/java/com/mzl/flower/mapper/member/MemberGrowthRecordMapper.java b/src/main/java/com/mzl/flower/mapper/member/MemberGrowthRecordMapper.java
index d8dc079..2d04c6d 100644
--- a/src/main/java/com/mzl/flower/mapper/member/MemberGrowthRecordMapper.java
+++ b/src/main/java/com/mzl/flower/mapper/member/MemberGrowthRecordMapper.java
@@ -3,7 +3,9 @@
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.mzl.flower.dto.request.menber.MemberRecordQueryDTO;
+import com.mzl.flower.dto.request.menber.UserMemberRecordQueryDTO;
 import com.mzl.flower.dto.response.member.MemberGrowthRecordVO;
+import com.mzl.flower.dto.response.member.UserGrowthRecordVO;
 import com.mzl.flower.entity.menber.MemberGrowthRecord;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
@@ -28,4 +30,6 @@
 
     List<MemberGrowthRecordVO> queryPage(@Param("dto") MemberRecordQueryDTO dto, Page page);
 
+    List<UserGrowthRecordVO> queryUserPage(@Param("dto") UserMemberRecordQueryDTO dto, Page page);
+
 }
diff --git a/src/main/java/com/mzl/flower/service/menber/MemberGrowthRecordService.java b/src/main/java/com/mzl/flower/service/menber/MemberGrowthRecordService.java
index 39e41a3..f033d19 100644
--- a/src/main/java/com/mzl/flower/service/menber/MemberGrowthRecordService.java
+++ b/src/main/java/com/mzl/flower/service/menber/MemberGrowthRecordService.java
@@ -6,7 +6,9 @@
 import com.mzl.flower.dto.request.menber.MemberGrowthRecordDTO;
 import com.mzl.flower.dto.request.menber.MemberRecordQueryDTO;
 import com.mzl.flower.dto.request.menber.UserGrowthRecordDTO;
+import com.mzl.flower.dto.request.menber.UserMemberRecordQueryDTO;
 import com.mzl.flower.dto.response.member.MemberGrowthRecordVO;
+import com.mzl.flower.dto.response.member.UserGrowthRecordVO;
 import com.mzl.flower.entity.menber.Member;
 import com.mzl.flower.entity.menber.MemberGrowthRecord;
 import com.mzl.flower.entity.payment.Order;
@@ -24,4 +26,7 @@
     Member getMemberByUserId(String userId);
 
     void growthValueDeduct(Order order);
+
+    Page<UserGrowthRecordVO> queryUserPage(UserMemberRecordQueryDTO userMemberRecordQueryDTO, Page page);
+
 }
diff --git a/src/main/java/com/mzl/flower/service/menber/impl/MemberGrowthRecordServiceImpl.java b/src/main/java/com/mzl/flower/service/menber/impl/MemberGrowthRecordServiceImpl.java
index 2866b32..935da0b 100644
--- a/src/main/java/com/mzl/flower/service/menber/impl/MemberGrowthRecordServiceImpl.java
+++ b/src/main/java/com/mzl/flower/service/menber/impl/MemberGrowthRecordServiceImpl.java
@@ -5,12 +5,10 @@
 import com.mzl.flower.config.exception.ValidationException;
 import com.mzl.flower.config.security.SecurityUtils;
 import com.mzl.flower.constant.Constants;
-import com.mzl.flower.dto.request.menber.MemberGrowthRecordDTO;
-import com.mzl.flower.dto.request.menber.MemberRecordQueryDTO;
-import com.mzl.flower.dto.request.menber.TargetMemberDTO;
-import com.mzl.flower.dto.request.menber.UserGrowthRecordDTO;
+import com.mzl.flower.dto.request.menber.*;
 import com.mzl.flower.dto.response.customer.CustomerDTO;
 import com.mzl.flower.dto.response.member.MemberGrowthRecordVO;
+import com.mzl.flower.dto.response.member.UserGrowthRecordVO;
 import com.mzl.flower.entity.customer.Customer;
 import com.mzl.flower.entity.menber.Member;
 import com.mzl.flower.entity.menber.MemberGrowthRecord;
@@ -205,4 +203,11 @@
         saveMemberGrowthRecord(memberGrowthRecordDTO);
         }
     }
+
+    @Override
+    public Page<UserGrowthRecordVO> queryUserPage(UserMemberRecordQueryDTO userMemberRecordQueryDTO, Page page) {
+        List<UserGrowthRecordVO> list = memberGrowthRecordMapper.queryUserPage(userMemberRecordQueryDTO, page);
+        page.setRecords(list);
+        return page;
+    }
 }
diff --git a/src/main/java/com/mzl/flower/web/member/MemberController.java b/src/main/java/com/mzl/flower/web/member/MemberController.java
index 89997cc..7fcea01 100644
--- a/src/main/java/com/mzl/flower/web/member/MemberController.java
+++ b/src/main/java/com/mzl/flower/web/member/MemberController.java
@@ -8,13 +8,12 @@
 import com.mzl.flower.dto.request.menber.*;
 import com.mzl.flower.dto.response.member.MemberGrowthRecordVO;
 import com.mzl.flower.dto.response.member.MemberVO;
-import com.mzl.flower.entity.menber.Member;
+import com.mzl.flower.dto.response.member.UserGrowthRecordVO;
 import com.mzl.flower.service.menber.MemberGrowthRecordService;
 import com.mzl.flower.service.menber.MemberService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
-import org.springframework.beans.BeanUtils;
 import org.springframework.http.ResponseEntity;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
@@ -72,6 +71,12 @@
         return returnData(R.SUCCESS.getCode(), memberGrowthRecordService.queryPage(dto, page));
     }
 
+    @GetMapping("/getmemberGrowthRecord/list")
+    @ApiOperation(value = "会员记录列表", httpMethod = "GET")
+    public ResponseEntity<ReturnDataDTO<Page<MemberGrowthRecordVO>>> getmemberGrowthRecord(Page page, MemberRecordQueryDTO dto) {
+        return returnData(R.SUCCESS.getCode(), memberGrowthRecordService.queryPage(dto, page));
+    }
+
     @GetMapping(value = "/memberGrowthRecord/delete")
     @ApiOperation(value = "删除会员记录 ", httpMethod = "GET", notes = "ID")
     public ResponseEntity deleteGrowthRecord(@NotNull(message = "id不能为空") Long id) {
@@ -106,5 +111,11 @@
         UserGrowthRecordDTO userGrowthRecordDTO = memberGrowthRecordService.getInfoByUserId(SecurityUtils.getUserId());
         return returnData(R.SUCCESS.getCode(), userGrowthRecordDTO);
     }
+
+    @GetMapping("/userGrowthRecord/list")
+    @ApiOperation(value = "会员用户记录列表", httpMethod = "GET")
+    public ResponseEntity<ReturnDataDTO<Page<UserGrowthRecordVO>>> getUserMemberRecordList(Page page, UserMemberRecordQueryDTO dto) {
+        return returnData(R.SUCCESS.getCode(), memberGrowthRecordService.queryUserPage(dto, page));
+    }
 }
 
diff --git a/src/main/resources/mapper/member/MemberGrowthRecordMapper.xml b/src/main/resources/mapper/member/MemberGrowthRecordMapper.xml
index 7073205..a9f2622 100644
--- a/src/main/resources/mapper/member/MemberGrowthRecordMapper.xml
+++ b/src/main/resources/mapper/member/MemberGrowthRecordMapper.xml
@@ -20,6 +20,29 @@
                AND t.create_time <= #{dto.endRecordDate}
             ]]>
         </if>
+        <if test="dto.userId != null and dto.userId != ''">
+            and t.user_id = #{dto.userId}
+        </if>
         order by t.update_time desc
     </select>
+
+    <select id="queryUserPage" resultType="com.mzl.flower.dto.response.member.UserGrowthRecordVO">
+        SELECT c.name as nickName, c.level_id as levelId, t.tel, t.id as userId, m.name AS levelName, IFNULL(SUM(mg.growth), 0) AS sumGrowthValue
+        FROM t_customer_info c
+                 LEFT JOIN t_user t ON c.user_id = t.id
+                 LEFT JOIN t_member m ON c.level_id = m.id
+                 LEFT JOIN (SELECT user_id, SUM(growth) AS growth
+                            FROM t_member_growth_record
+                            WHERE deleted = 0
+                            GROUP BY user_id) mg ON c.user_id = mg.user_id
+        WHERE c.deleted = 0
+        <if test="dto.nickName!= null and dto.nickName != ''">
+            AND c.name LIKE CONCAT('%',#{dto.nickName},'%')
+        </if>
+        <if test="dto.tel!= null and dto.tel != ''">
+            and t.tel like CONCAT('%',#{dto.tel},'%')
+        </if>
+        GROUP BY c.id
+        order by c.update_time desc
+    </select>
 </mapper>
\ No newline at end of file

--
Gitblit v1.9.3