From 9f1412bc3afa8f16d13d9948b547c8748e02869a Mon Sep 17 00:00:00 2001
From: Cui Zhi Feng <7426394+wuxixiaocui@user.noreply.gitee.com>
Date: 星期四, 29 八月 2024 14:13:57 +0800
Subject: [PATCH] Merge branch 'master-v2' of http://47.96.225.205:8888/r/flowerbackend-v2 into master-v2

---
 src/main/java/com/mzl/flower/entity/menber/Member.java                              |    3 
 src/main/java/com/mzl/flower/web/point/PointGoodController.java                     |  104 ++++++
 src/main/java/com/mzl/flower/dto/response/point/PointGoodVO.java                    |   44 ++
 src/main/表设计-二期.xlsx                                                                |    0 
 src/main/java/com/mzl/flower/service/point/CustomerPointDetailService.java          |   21 +
 src/main/java/com/mzl/flower/service/point/PointGoodService.java                    |   36 ++
 src/main/java/com/mzl/flower/constant/Constants.java                                |   42 ++
 src/main/java/com/mzl/flower/entity/point/PointGood.java                            |   42 ++
 src/main/java/com/mzl/flower/dto/response/point/CustomerPointDetailVO.java          |   54 +++
 src/main/java/com/mzl/flower/mapper/point/CustomerPointDetailMapper.java            |   30 +
 src/main/resources/mapper/point/PointGoodMapper.xml                                 |   26 +
 src/main/java/com/mzl/flower/service/menber/impl/MemberGrowthRecordServiceImpl.java |    2 
 src/main/java/com/mzl/flower/dto/request/menber/MemberDTO.java                      |    2 
 src/main/java/com/mzl/flower/entity/point/CustomerPointDetail.java                  |   51 +++
 src/main/java/com/mzl/flower/dto/request/point/CustomerPointDetailQueryDTO.java     |   32 +
 src/main/java/com/mzl/flower/dto/request/point/PointGoodDTO.java                    |   32 +
 src/main/java/com/mzl/flower/mapper/point/PointGoodMapper.java                      |   36 ++
 src/main/java/com/mzl/flower/dto/request/point/PointGoodQueryDTO.java               |   27 +
 src/main/java/com/mzl/flower/service/menber/impl/MemberServiceImpl.java             |    2 
 src/main/resources/mapper/point/CustomerPointDetailMapper.xml                       |   20 +
 src/main/java/com/mzl/flower/service/point/impl/CustomerPointDetailServiceImpl.java |   76 ++++
 src/main/java/com/mzl/flower/dto/request/point/CustomerPointDetailDTO.java          |   50 ++
 /dev/null                                                                           |    4 
 src/main/java/com/mzl/flower/dto/response/member/MemberVO.java                      |    4 
 src/main/java/com/mzl/flower/web/point/CustomerPointDetailController.java           |   62 +++
 src/main/java/com/mzl/flower/service/point/impl/PointGoodServiceImpl.java           |  163 +++++++++
 26 files changed, 951 insertions(+), 14 deletions(-)

diff --git a/src/main/java/com/mzl/flower/constant/Constants.java b/src/main/java/com/mzl/flower/constant/Constants.java
index beace01..d231a55 100644
--- a/src/main/java/com/mzl/flower/constant/Constants.java
+++ b/src/main/java/com/mzl/flower/constant/Constants.java
@@ -430,12 +430,11 @@
         }
     }
 
-    public enum POINT_GOODS_STATUS {
-        A("已上架"),
-        I("已下架"),
-        ;
+    public enum POINT_GOOD_STATUS {
+        up("上架"),
+        off("下架");
 
-        POINT_GOODS_STATUS(String desc) {
+        POINT_GOOD_STATUS(String desc) {
             this.desc = desc;
         }
 
@@ -446,4 +445,37 @@
         }
     }
 
+    public enum POINT_CHANGE_TYPE {
+        add("增加"),
+        reduce("减少");
+
+        POINT_CHANGE_TYPE(String desc) {
+            this.desc = desc;
+        }
+
+        private String desc;
+
+        public String getDesc() {
+            return desc;
+        }
+    }
+
+
+    public enum POINT_TYPE {
+        consume("消费获取"),
+        activity("活动获取"),
+        giveaway("积分赠送"),
+        deduction("积分扣减"),
+        exchange("积分兑换");
+
+        POINT_TYPE(String desc) {
+            this.desc = desc;
+        }
+
+        private String desc;
+
+        public String getDesc() {
+            return desc;
+        }
+    }
 }
diff --git a/src/main/java/com/mzl/flower/dto/request/menber/MemberDTO.java b/src/main/java/com/mzl/flower/dto/request/menber/MemberDTO.java
index 9f377eb..084fad1 100644
--- a/src/main/java/com/mzl/flower/dto/request/menber/MemberDTO.java
+++ b/src/main/java/com/mzl/flower/dto/request/menber/MemberDTO.java
@@ -37,6 +37,4 @@
     @ApiModelProperty("未消费产生的下降值")
     private int downgradeValue;
 
-    @ApiModelProperty("成长值规则")
-    private String growthRule;
 }
diff --git a/src/main/java/com/mzl/flower/dto/request/point/CustomerPointDetailDTO.java b/src/main/java/com/mzl/flower/dto/request/point/CustomerPointDetailDTO.java
new file mode 100644
index 0000000..ccb69be
--- /dev/null
+++ b/src/main/java/com/mzl/flower/dto/request/point/CustomerPointDetailDTO.java
@@ -0,0 +1,50 @@
+package com.mzl.flower.dto.request.point;
+
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * packageName com.mzl.flower.dto.request.point
+ * @author fanghaowei
+ * @version version2.0
+ * @className CustomerPointDetailDTO
+ * @date 2024/8/29
+ * @description TODO
+ */
+@Data
+public class CustomerPointDetailDTO {
+
+    @ApiModelProperty(value = "ID")
+    private Long id;
+
+    @ApiModelProperty("记录日期")
+    private Date recordDate;
+
+    @ApiModelProperty("用户ID")
+    private String userId;
+
+    @ApiModelProperty("商户ID")
+    private Long customerId;
+
+    @ApiModelProperty("积分变更类型(point_change_type)增加、减少")
+    private String changeType;
+
+    @ApiModelProperty("积分类型:增加(消费获取、活动获取、积分赠送),减少(积分扣减、积分兑换)")
+    private String type;
+
+    @ApiModelProperty("积分(积分=使用积分+过期积分)")
+    private Integer point;
+
+    @ApiModelProperty("使用积分")
+    private Integer usePoint;
+
+    @ApiModelProperty("过期积分")
+    private Integer expiredPoint;
+
+    @ApiModelProperty("备注(可记录积分的来源或去向,如订单号、兑换内容、活动名称等)")
+    private String remarks;
+
+}
diff --git a/src/main/java/com/mzl/flower/dto/request/point/CustomerPointDetailQueryDTO.java b/src/main/java/com/mzl/flower/dto/request/point/CustomerPointDetailQueryDTO.java
new file mode 100644
index 0000000..99ef8bb
--- /dev/null
+++ b/src/main/java/com/mzl/flower/dto/request/point/CustomerPointDetailQueryDTO.java
@@ -0,0 +1,32 @@
+package com.mzl.flower.dto.request.point;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class CustomerPointDetailQueryDTO {
+
+    @ApiModelProperty("用户ID")
+    private String userId;
+
+    @ApiModelProperty("商户ID")
+    private Long customerId;
+
+    @ApiModelProperty("积分变更类型(point_change_type)增加、减少")
+    private String changeType;
+
+    @ApiModelProperty("积分类型:增加(消费获取、活动获取、积分赠送),减少(积分扣减、积分兑换)")
+    private String type;
+
+//    @ApiModelProperty("创建日期(yyyy-mm-dd)")
+//    private String createDateBeginStr;
+//
+//    @ApiModelProperty("创建日期(yyyy-mm-dd)")
+//    private String createDateEndStr;
+//
+//    @ApiModelProperty(value = "创建日期(yyyy-mm-dd)",hidden = true)
+//    private LocalDateTime createDateBegin;
+//
+//    @ApiModelProperty(value = "创建日期(yyyy-mm-dd)", hidden = true)
+//    private LocalDateTime createDateEnd;
+}
diff --git a/src/main/java/com/mzl/flower/dto/request/point/PointGoodDTO.java b/src/main/java/com/mzl/flower/dto/request/point/PointGoodDTO.java
new file mode 100644
index 0000000..478255f
--- /dev/null
+++ b/src/main/java/com/mzl/flower/dto/request/point/PointGoodDTO.java
@@ -0,0 +1,32 @@
+package com.mzl.flower.dto.request.point;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class PointGoodDTO {
+    @ApiModelProperty(value = "积分商品表ID")
+    private Long id;
+
+    @ApiModelProperty("商品名称")
+    private String name;
+
+    @ApiModelProperty("商品描述")
+    private String description;
+
+    @ApiModelProperty("库存")
+    private Integer stock;
+
+    @ApiModelProperty("封面图")
+    private String cover;
+
+    @ApiModelProperty("商品图片")
+    private String pictures;
+
+    @ApiModelProperty("兑换积分")
+    private Integer point;
+
+    @ApiModelProperty("状态")
+    private String status;
+
+}
diff --git a/src/main/java/com/mzl/flower/dto/request/point/PointGoodQueryDTO.java b/src/main/java/com/mzl/flower/dto/request/point/PointGoodQueryDTO.java
new file mode 100644
index 0000000..fd558cb
--- /dev/null
+++ b/src/main/java/com/mzl/flower/dto/request/point/PointGoodQueryDTO.java
@@ -0,0 +1,27 @@
+package com.mzl.flower.dto.request.point;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class PointGoodQueryDTO {
+
+
+    @ApiModelProperty("名称")
+    private String name;
+
+    @ApiModelProperty("状态")
+    private String status;
+
+//    @ApiModelProperty("创建日期(yyyy-mm-dd)")
+//    private String createDateBeginStr;
+//
+//    @ApiModelProperty("创建日期(yyyy-mm-dd)")
+//    private String createDateEndStr;
+//
+//    @ApiModelProperty(value = "创建日期(yyyy-mm-dd)",hidden = true)
+//    private LocalDateTime createDateBegin;
+//
+//    @ApiModelProperty(value = "创建日期(yyyy-mm-dd)", hidden = true)
+//    private LocalDateTime createDateEnd;
+}
diff --git a/src/main/java/com/mzl/flower/dto/response/member/MemberVO.java b/src/main/java/com/mzl/flower/dto/response/member/MemberVO.java
new file mode 100644
index 0000000..bebe4e7
--- /dev/null
+++ b/src/main/java/com/mzl/flower/dto/response/member/MemberVO.java
@@ -0,0 +1,4 @@
+package com.mzl.flower.dto.response.member;
+
+public class MemberVO {
+}
diff --git a/src/main/java/com/mzl/flower/dto/response/point/CustomerPointDetailVO.java b/src/main/java/com/mzl/flower/dto/response/point/CustomerPointDetailVO.java
new file mode 100644
index 0000000..4126e90
--- /dev/null
+++ b/src/main/java/com/mzl/flower/dto/response/point/CustomerPointDetailVO.java
@@ -0,0 +1,54 @@
+package com.mzl.flower.dto.response.point;
+
+import com.mzl.flower.base.AbstractTransDTO;
+import com.mzl.flower.base.annotation.DictTrans;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+import java.util.Date;
+
+@Data
+public class CustomerPointDetailVO extends AbstractTransDTO {
+
+    private Long id;
+
+    @ApiModelProperty("记录日期")
+    private Date recordDate;
+
+    @ApiModelProperty("用户ID")
+    private String userId;
+
+    @ApiModelProperty("商户ID")
+    private Long customerId;
+
+    @ApiModelProperty("积分变更类型(point_change_type)增加、减少")
+    @DictTrans(target = "changeTypeStr", codeType = "POINT_CHANGE_TYPE")
+    private String changeType;
+
+    private String changeTypeStr;
+
+    @ApiModelProperty("积分类型:增加(消费获取、活动获取、积分赠送),减少(积分扣减、积分兑换)")
+    @DictTrans(target = "typeStr", codeType = "POINT_TYPE")
+    private String type;
+
+    private String typeStr;
+
+    @ApiModelProperty("积分(积分=使用积分+过期积分)")
+    private Integer point;
+
+    @ApiModelProperty("使用积分")
+    private Integer usePoint;
+
+    @ApiModelProperty("过期积分")
+    private Integer expiredPoint;
+
+    @ApiModelProperty("备注(可记录积分的来源或去向,如订单号、兑换内容、活动名称等)")
+    private String remarks;
+
+    @ApiModelProperty("创建日期")
+    private LocalDateTime createTime;
+
+    @ApiModelProperty("修改日期")
+    private LocalDateTime updateTime;
+}
diff --git a/src/main/java/com/mzl/flower/dto/response/point/PointGoodVO.java b/src/main/java/com/mzl/flower/dto/response/point/PointGoodVO.java
new file mode 100644
index 0000000..7919a99
--- /dev/null
+++ b/src/main/java/com/mzl/flower/dto/response/point/PointGoodVO.java
@@ -0,0 +1,44 @@
+package com.mzl.flower.dto.response.point;
+
+import com.mzl.flower.base.AbstractTransDTO;
+import com.mzl.flower.base.annotation.DictTrans;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Data
+public class PointGoodVO extends AbstractTransDTO {
+
+    private Long id;
+
+    @ApiModelProperty("商品名称")
+    private String name;
+
+    @ApiModelProperty("商品描述")
+    private String description;
+
+    @ApiModelProperty("库存")
+    private Integer stock;
+
+    @ApiModelProperty("封面图")
+    private String cover;
+
+    @ApiModelProperty("商品图片")
+    private String pictures;
+
+    @ApiModelProperty("兑换积分")
+    private Integer point;
+
+    @ApiModelProperty("状态")
+    @DictTrans(target = "statusStr", codeType = "POINT_GOOD_STATUS")
+    private String status;
+
+    private String statusStr;
+
+    @ApiModelProperty("创建日期")
+    private LocalDateTime createTime;
+
+    @ApiModelProperty("修改日期")
+    private LocalDateTime updateTime;
+}
diff --git a/src/main/java/com/mzl/flower/entity/menber/Member.java b/src/main/java/com/mzl/flower/entity/menber/Member.java
index b79250e..66b602c 100644
--- a/src/main/java/com/mzl/flower/entity/menber/Member.java
+++ b/src/main/java/com/mzl/flower/entity/menber/Member.java
@@ -44,7 +44,4 @@
 
     @ApiModelProperty("未消费产生的下降值")
     private int downgradeValue;
-
-    @ApiModelProperty("成长值规则")
-    private String growthRule;
 }
diff --git a/src/main/java/com/mzl/flower/entity/point/CustomerPointDetail.java b/src/main/java/com/mzl/flower/entity/point/CustomerPointDetail.java
new file mode 100644
index 0000000..5825a16
--- /dev/null
+++ b/src/main/java/com/mzl/flower/entity/point/CustomerPointDetail.java
@@ -0,0 +1,51 @@
+package com.mzl.flower.entity.point;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.mzl.flower.base.BaseAutoEntity;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+
+/**
+ * packageName com.mzl.flower.entity.point
+ * @author fanghaowei
+ * @version version2.0
+ * @className CustomerPointDetail
+ * @date 2024/8/29
+ * @description 用户积分统计
+ */
+
+@Data
+@TableName("t_customer_point_detail")
+public class CustomerPointDetail extends BaseAutoEntity {
+
+    @ApiModelProperty("记录日期")
+    private Date recordDate;
+
+    @ApiModelProperty("用户ID")
+    private String userId;
+
+    @ApiModelProperty("商户ID")
+    private Long customerId;
+
+    @ApiModelProperty("积分变更类型(point_change_type)增加、减少")
+    private String changeType;
+
+    @ApiModelProperty("积分类型:增加(消费获取、活动获取、积分赠送),减少(积分扣减、积分兑换)")
+    private String type;
+
+    @ApiModelProperty("积分(积分=使用积分+过期积分)")
+    private Integer point;
+
+    @ApiModelProperty("使用积分")
+    private Integer usePoint;
+
+    @ApiModelProperty("过期积分")
+    private Integer expiredPoint;
+
+    @ApiModelProperty("备注(可记录积分的来源或去向,如订单号、兑换内容、活动名称等)")
+    private String remarks;
+
+}
diff --git a/src/main/java/com/mzl/flower/entity/point/PointGood.java b/src/main/java/com/mzl/flower/entity/point/PointGood.java
new file mode 100644
index 0000000..30631e7
--- /dev/null
+++ b/src/main/java/com/mzl/flower/entity/point/PointGood.java
@@ -0,0 +1,42 @@
+package com.mzl.flower.entity.point;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.mzl.flower.base.BaseAutoEntity;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @author fanghaowei
+ * @version version2.0
+ * @className Member
+ * @date 2024/8/27
+ * @description 积分商品表
+ */
+@Data
+@TableName("t_point_goods")
+public class PointGood extends BaseAutoEntity {
+
+    @ApiModelProperty("商品名称")
+    private String name;
+
+    @ApiModelProperty("商品描述")
+    private String description;
+
+    @ApiModelProperty("库存")
+    private Integer stock;
+
+    @ApiModelProperty("封面图")
+    private String cover;
+
+    @ApiModelProperty("商品图片")
+    private String pictures;
+
+    @ApiModelProperty("兑换积分")
+    private Integer point;
+
+    @ApiModelProperty("状态")
+    private String status;
+
+}
diff --git a/src/main/java/com/mzl/flower/mapper/point/CustomerPointDetailMapper.java b/src/main/java/com/mzl/flower/mapper/point/CustomerPointDetailMapper.java
new file mode 100644
index 0000000..fb896a7
--- /dev/null
+++ b/src/main/java/com/mzl/flower/mapper/point/CustomerPointDetailMapper.java
@@ -0,0 +1,30 @@
+package com.mzl.flower.mapper.point;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.mzl.flower.dto.request.point.CustomerPointDetailQueryDTO;
+import com.mzl.flower.dto.request.point.PointGoodQueryDTO;
+import com.mzl.flower.dto.response.point.CustomerPointDetailVO;
+import com.mzl.flower.dto.response.point.PointGoodVO;
+import com.mzl.flower.entity.point.CustomerPointDetail;
+import com.mzl.flower.entity.point.PointGood;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+
+/**
+ * @author fanghaowei
+ * @version version2.0
+ * @className CustomerPointDetailMapper
+ * @date 2024/8/29
+ * @description CustomerPointDetailMapper
+ */
+@SuppressWarnings("ALL")
+@Repository
+public interface CustomerPointDetailMapper extends BaseMapper<CustomerPointDetail> {
+
+    List<CustomerPointDetailVO> queryPage(@Param("dto") CustomerPointDetailQueryDTO dto, Page page);
+
+}
diff --git a/src/main/java/com/mzl/flower/mapper/point/PointGoodMapper.java b/src/main/java/com/mzl/flower/mapper/point/PointGoodMapper.java
new file mode 100644
index 0000000..c01d43e
--- /dev/null
+++ b/src/main/java/com/mzl/flower/mapper/point/PointGoodMapper.java
@@ -0,0 +1,36 @@
+package com.mzl.flower.mapper.point;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.mzl.flower.dto.request.content.QueryAnnouncementDTO;
+import com.mzl.flower.dto.request.point.PointGoodQueryDTO;
+import com.mzl.flower.dto.response.content.AnnouncementDTO;
+import com.mzl.flower.dto.response.point.PointGoodVO;
+import com.mzl.flower.entity.menber.Member;
+import com.mzl.flower.entity.point.PointGood;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+
+/**
+ * @author fanghaowei
+ * @version version2.0
+ * @className MemberMapper
+ * @date 2024/8/26
+ * @description PointGoodMapper
+ */
+@SuppressWarnings("ALL")
+@Repository
+public interface PointGoodMapper extends BaseMapper<PointGood> {
+
+//    @Select("select * from t_member where name = #{name} and deleted = '0' limit 1")
+//    Member getMemberByName(@Param("name") String name);
+
+    List<PointGoodVO> queryPage(@Param("dto") PointGoodQueryDTO dto, 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 8351ecb..4377766 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
@@ -14,6 +14,7 @@
 import lombok.RequiredArgsConstructor;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
 import java.util.ArrayList;
@@ -28,6 +29,7 @@
  * @description 会员记录功能逻辑层
  */
 @Service
+@Transactional
 @RequiredArgsConstructor
 public class MemberGrowthRecordServiceImpl extends ServiceImpl<MemberGrowthRecordMapper, MemberGrowthRecord> implements MemberGrowthRecordService {
 
diff --git a/src/main/java/com/mzl/flower/service/menber/impl/MemberServiceImpl.java b/src/main/java/com/mzl/flower/service/menber/impl/MemberServiceImpl.java
index 390614e..f382382 100644
--- a/src/main/java/com/mzl/flower/service/menber/impl/MemberServiceImpl.java
+++ b/src/main/java/com/mzl/flower/service/menber/impl/MemberServiceImpl.java
@@ -10,6 +10,7 @@
 import lombok.RequiredArgsConstructor;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.ObjectUtils;
 import org.springframework.util.StringUtils;
 
@@ -21,6 +22,7 @@
  * @description 会员管理功能逻辑层
  */
 @Service
+@Transactional
 @RequiredArgsConstructor
 public class MemberServiceImpl extends ServiceImpl<MemberMapper, Member> implements MemberService {
 
diff --git a/src/main/java/com/mzl/flower/service/point/CustomerPointDetailService.java b/src/main/java/com/mzl/flower/service/point/CustomerPointDetailService.java
new file mode 100644
index 0000000..3641135
--- /dev/null
+++ b/src/main/java/com/mzl/flower/service/point/CustomerPointDetailService.java
@@ -0,0 +1,21 @@
+package com.mzl.flower.service.point;
+
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.mzl.flower.dto.request.point.CustomerPointDetailDTO;
+import com.mzl.flower.dto.request.point.CustomerPointDetailQueryDTO;
+import com.mzl.flower.dto.response.point.CustomerPointDetailVO;
+import com.mzl.flower.entity.point.CustomerPointDetail;
+
+
+public interface CustomerPointDetailService extends IService<CustomerPointDetail> {
+
+    void save(CustomerPointDetailDTO customerPointDetailDTO);
+
+    void update(CustomerPointDetailDTO customerPointDetailDTO);
+
+    void delete(Long id);
+
+    Page<CustomerPointDetailVO> queryPage(CustomerPointDetailQueryDTO customerPointDetailQueryDTO, Page page);
+}
diff --git a/src/main/java/com/mzl/flower/service/point/PointGoodService.java b/src/main/java/com/mzl/flower/service/point/PointGoodService.java
new file mode 100644
index 0000000..65a60f9
--- /dev/null
+++ b/src/main/java/com/mzl/flower/service/point/PointGoodService.java
@@ -0,0 +1,36 @@
+package com.mzl.flower.service.point;
+
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.mzl.flower.dto.BatchDTO;
+import com.mzl.flower.dto.request.menber.MemberDTO;
+import com.mzl.flower.dto.request.point.PointGoodDTO;
+import com.mzl.flower.dto.request.point.PointGoodQueryDTO;
+import com.mzl.flower.dto.response.content.AnnouncementDTO;
+import com.mzl.flower.dto.response.point.PointGoodVO;
+import com.mzl.flower.entity.menber.Member;
+import com.mzl.flower.entity.point.PointGood;
+
+
+public interface PointGoodService extends IService<PointGood> {
+
+    void save(PointGoodDTO pointGoodDTO);
+
+    void update(PointGoodDTO pointGoodDTO);
+    void batchDelete(BatchDTO batchDTO);
+
+    void batchPublish(BatchDTO batchDTO);
+
+    void batchOff(BatchDTO batchDTO);
+
+    void delete(Long id);
+
+    void copy(Long id);
+
+    void changeStatus(Long id);
+
+    PointGoodVO detail(Long id);
+
+    Page<PointGoodVO> queryPage(PointGoodQueryDTO pointGoodQueryDTO,Page page);
+}
diff --git a/src/main/java/com/mzl/flower/service/point/impl/CustomerPointDetailServiceImpl.java b/src/main/java/com/mzl/flower/service/point/impl/CustomerPointDetailServiceImpl.java
new file mode 100644
index 0000000..c33236b
--- /dev/null
+++ b/src/main/java/com/mzl/flower/service/point/impl/CustomerPointDetailServiceImpl.java
@@ -0,0 +1,76 @@
+package com.mzl.flower.service.point.impl;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.mzl.flower.config.exception.ValidationException;
+import com.mzl.flower.config.security.SecurityUtils;
+import com.mzl.flower.dto.request.point.CustomerPointDetailDTO;
+import com.mzl.flower.dto.request.point.CustomerPointDetailQueryDTO;
+import com.mzl.flower.dto.response.point.CustomerPointDetailVO;
+import com.mzl.flower.entity.point.CustomerPointDetail;
+import com.mzl.flower.mapper.point.CustomerPointDetailMapper;
+import com.mzl.flower.service.point.CustomerPointDetailService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+/**
+ * @author fanghaowei
+ * @version version2.0
+ * @className MemberServiceImpl
+ * @date 2024/8/26
+ * @description 积分记录
+ */
+@Service
+@Transactional
+@RequiredArgsConstructor
+public class CustomerPointDetailServiceImpl extends ServiceImpl<CustomerPointDetailMapper, CustomerPointDetail> implements CustomerPointDetailService {
+
+    private final CustomerPointDetailMapper customerPointDetailMapper;
+
+    @Override
+    public void save(CustomerPointDetailDTO customerPointDetailDTO) {
+        if (customerPointDetailDTO.getId() != null) {
+            throw new ValidationException("id必须为空");
+        }
+        CustomerPointDetail customerPointDetail = new CustomerPointDetail();
+        BeanUtils.copyProperties(customerPointDetailDTO, customerPointDetail);
+        customerPointDetail.create(SecurityUtils.getUserId());
+        customerPointDetailMapper.insert(customerPointDetail);
+    }
+
+    @Override
+    public void update(CustomerPointDetailDTO customerPointDetailDTO) {
+        if (customerPointDetailDTO.getId() == null || customerPointDetailDTO.getId() == 0) {
+            throw new ValidationException("id不能为空");
+        }
+        CustomerPointDetail customerPointDetail = customerPointDetailMapper.selectById(customerPointDetailDTO.getId());
+        if (customerPointDetail == null) {
+            throw new ValidationException("找不到id为" + customerPointDetail.getId() + "的积分记录");
+        }
+        BeanUtils.copyProperties(customerPointDetailDTO, customerPointDetail, "id", "createTime", "createBy", "deleted", "status");
+        customerPointDetail.update(SecurityUtils.getUserId());
+        customerPointDetailMapper.updateById(customerPointDetail);
+    }
+
+
+    @Override
+    public void delete(Long id) {
+        CustomerPointDetail customerPointDetail = customerPointDetailMapper.selectById(id);
+        if (customerPointDetail == null) {
+            throw new ValidationException("找不到id为" + id + "的积分记录");
+        }
+        customerPointDetailMapper.deleteById(id);
+
+    }
+
+    @Override
+    public Page<CustomerPointDetailVO> queryPage(CustomerPointDetailQueryDTO customerPointDetailQueryDTO, Page page) {
+        List<CustomerPointDetailVO> list = customerPointDetailMapper.queryPage(customerPointDetailQueryDTO, page);
+        page.setRecords(list);
+        return page;
+    }
+}
diff --git a/src/main/java/com/mzl/flower/service/point/impl/PointGoodServiceImpl.java b/src/main/java/com/mzl/flower/service/point/impl/PointGoodServiceImpl.java
new file mode 100644
index 0000000..47b9113
--- /dev/null
+++ b/src/main/java/com/mzl/flower/service/point/impl/PointGoodServiceImpl.java
@@ -0,0 +1,163 @@
+package com.mzl.flower.service.point.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+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.BatchDTO;
+import com.mzl.flower.dto.request.menber.MemberDTO;
+import com.mzl.flower.dto.request.point.PointGoodDTO;
+import com.mzl.flower.dto.request.point.PointGoodQueryDTO;
+import com.mzl.flower.dto.response.content.AnnouncementDTO;
+import com.mzl.flower.dto.response.point.PointGoodVO;
+import com.mzl.flower.entity.content.Announcement;
+import com.mzl.flower.entity.menber.Member;
+import com.mzl.flower.entity.point.PointGood;
+import com.mzl.flower.mapper.member.MemberMapper;
+import com.mzl.flower.mapper.point.PointGoodMapper;
+import com.mzl.flower.service.menber.MemberService;
+import com.mzl.flower.service.point.PointGoodService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.ObjectUtils;
+import org.springframework.util.StringUtils;
+
+import java.time.LocalDate;
+import java.util.List;
+
+/**
+ * @author fanghaowei
+ * @version version2.0
+ * @className MemberServiceImpl
+ * @date 2024/8/26
+ * @description 会员管理功能逻辑层
+ */
+@Service
+@Transactional
+@RequiredArgsConstructor
+public class PointGoodServiceImpl extends ServiceImpl<PointGoodMapper, PointGood> implements PointGoodService {
+
+    private final PointGoodMapper pointGoodMapper;
+
+    @Override
+    public void save(PointGoodDTO pointGoodDTO) {
+        if (pointGoodDTO.getId() != null) {
+            throw new ValidationException("id必须为空");
+        }
+        if (pointGoodDTO.getStock() < 0) {
+            throw new ValidationException("库存不能小于0");
+        }
+        if (pointGoodDTO.getPoint() < 0) {
+            throw new ValidationException("积分不能小于0");
+        }
+        PointGood pointGood = new PointGood();
+        BeanUtils.copyProperties(pointGoodDTO, pointGood);
+        pointGood.setStatus(Constants.POINT_GOOD_STATUS.off.name());
+        pointGood.create(SecurityUtils.getUserId());
+        pointGoodMapper.insert(pointGood);
+    }
+
+    @Override
+    public void update(PointGoodDTO pointGoodDTO) {
+        if (pointGoodDTO.getId() == null || pointGoodDTO.getId() == 0) {
+            throw new ValidationException("id不能为空");
+        }
+        if (pointGoodDTO.getStock() < 0) {
+            throw new ValidationException("库存不能小于0");
+        }
+        if (pointGoodDTO.getPoint() < 0) {
+            throw new ValidationException("积分不能小于0");
+        }
+        PointGood pointGood = pointGoodMapper.selectById(pointGoodDTO.getId());
+        if (pointGood == null) {
+            throw new ValidationException("找不到id为" + pointGood.getId() + "的商品");
+        }
+        BeanUtils.copyProperties(pointGoodDTO, pointGood, "id", "createTime", "createBy", "deleted", "status");
+        pointGood.update(SecurityUtils.getUserId());
+        pointGoodMapper.updateById(pointGood);
+    }
+
+    @Override
+    public void batchDelete(BatchDTO batchDTO) {
+        pointGoodMapper.deleteBatchIds(batchDTO.getIds());
+    }
+
+    @Override
+    public void batchPublish(BatchDTO batchDTO) {
+        List<PointGood> list = pointGoodMapper.selectList(new LambdaQueryWrapper<PointGood>().in(PointGood::getId, batchDTO.getIds()));
+        for (PointGood pointGood : list) {
+            pointGood.setStatus(Constants.POINT_GOOD_STATUS.up.name());
+            pointGoodMapper.updateById(pointGood);
+        }
+    }
+
+    @Override
+    public void batchOff(BatchDTO batchDTO) {
+        List<PointGood> list = pointGoodMapper.selectList(new LambdaQueryWrapper<PointGood>().in(PointGood::getId, batchDTO.getIds()));
+        for (PointGood pointGood : list) {
+            pointGood.setStatus(Constants.POINT_GOOD_STATUS.off.name());
+            pointGoodMapper.updateById(pointGood);
+        }
+    }
+
+    @Override
+    public void delete(Long id) {
+        PointGood pointGood = pointGoodMapper.selectById(id);
+        if (pointGood == null) {
+            throw new ValidationException("找不到id为" + id + "的商品");
+        }
+        pointGoodMapper.deleteById(id);
+
+    }
+
+    @Override
+    public void copy(Long id) {
+        PointGood pointGoodTmp = pointGoodMapper.selectById(id);
+        if (pointGoodTmp == null) {
+            throw new ValidationException("找不到id为" + id + "的商品");
+        }
+        PointGood pointGood = new PointGood();
+        BeanUtils.copyProperties(pointGoodTmp, pointGood,"id","createTime", "createBy", "deleted", "status");
+        pointGood.setStatus(Constants.POINT_GOOD_STATUS.off.name());
+        pointGood.create(SecurityUtils.getUserId());
+        pointGoodMapper.deleteById(id);
+
+    }
+
+    @Override
+    public void changeStatus(Long id) {
+        PointGood pointGood = pointGoodMapper.selectById(id);
+        if (pointGood == null) {
+            throw new ValidationException("找不到id为" + id + "的商品");
+        }
+        if (Constants.COMMON_PUBLISH_STATUS.published.name().equals(pointGood.getStatus())) {
+            pointGood.setStatus(Constants.COMMON_PUBLISH_STATUS.unpublished.name());
+        } else {
+            pointGood.setStatus(Constants.COMMON_PUBLISH_STATUS.published.name());
+        }
+        pointGoodMapper.updateById(pointGood);
+
+    }
+
+    @Override
+    public PointGoodVO detail(Long id) {
+        PointGood pointGood = pointGoodMapper.selectById(id);
+        if (pointGood == null) {
+            return null;
+        }
+        PointGoodVO vo = new PointGoodVO();
+        BeanUtils.copyProperties(pointGood, vo);
+        return vo;
+    }
+
+    @Override
+    public Page<PointGoodVO> queryPage(PointGoodQueryDTO pointGoodQueryDTO, Page page) {
+        List<PointGoodVO> list = pointGoodMapper.queryPage(pointGoodQueryDTO, page);
+        page.setRecords(list);
+        return page;
+    }
+}
diff --git a/src/main/java/com/mzl/flower/vo/member/MemberVO.java b/src/main/java/com/mzl/flower/vo/member/MemberVO.java
deleted file mode 100644
index 4108c79..0000000
--- a/src/main/java/com/mzl/flower/vo/member/MemberVO.java
+++ /dev/null
@@ -1,4 +0,0 @@
-package com.mzl.flower.vo.member;
-
-public class MemberVO {
-}
diff --git a/src/main/java/com/mzl/flower/web/point/CustomerPointDetailController.java b/src/main/java/com/mzl/flower/web/point/CustomerPointDetailController.java
new file mode 100644
index 0000000..73bcba0
--- /dev/null
+++ b/src/main/java/com/mzl/flower/web/point/CustomerPointDetailController.java
@@ -0,0 +1,62 @@
+package com.mzl.flower.web.point;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.mzl.flower.base.BaseController;
+import com.mzl.flower.base.R;
+import com.mzl.flower.base.ReturnDataDTO;
+import com.mzl.flower.dto.request.point.CustomerPointDetailDTO;
+import com.mzl.flower.dto.request.point.CustomerPointDetailQueryDTO;
+import com.mzl.flower.dto.response.point.CustomerPointDetailVO;
+import com.mzl.flower.service.point.CustomerPointDetailService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.http.ResponseEntity;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.constraints.NotNull;
+
+@RestController
+@RequestMapping("/api/customer")
+@Api(value = "用户积分记录", tags = "用户积分记录")
+@Validated
+@Slf4j
+@RequiredArgsConstructor
+public class CustomerPointDetailController extends BaseController {
+
+    private final CustomerPointDetailService customerPointDetailService;
+
+
+    @PostMapping("/point/save")
+    @ApiOperation(value = "新增", notes = "新增")
+    public ResponseEntity<ReturnDataDTO> save(@Validated @RequestBody CustomerPointDetailDTO customerPointDetailDTO) {
+        customerPointDetailService.save(customerPointDetailDTO);
+        return returnData(R.SUCCESS.getCode(), null);
+    }
+
+    @PostMapping("/point/update")
+    @ApiOperation(value = "修改", notes = "修改")
+    public ResponseEntity<ReturnDataDTO> update(@Validated @RequestBody CustomerPointDetailDTO customerPointDetailDTO) {
+        customerPointDetailService.update(customerPointDetailDTO);
+        return returnData(R.SUCCESS.getCode(), null);
+    }
+
+
+    @GetMapping("/point/delete")
+    @ApiOperation(value = "删除", notes = "删除")
+    public ResponseEntity<ReturnDataDTO> delete(@NotNull(message = "id不能为空") Long id) {
+        customerPointDetailService.delete(id);
+        return returnData(R.SUCCESS.getCode(), null);
+    }
+
+
+    @GetMapping("/point/page")
+    @ApiOperation(value = "查询-分页", notes = "查询-分页")
+    public ResponseEntity<ReturnDataDTO<Page<CustomerPointDetailVO>>> queryPage(CustomerPointDetailQueryDTO dto, Page page) {
+        return returnData(R.SUCCESS.getCode(), customerPointDetailService.queryPage(dto, page));
+    }
+
+
+}
diff --git a/src/main/java/com/mzl/flower/web/point/PointGoodController.java b/src/main/java/com/mzl/flower/web/point/PointGoodController.java
new file mode 100644
index 0000000..b51adf5
--- /dev/null
+++ b/src/main/java/com/mzl/flower/web/point/PointGoodController.java
@@ -0,0 +1,104 @@
+package com.mzl.flower.web.point;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.mzl.flower.base.BaseController;
+import com.mzl.flower.base.R;
+import com.mzl.flower.base.ReturnDataDTO;
+import com.mzl.flower.dto.BatchDTO;
+import com.mzl.flower.dto.request.point.PointGoodDTO;
+import com.mzl.flower.dto.request.point.PointGoodQueryDTO;
+import com.mzl.flower.dto.response.point.PointGoodVO;
+import com.mzl.flower.service.point.PointGoodService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.http.ResponseEntity;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.constraints.NotNull;
+
+@RestController
+@RequestMapping("/api/point")
+@Api(value = "积分商品管理", tags = "积分商品管理")
+@Validated
+@Slf4j
+@RequiredArgsConstructor
+public class PointGoodController extends BaseController {
+
+
+    private final PointGoodService pointGoodService;
+
+
+
+    @PostMapping("/good/save")
+    @ApiOperation(value = "新增", notes = "新增")
+    public ResponseEntity<ReturnDataDTO> save(@Validated @RequestBody PointGoodDTO pointGoodDTO) {
+        pointGoodService.save(pointGoodDTO);
+        return returnData(R.SUCCESS.getCode(),null);
+    }
+
+    @PostMapping("/good/update")
+    @ApiOperation(value = "修改", notes = "修改")
+    public ResponseEntity<ReturnDataDTO> update(@Validated @RequestBody PointGoodDTO pointGoodDTO) {
+        pointGoodService.update(pointGoodDTO);
+        return returnData(R.SUCCESS.getCode(),null);
+    }
+
+    @PostMapping("/good/delete/batch")
+    @ApiOperation(value = "批量删除", notes = "批量删除")
+    public ResponseEntity<ReturnDataDTO> batchDelete(@Validated @RequestBody BatchDTO dto) {
+        pointGoodService.batchDelete(dto);
+        return returnData(R.SUCCESS.getCode(),null);
+    }
+
+    @PostMapping("/good/publish/batch")
+    @ApiOperation(value = "批量上架", notes = "批量上架")
+    public ResponseEntity<ReturnDataDTO> batchPublish(@Validated @RequestBody BatchDTO dto) {
+        pointGoodService.batchPublish(dto);
+        return returnData(R.SUCCESS.getCode(),null);
+    }
+
+    @PostMapping("/good/off/batch")
+    @ApiOperation(value = "批量下架", notes = "批量下架")
+    public ResponseEntity<ReturnDataDTO> batchoff(@Validated @RequestBody BatchDTO dto) {
+        pointGoodService.batchOff(dto);
+        return returnData(R.SUCCESS.getCode(),null);
+    }
+
+
+    @GetMapping("/good/delete")
+    @ApiOperation(value = "删除", notes = "删除")
+    public ResponseEntity<ReturnDataDTO> delete(@NotNull(message = "id不能为空") Long id) {
+        pointGoodService.delete(id);
+        return returnData(R.SUCCESS.getCode(),null);
+    }
+
+
+    @GetMapping("/good/copy")
+    @ApiOperation(value = "复制", notes = "复制")
+    public ResponseEntity<ReturnDataDTO> copy(@NotNull(message = "id不能为空") Long id) {
+        pointGoodService.delete(id);
+        return returnData(R.SUCCESS.getCode(), null);
+    }
+
+    @GetMapping("/good/view")
+    @ApiOperation(value = "详情", notes = "详情")
+    public ResponseEntity<ReturnDataDTO<PointGoodVO>> detail(@NotNull(message = "id不能为空") Long id) {
+        return returnData(R.SUCCESS.getCode(),pointGoodService.detail(id));
+    }
+
+    @GetMapping("/good/page")
+    @ApiOperation(value = "查询-分页", notes = "查询-分页")
+    public ResponseEntity<ReturnDataDTO<Page<PointGoodVO>>> queryPage(PointGoodQueryDTO dto, Page page) {
+        return returnData(R.SUCCESS.getCode(), pointGoodService.queryPage(dto,page));
+    }
+
+    @GetMapping("/good/changeStatus")
+    @ApiOperation(value = "修改上架下架状态", notes = "修改上架下架状态")
+    public ResponseEntity<ReturnDataDTO> changeStatus(@NotNull(message = "id不能为空") Long id) {
+        pointGoodService.changeStatus(id);
+        return returnData(R.SUCCESS.getCode(), null);
+    }
+}
diff --git a/src/main/resources/mapper/point/CustomerPointDetailMapper.xml b/src/main/resources/mapper/point/CustomerPointDetailMapper.xml
new file mode 100644
index 0000000..2aae564
--- /dev/null
+++ b/src/main/resources/mapper/point/CustomerPointDetailMapper.xml
@@ -0,0 +1,20 @@
+<?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.mzl.flower.mapper.point.CustomerPointDetailMapper">
+    <select id="queryPage" resultType="com.mzl.flower.dto.response.point.CustomerPointDetailVO">
+        select * from t_customer_point_detail t where t.deleted= 0
+        <if test="dto.userId != null and dto.userId != ''">
+            and t.userId = #{dto.userId}
+        </if>
+        <if test="dto.customerId != null and dto.customerId != ''">
+            and t.customerId = #{dto.customerId}
+        </if>
+        <if test="dto.changeType != null and dto.changeType != ''">
+            and t.changeType = #{dto.changeType}
+        </if>
+        <if test="dto.type != null and dto.type != ''">
+            and t.type = #{dto.type}
+        </if>
+        order by t.update_time desc
+    </select>
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/point/PointGoodMapper.xml b/src/main/resources/mapper/point/PointGoodMapper.xml
new file mode 100644
index 0000000..ca326e4
--- /dev/null
+++ b/src/main/resources/mapper/point/PointGoodMapper.xml
@@ -0,0 +1,26 @@
+<?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.mzl.flower.mapper.point.PointGoodMapper">
+    <select id="queryPage" resultType="com.mzl.flower.dto.response.point.PointGoodVO">
+        select * from t_point_goods t where t.deleted= 0
+        <if test="dto.name != null and dto.name != ''">
+            and t.name like concat('%', #{dto.name}, '%')
+        </if>
+        <if test="dto.status != null and dto.status != ''">
+            and t.status = #{dto.status}
+        </if>
+        order by t.update_time desc
+    </select>
+    <select id="queryList" resultType="com.mzl.flower.dto.response.point.PointGoodVO"
+            parameterType="com.mzl.flower.dto.request.point.PointGoodQueryDTO">
+        select * from t_point_goods t where t.deleted= 0
+        <if test="dto.name != null and dto.name != ''">
+            and t.name like concat('%', #{dto.name}, '%')
+        </if>
+        <if test="dto.status != null and dto.status != ''">
+            and t.status = #{dto.status}
+        </if>
+
+        order by t.update_time desc
+    </select>
+</mapper>
\ No newline at end of file
diff --git "a/src/main/\350\241\250\350\256\276\350\256\241-\344\272\214\346\234\237.xlsx" "b/src/main/\350\241\250\350\256\276\350\256\241-\344\272\214\346\234\237.xlsx"
index 57f66b2..7841603 100644
--- "a/src/main/\350\241\250\350\256\276\350\256\241-\344\272\214\346\234\237.xlsx"
+++ "b/src/main/\350\241\250\350\256\276\350\256\241-\344\272\214\346\234\237.xlsx"
Binary files differ

--
Gitblit v1.9.3