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