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